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

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

關于客戶端用ASP參生報表(高級篇)

2019-11-18 20:30:49
字體:
來源:轉載
供稿:網友
上回曾貼一篇較簡單的用asp+RDS客戶端參生報表
此回貼一篇較復雜的用ASP+RDS+組件客戶端參生報表
錯誤說明:(若提示ActiveX 元件無法參生 RDS.DataSpace)
IE需設置安全選項
操作:菜單工具->INTERNET選項->安全性->自定義
設置:起始但ActiveX不標示為安全->開啟
原理說明:
客戶端直接用RDS產生RecordSet安全性不夠,使用了
middle-tier Automation components 后可大大增加安全性!
請看下文:
編寫注冊元件:
ActiveX Dll PRoject:iacrdsobj.vbp
Class Module name:RsOp

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
Dim strConnect As String
strConnect = "Provider=SQLOLEDB;Server=server name ;uid=sa;pwd=; Database=" & strDB & ";"
cn.Open strConnect
'These are not listed in the typelib.
rs.CursorLocation = adUseClient
'Using the Unspecified parameters, an ADO/R recordset is returned.
rs.Open strSQL, cn, adOpenUnspecified, adLockUnspecified, adCmdUnspecified
Set ReturnRs = rs
Exit Function
ehGetRecordset:
Err.Raise Err.Number, Err.Source, Err.Description
End Function
然后 MAKE iacrdsobj.dll
若有錯,請設置VB菜單PROJECT-REFREENCE
增加 MicroSoft ActiveX Data Object 2.6 Library(當然數字要高一點)

然后 注冊iacrdsobj.dll到數據庫server(為安全,最好更改數據庫uid最好不為sa)!
好,接下來看asp
long1.asp
<html>
<head>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<title>client use rds produce Excel report</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">
client use rds produce excel report
</font>
</td>
</tr>
</table>
</div>
<form action="long1.asp" method="post" name="myform">
<DIV align=left>
<input type="button" value="Query Data" name="query" language="vbscript" onclick="fun_excel(1)" style="HEIGHT: 32px; WIDTH: 90px">
<input type="button" value="Clear Data" name="Clear" language="vbscript" onclick="fun_excel(2)" style="HEIGHT: 32px; WIDTH: 90px">
<input type="button" value="Excel Report" name="report" language="vbscript" onclick="fun_excel(3)" style="HEIGHT: 32px; WIDTH: 90px">
</div>
<DIV id="adddata"></div>
</form>
</body>
</html>
<script language="vbscript">
sub fun_excel(t)
Dim rds,rs,df,ServerStr
dim strSQL,StrRs
Dim xlApp, xlBook, xlSheet1
ServerStr="http://Sql Server Name" 'the sql server name of register iacRDSObj.dll
'use rds to produce client recordset
set rds = CreateObject("RDS.DataSpace",ServerStr)
'eg:set rds = CreateObject("RDS.DataSpace","http://iac_fa") 'iac_fa is the LAN sql server name
'eg:set rds = CreateObject("RDS.DataSpace","http://10.150.254.102") '10.150.254.102 is the LAN sql server IP Address
'the register com
Set df = rds.CreateObject("iacRDSObj.rsop", ServerStr)
'the query string of sql
strSQL = "Select top 8 * from jobs order by job_id"
'the recordset
Set rs = df.ReturnRs("pubs",strSQL)
if t=1 then
if not rs.eof then
StrRs="<table border=1><tr><td>job_id</td><td>job_desc</td><td>max_lvl</td><td>min_lvl</td></tr><tr><td>"+ rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ") +"</td></tr></table>"
adddata.innerHTML=StrRs
StrRs=""
else
msgbox "No data in the table!"
end if
elseif t=2 then
StrRs=""
adddata.innerHTML=StrRs
elseif t=3 then
Set xlApp = CreateObject("EXCEL.application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet1 = xlBook.Worksheets(1)
xlSheet1.cells(1,1).value ="the job table "
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
'adapt to office 97 and 2000
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

'adapt to office 2000 only
'xlSheet1.Range("A3").CopyFromRecordset rs
'xlSheet1.Application.Visible = True
end if
rs.close
set rs=nothing
end sub
</script>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舞钢市| 吴川市| 始兴县| 盈江县| 綦江县| 习水县| 秦皇岛市| 武夷山市| 章丘市| 高唐县| 乐陵市| 游戏| 县级市| 涞源县| 屏边| 江油市| 江源县| 天等县| 会昌县| 石屏县| 杭锦旗| 郓城县| 通城县| 四会市| 华坪县| 横山县| 望都县| 静宁县| 昌吉市| 宿州市| 舞钢市| 牙克石市| 富平县| 延寿县| 启东市| 定州市| 安仁县| 寿阳县| 朝阳市| 南昌县| 南昌市|