一、前言
ASP在电子商务上应用广泛,报表的处理又有一些麻烦。本文介绍了在ASP中利用本人写的Report Server Page脚本解释器实现报表的显示、打印。
二、准备工作
(1)安装Visual Reprort Design软件
Visual Report Design是本人写的一个免费的报表设计器,程序的发行只需要安装一个控件即可。
(2)设计报表
通过Visual Report Design 的可视化界面可以生成报表的脚本:mxb.rsp。
三、实现报表的打印、显示
下面是调用的文档:
| 以下为引用的内容: 
 printmx.asp <%Option Explicit%>
 <%
 dim ReportName,ret
 dim ReportAtl
 dim name
 set ReportAtl=Session("ReportAtl")
 ReportName=Server.MapPath("mxb.rsp")
 ret=reportatl.XMLToVBS(ReportName)
 if ret=-1 then
 response.write reportatl.ErrorMsg
 response.end
 end if
   ReportName=Server.MapPath("mxb.vbs") ret=reportatl.DoScript(ReportName)
 if ret=-1 then
 response.write reportatl.ErrorMsg
 set ReportAtl=nothing
 response.end
 end if
 set ReportAtl=nothing
 %>
 <html>
 <OBJECT id=reportatl classid="clsid:D3F064E5-F4C0-4C52-9E7F-263D96B7EA11" codebase="Report.cab#version=1,0,0,1">
 </OBJECT>
 <script language=vbscript>
 dim ret
 ret=reportatl.DoPrintReport("mxb.zcg")
 if ret=-1 then
 msgbox reportatl.ErrorMsg
 end if
 </script>
 </html>
 用Visual Report Design 产生的报表脚本mxb.rsp:
 <?xml version="1.0" encoding="GB2312" ?>
 <!DOCTYPE report SYSTEM "print_report.dtd" >
 <report name="报表">
 <report_script>
 dim rs,con,sql,lsh
 dim temp
 set con =CreateObject("ADODB.Connection")
 con.ConnectionString = "DBQ=c:\report\demo\asp\report.mdb;DRIVER={Microsoft Access Driver (*.mdb)};"
 con.open
 Set rs =CreateObject("ADODB.Recordset")
 sql="SELECT * FROM cj,student where cj.id=student.id "
 rs.open sql,con,1,3
 </report_script>
 <report_head height="12">
 <text name="vfptext" top="4" left="76" width="26" height="5" font_name="宋体" font_size="14" font_weight="700" font_italic="0" font_underline="0" >
 成绩明细表
 </text>
 </report_head>
 <page_head height="6">
 <line name="vfpline" top="0" left="9" width="178" height="0" weight="131072">
 </line>
 <line name="vfpline" top="6" left="9" width="178" height="0" weight="131072">
 </line>
 <text name="vfptext" top="2" left="18" width="6" height="3" font_name="宋体" font_size="9" font_weight="700" font_italic="0" font_underline="0" >
 姓名
 </text>
 <text name="vfptext" top="2" left="46" width="6" height="3" font_name="宋体" font_size="9" font_weight="700" font_italic="0" font_underline="0" >
 语文
 </text>
 <text name="vfptext" top="2" left="72" width="6" height="3" font_name="宋体" font_size="9" font_weight="700" font_italic="0" font_underline="0" >
 数学
 </text>
 <text name="vfptext" top="2" left="99" width="6" height="3" font_name="宋体" font_size="9" font_weight="700" font_italic="0" font_underline="0" >
 英语
 </text>
 <text name="vfptext" top="2" left="162" width="6" height="3" font_name="宋体" font_size="9" font_weight="700" font_italic="0" font_underline="0" >
 合计
 </text>
 <text name="vfptext" top="2" left="130" width="6" height="3" font_name="宋体" font_size="9" font_weight="700" font_italic="0" font_underline="0" >
 平均
 </text>
 </page_head>
 <page_body height="8">
 <text name="vfptext" top="2" left="15" width="25" height="4" font_name="宋体" font_size="9" font_weight="100" font_italic="0" font_underline="0" >
 <report_script>
 Report.Write cstr(rs("xm"))
 </report_script>
 </text>
 <text name="vfptext" top="2" left="45" width="18" height="4" font_name="宋体" font_size="9" font_weight="100" font_italic="0" font_underline="0" >
 <report_script>
 Report.Write cstr(rs("yw"))
 </report_script>
 </text>
 <text name="vfptext" top="2" left="71" width="18" height="4" font_name="宋体" font_size="9" font_weight="100" font_italic="0" font_underline="0" >
 <report_script>
 Report.Write cstr(rs("sx"))
 </report_script>
 </text>
 <text name="vfptext" top="2" left="98" width="18" height="4" font_name="宋体" font_size="9" font_weight="100" font_italic="0" font_underline="0" >
 <report_script>
 Report.Write cstr(rs("yy"))
 </report_script>
 </text>
 <text name="vfptext" top="2" left="130" width="18" height="4" font_name="宋体" font_size="9" font_weight="100" font_italic="0" font_underline="0" >
 <report_script>
 Report.Write cstr((rs("yw")+rs("sx")+rs("yy"))/3)
 </report_script>
 </text>
 <text name="vfptext" top="2" left="162" width="18" height="4" font_name="宋体" font_size="9" font_weight="100" font_italic="0" font_underline="0" >
 <report_script>
 Report.Write cstr(rs("yw")+rs("sx")+rs("yy"))
 </report_script> </text>
 </page_body>
 <page_foot height="7">
 <text name="vfptext" top="2" left="12" width="13" height="3" font_name="宋体" font_size="9" font_weight="100" font_italic="0" font_underline="0" >
 <report_script>
 report.write "打印日期:"+formatdatetime(date(),1)
 </report_script>
 </text>
 <text name="vfptext" top="2" left="137" width="50" height="3" font_name="宋体" font_size="9" font_weight="100" font_italic="0" font_underline="0" >
 共%Pages%页,第%Page%页
 </text>
 <line name="vfpline" top="0" left="8" width="178" height="0" weight="131072">
 </line>
 </page_foot>
 <report_script>
 do while not rs.eof
 page_body()
 rs.movenext
 loop
 rs.close
 set rs=nothing
 con.close
 set con=nothing
 </report_script>
 </report>
 
 | 
. 
TAG: 
XML应用,ASP,报表,显示,打印