国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP網站遠程客戶實現EXCEL打印功能

2019-11-18 20:14:36
字體:
來源:轉載
供稿:網友
  在進行asp網站開發時,有時需在客戶端調用MSSQL數據庫的數據進行打印,若調用數據量小,可以通過在客戶端運用FileSystemObject生成文件對象的方法實現打印,這里不再贅述。若需調用大量數據,可在客戶端腳本中實例化RDS.DataSpace(Remote Data Service)對象,并采用遠程提供程序通過ASP網站訪問MSSQL數據庫(設置成只能通過RDS Default Handler或自定義商業對象才能訪問數據庫,可保證數據庫的安全),再在客戶端實例化Excel.application對象,把數據集中的數據寫入EXCEL中,再進行保存或打印。代碼如下:

<html>

<head>

<META content="text/html; charset=gb2312" http-equiv=Content-Type>

<title>客戶端電子表格打印</title>

</head>

<body bgColor=skyblue topMargin=5 leftMargin="20" oncontextmenu="return false" rightMargin=0 bottomMargin="0">

<div align="center"><center>

<table border="1" bgcolor="#ffe4b5" style="HEIGHT: 1px; TOP: 0px" bordercolor="#0000ff">

<tr>

<td align="middle" bgcolor="#ffffff" bordercolor="#000080">

<font color="#000080" size="3">

客戶端電子表格打印

</font>

</td>

</tr>

</table>

</div>

<form name="myform">

<DIV align=left>

<input type="button" value="Excel Report" name="report" language="vbscript" onclick="fun_excel()" style="HEIGHT: 32px; WIDTH: 90px">

</div>

</form>

</body>

</html>

<script language="vbscript">

sub fun_excel()

Dim rds,rs,df

dim strCn,strSQL,StrRs

Dim xlApp, xlBook, xlSheet1

set rds = CreateObject("RDS.DataSpace")

Set df = rds.CreateObject("RDSServer.DataFactory","http://192.168.0.1") '192.168.0.1 為WEB服務器IP地址

strcn="PRovider=ms remote;remote server=http://192.168.0.1;handler=msdfmap.handler;data source=pubsdatabase;" '192.168.0.1 為WEB服務器IP地址

strsql= "getalljobs"

Set rs = df.Query(strCn, strSQL)


Set xlApp = CreateObject("EXCEL.APPLICATION") '注意不是:Server.CreateObject("EXCEL.APPLICATION")

Set xlBook = xlApp.Workbooks.Add

Set xlSheet1 = xlBook.Worksheets(1)

xlSheet1.cells(1,1).value ="職務表"

xlSheet1.range("A1:D1").merge

xlSheet1.cells(2,1).value = "job_id"

xlSheet1.cells(2,2).value = "job_desc"

xlSheet1.cells(2,3).value = "max_lvl"

xlSheet1.cells(2,4).value = "min_lvl"

cnt =3

do while not rs.eof

xlSheet1.cells(cnt,1).value = rs("job_id")

xlSheet1.cells(cnt,2).value = rs("job_desc")

xlSheet1.cells(cnt,3).value = rs("max_lvl")

xlSheet1.cells(cnt,4).value = rs("min_lvl")

rs.movenext

cnt = cint(cnt) + 1

loop

xlSheet1.Application.Visible = True

end sub

</script>

  也可以實例化RDS DataControl,只需把以上部分代碼進行修改:

set rds = CreateObject("RDS.DataSpace")

Set df = rds.CreateObject("RDSServer.DataFactory","http://192.168.0.1") '192.168.0.1 為WEB服務器IP地址

strcn="provider=ms remote;remote server=http://192.168.0.1;handler=msdfmap.handler;data source=pubsdatabase;" '192.168.0.1 為WEB服務器IP地址

strsql= "getalljobs"

Set rs = df.Query(strCn, strSQL)

  修改為:

set DC = createobject("RDS.DataControl")

dc.ExecuteOptions =1 '設置成同步執行,可以簡化下步代碼

dc.FetchOptions = 1

With dc

.Server = "http://192.168.0.1"

.Handler = "MSDFMAP.Handler"

.Connect = "Data Source=pubsdatabase;"

.Sql = "getalljobs"

.Refresh

End With

set rs= dc.Recordset

  修改文件MSDFMAP.INI(若在WIN98,C:/windows/msdfmap.ini;若在WIN2000,D:/winnt/msdfmap.ini;若在WIN2000 SERVER,D:/winnts/msdfmap.ini)。

[sql getalljobs]

Sql="SELECT * FROM jobs"


[connect pubsDatabase]

access=Readonly

