|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。web|打印|打印报表|办理<%@LANGUAGE="VBSCRIPT"%>
<%
==================================
从ADORecordset间接天生报表
==================================
观点:
这个使用被计划成演示如何从ADORecordset天生报表。我们起首创建ADOConnection和
Recordset工具,然后用SQL语句从数据库中天生一个纪录集。然后我们创建一个Crystal
Reports工具,并把这个这个工具指向ADOrecordset。最初我们将CrystalReports
SmartViewer送到客户端显现这个报表。
第一步:创建ADOConnectionandRecordset
一个ADO的数据库毗连就是经由过程你已存在的ODBC数据源(DSN)从象ASP如许的使用中来会见
数据的毗连。为了到达这个例子的目标,我们将利用到用一个叫做"XtremeSampleData"的
连到Access数据库Xtreme.mdb体系DSN
创建ADO数据库毗连:
SetoConn=Server.CreateObject("ADODB.Connection")
这里创建叫做"oConn"的ADOconnection,我们将用这个ADOconnection工具毗连到上述的DSN
用ADOconnection必需先要翻开它:
oConn.Open("XtremeSampleDatabase")
这里翻开我们的ODBC的数据源,这个数据源指向Access数据库Xtreme.mdb
如今我们必需创建一个RecordSet工具:
setsession("oRs")=Server.CreateObject("ADODB.Recordset")
在下面我们创建了一个session("oRs").这个session中寄存一个RecordSet工具
将要包括用SQL语句前往的数据
界说和天生recordset:
session("oRs").ActiveConnection=oConn
界说这个recordset将要利用的Connection工具
session("oRs").Open"SELECT[ProductID],[ProductName]FROMProduct"
用SQL语句从Xtreme.mdb库的"Product"表中掏出两个字段
===================================================================================
创建CrystalReports工具
===================================================================================
你大概注重到,CrystalReports工具被设为session,这是由于已需求就会被一个叫做
"rptserver.asp"的ASP处置,为了让rptserver.asp能十分简单地会见CrystalReport工具,
我们把这些工具都设为session。如许任何ASP页都运转在这个session中,都可以间接会见这些工具
reportname="ADORecordset.rpt"
这里创建一个字符串变量,指向CrystalReport文件(.rptfile),再用这段代码的时分
换成你的CrystalReport文件名。
创建APPLICATION工具
IfNotIsObject(session("oApp"))Then
Setsession("oApp")=Server.CreateObject("CrystalRuntime.Application")
EndIf
这个"if/endif"布局用来每一个session只创建一次CrystalReportsApplication工具o
创建application工具-session("oApp"),将CrystalReportDesignComponent
automationserver(craxdrt.dll)载进内存。
我们创建session变量是为了再aspsession过程当中都利用它们.如许能够削减将craxdrt.dll
载进和卸载的体系开支。在一个session中一旦创建了一个application工具我们就能够不用
重修工具运转更多的报表。
创建REPORT工具
这个REPORT工具被Application的OpenReport办法创建
Path=Request.ServerVariables("PATH_TRANSLATED")
While(Right(Path,1)""AndLen(Path)0)
iLen=Len(Path)-1
Path=Left(Path,iLen)
Wend
response.Writepath
这个"While/Wend"轮回被用来将以后文件从假造路径(eg:http://Domain/Dir)转换成Crystal
Reportfile的物理路径(eg:C:)
翻开REPORT(先扫除之前的任何工具)
IfIsObject(session("oRpt"))then
Setsession("oRpt")=nothing
Endif
Onerrorresumenext
Setsession("oRpt")=session("oApp").OpenReport(path&reportname,1)
这里用"PATH"和"reportname"变量盘算出CrystalReportfile的物理路径,并翻开它。
IfErr.Number0Then
Response.Write"ErrorOccurredcreatingReportObject:"&Err.Description
SetSession("oRpt")=nothing
SetSession("oApp")=nothing
Session.Abandon
Response.End
EndIf
这个Onerroresumenext块反省在创建report工具时呈现的任何毛病,我们正明白的捕捉任何
毛病假如视图凌驾允许协定划定的最年夜并发用户数。
注重,我们其实不只创建一次report工具。这是由于有了ASPsession你能够处置更多的凌驾一个报表
rptserver.asp将仅仅处置一个叫session("oRpt")的report工具。因而,你假如但愿处置多个报表
的话,就要创建一个新的session("oRpt")工具。
session("oRpt").MorePrintEngineErrorMessages=False
session("oRpt").EnableParameterPrompting=False
这里不同意毛病呈报机制,包含CrystalReportDesignComponentautomationserver(craxdrt.dll)
内建的毛病呈报,这是由于两个缘故原由:
1.打印引擎是在WebServer上实行的,以是任何毛病信息都将被显现在服务端,假如在服务端呈报堕落了,
打印引擎将中断运作,你的使用将被“挂起”
2.rptserver.asp已有一些毛病处置逻辑在内里了,能够捕捉任何非致命毛病,并显现在客户端。
**主要**即便我们克制了服务端引擎的毛病处置,可是致命毛病仍是会在WebServer服务端被捕捉,并
显现堕落误提醒对话框。以是我们倡议,你在"WorldWideWebPublishing"service(IISservice)设置
"AllowServicetoInteractwithDesktop"选项。如许假如你的ASP使用逝世了,你将能看到毛病提醒。
========================================================================</p>楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。 |
|