当前位置: 首页 > 图文教程 > 网络编程 > ASP > 关于客户端用ASP参生报表(高级篇)

ASP
分享一段代码show.asp?id=26变成show/?26的形式
多域名一网站时如果返回最原来的域名
[原创]完美解决ASP 不能更新。数据库或对象为只读。
5天学会asp
TSYS中生成静态页时溢出: ''CInt''
对象标记具有无效的 ''MSWC.MyInfo'' ProgID
[原创]随机增加网站点击的一个不错的方法
Microsoft JET Database Engine 错误 ''80004005'' 未指定的错误的完美解决方法
反SPAM新思路—换Z-BLOG的验证码!
七步倒┈→专用asp后门
asp下实现代码的“运行代码”“复制代码”“保存代码”功能源码
使用ASP实现网站的“目录树”管理的代码
ShowPage 显示“上一页 下一页”等信息的封装代码
[原创]站长感慨asp编程究竟何去何从
响应对象 错误 ''ASP 0185 : 80020003'' 缺少默认属性
[原创]asp下用实现模板加载的的几种方法总结
[原创]asp获取URL参数的几种方法分析总结
Access数据库中“所有记录中均未找到搜索关键字”的解决方法
ASP程序中输出Excel文件实例一则
ASP应用中如何限制同一表单被多次提交

关于客户端用ASP参生报表(高级篇)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 80 ::
收藏到网摘: n/a

  上回曾贴一篇较简单的用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="<