Connect="provider=sqloledb;data source=sql server;initial catalog=pubs;UID=userid;PWD=passWord"

  打開注冊表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/W3SVC/Parameters/ADCLaunch 若無 RDSServer.Datafactory,請添加。本例使用RDS Default Handler訪問數據庫,若不通過RDS Handler訪問數據庫,修改注冊表HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/DataFactory/ HandlerInfo 將HandlerRequired=1 設置成HandlerRequired =0。請注意,若不通過RDS Handler或自定義商業對象訪問數據庫,將對數據庫帶來安全隱患,所以作者極力推薦采用只能通過RDS Handler或自定義商業對象才能訪問數據庫的方式。

  下面用VB編寫一個自定義商業對象,代碼如下:

'編寫ActiveX DLL,名稱:rsget.dll,包含類rsreturn,方法returnrs

Public Function ReturnRs(strDB As Variant, strSQL As Variant) As ADODB.Recordset

'Returns an ADODB recordset.

On Error GoTo ehGetRecordset

Dim cn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Select Case strDB

Case "ydjjspdatabase"

strDB = "ydjjsp"

Case "pubsdatabase"

strDB = "pubs"

End Select


If strSQL = "getallbuy" Then

strSQL = "select * from buyuser"

GoTo nextstep

End If

If Left(strSQL, InStr(strSQL, "(") - 1) = "getpubsbyid" Then

If InStr(strSQL, ",") <= 0 Then

Dim str As String

str = Mid(strSQL, InStr(strSQL, "(") + 2, InStr(strSQL, ")") - InStr(strSQL, "(") - 3)

strSQL = "select * from jobs where job_id='" & str & "'"

Else

Dim strstart, strend As String

strstart = Mid(strSQL, InStr(strSQL, "(") + 2, InStr(strSQL, ",") - InStr(strSQL, "(") - 3)

strend = Mid(strSQL, InStr(strSQL, ",") + 2, InStr(strSQL, ")") - InStr(strSQL, ",") - 3)

strSQL = "select * from jobs where job_id>='" & strstart & "' and job_id<='" & strend & "'"

End If

End If

nextstep:

Dim strConnect As String

strConnect = "Provider=SQLOLEDB;Server=ddk;uid=ydj;pwd=ydj; Database=" & strDB & ";"

cn.Open strConnect

rs.CursorLocation = adUseClient

rs.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText

Set ReturnRs = rs

Exit Function

ehGetRecordset:

Err.Raise Err.Number, Err.Source, Err.Description

End Function

  把rsget.dll復制到C:/WINDOWS或D:/WINNT,開始/運行,輸入Regsvr32.exe c:/windows/rsget.dll或Regsvr32.exe d:/winnt/rsget.dll,按確定按鈕,注冊成WEB服務器組件,并在注冊表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/W3SVC/Parameters/ADCLaunch 添加rsget.rsreturn。

  若使用自定義商業對象,修改上面的ASP文件代碼:

set rds = CreateObject("RDS.DataSpace")

Set df = rds.CreateObject("RDSServer.DataFactory","http://192.168.0.1") '192.168.0.1 為WEB服務器IP地址

strcn="provider=ms remote;remote server=http://192.168.0.1;handler=msdfmap.handler;data source=pubsdatabase;" '192.168.0.1 為WEB服務器IP地址

strsql= "getalljobs"

Set rs = df.Query(strCn, strSQL)

  改為:

set rds = CreateObject("RDS.DataSpace")


Set df = rds.CreateObject("rsget.rsreturn","http://192.168.0.1")

set rs=df.returnrs("pubsdatabase","getpubsbyid('2','10')")

  另外在瀏覽器端需做如下配置:

  打開控制面板->INTERNET選項->安全性->自定義級別-> 對沒有標記為安全的ActiveX控件進行初始化和腳本運行->開啟


 

 

  作者姓名:游大軍

  聯系地址:遼寧省凌源鋼鐵集團有限責任公司生產安全部

  郵編:122504

  email地址:ydj1922@sohu.com

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 红河县| 察隅县| 抚远县| 突泉县| 阳西县| 鄂托克前旗| 曲麻莱县| 渝中区| 盐津县| 张家口市| 凉山| 望江县| 萨迦县| 克拉玛依市| 绥宁县| 肥东县| 建宁县| 柳林县| 焦作市| 堆龙德庆县| 香格里拉县| 三门峡市| 武鸣县| 南漳县| 内江市| 民和| 普兰县| 南宫市| 四子王旗| 霍城县| 丘北县| 洛扎县| 公安县| 甘洛县| 望奎县| 皮山县| 唐河县| 商洛市| 宁晋县| 和田县| 通山县|