在ASP中运用Crystal Reports实现报表打印

时间:2022-05-19 05:49:42

在ASP中运用Crystal Reports实现报表打印

摘要:结合开发与应用实践,介绍了在ASP平台下调用Crystal Reports报表设计软件实现数据打印的原理和方法。

关键词:Internet信息服务器;水晶报表;应用范例;报表设计组件

中图分类号:TP309文献标识码:A文章编号:1009-3044(2008)05-10ppp-0c

1 前言

为进一步转变政府职能,推进政务公开,提高行政效能,更好地服务发展、服务基层、服务群众,江苏省新闻出版(版权)局通过建设行政服务中心,推进“一站式”服务的窗口,负责本局已进入政务大厅的61项行政许可、行政管理事项的“统一受理、统一办结、统一出证、统一告知”并提供相关政务咨询。在各事项中涉及大量回执、通知、单证、委托书、报表的打印、预览,特别是还有很多证件、报表牵扯到套打。如果在ASP中一行行写代码来实现,开发量将大大增加,开发周期也会大大加长。怎么办?通过调用Crystal Reports来实现吧。

2 简介

Crystal Reports(水晶报表)是加拿大Crystal Decisions公司出品的专业级报表分析与生成软件,它能够实现对数据的检索、分组、分析。与其他的报表创建和分析软件相比,Crystal Reports具有高稳定性、高可伸缩性以及应用平台广泛等杰出的优点。

Web报表解决方案的主要优势是免去了在终端用户计算机上安装软件的麻烦。使用此方式,Crystal Report Viewer通过Web服务器被自动发送到终端用户的Internet缓存中,并且可以显示用户想看的任何报表。

3 编程实例

下面我将用实例阐述水晶报表Web应用程序编程。

3.1 复制水晶报表安装目录下文件到虚拟目录

首先必须在Web服务器上成功安装了Crystal Reports,然后在IIS中创建一个应用程序,并且把它指向网络上的一个虚拟目录,假设为xzsp。然后,应当从crystal reports的安装路径中复制以下9个文件到该虚拟目录下的相应子目录下(比如xzsp\rpt目录下)。假设你的crystal reports安装在默认路径下,那么这些文件会在C:\Program Files\Crystal Decisions\Crystal Reports 9\Samples\chs\Code\Web\Report Designer Component中。

3.2 从aspxmps8代码包中提取文件

从/communityCS/FilesAndUpdates/aspxmps8.exe.asp下载aspxmps8.exe。该程序中包含了许多示例代码,我们需要的是其中两个文件:AlwaysRequiredSteps.asp和MoreRequiredSteps.asp,把这两个文件也复制到IIS应用程序的虚拟目录xzsp下。

好了,我们已经坐享其成地挖了不少现成的代码,现在要自己编写一些代码了。在虚拟目录中创建一个名为rptcrl.asp的文件, 代码如下:

3.3 编写嵌入RDC(水晶报表设计组件)的配置文件

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>

<% response.expires=0 %>

<!--#include file="../inc/dbconn.asp"-->

<html>

<head>

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

<title>报表显示</title>

</head>

<%

reportname=request.QueryString("rpt")

ccom=request.querystring("com")

csel=request.QueryString("sel")

server.scripttimeout=180

%>

<!--#include file="AlwaysRequiredSteps.asp"-->

<%

session("orpt").reportcomments=ccom

session("orpt").recordselectionformula=csel

%>

<!--#include file="morerequiredsteps.asp"-->

<!--#include file="smartvieweractivex.asp"-->

<body>

</body>

</html>

在程序中包含了3个asp文件:AlwaysRequiredSteps.asp、MoreRequiredSteps.asp和SmartViewerActivex.asp,它们的作用已在前面说明了,这里不再赘述,想深入理解可以打开这些文件,文件中会有相应地注释。

3.4 编写报表调用主文件

<html>

<head>

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

<title>业务管理(出证管理)</title>

</head>

<body>

<!--#include file="menu.asp"-->

<%

pageno=request.querystring("page")

ID=request.querystring("ID")

'set rs=server.createobject("adodb.recordset")

'以下为从相应视图中抽取指定记录

sql="Select * From proc_bk_lxxzyz_view Where ID="&ID&" Order By RecoTime Desc"

rs.open sql,conn,3,3

'以下为指定记录打印序号保存

seltrans="{proc_bk_lxxzyz_view.ID}="&id

rs.close()

set rs=nothing

%>

<table class="SxTable1" cellspacing="1" cellpadding="2" align="center">

<tr class="SxTd2">

<td align="center">业务管理(出证管理)</td>

</tr>

<tr class="SxTd1">

<td> <a href="http://busimanage.asp?ProcID=<%=ProcID%>&page=<%=pageno%>">返回</a></td>

</tr>

<tr class="SxTd3"><td>1.政务大厅出证

<a href="http://../../rpt/rptcrl.asp?rpt=lxxzyz1.rpt&sel=<%=seltrans%>" target="_blank"><u>连续性内部资料出版物准印证预览一</u></a>(21.5*28.7) <a href="http://../../rpt/rptcrl.asp?rpt=lxxzyz2.rpt&sel=<%=seltrans%>" target="_blank"><u>连续性内部资料出版物准印证预览二</u></a>(21.5*28.7)</td>

</tr>

<tr>

<td class="SxTd4"></td>

</tr>

</table>

</body>

</html>

注意这段代码:<a href="http://../../rpt/rptcrl.asp?rpt=lxxzyz1.rpt&sel=<%=seltrans%>" target="_blank">,rpt=lxxzyz1.rpt是一个连续性内部资料出版物准印证报表文件,查询条件放在了seltrans变量中。显示效果见图1、图2。

图1

图2

4 结束语

水晶报表几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。如果文字和数字确实不够充分,则用地理地图和图形进行形象的信息交流,比如这样的饼图(见图3):

图3

使用Web界面,程序员不需要在客户端安装Crystal Reports软件。通过将水晶报表的报表处理功能整合到自己的数据库应用程序中,应用程序和 Web 开发人员可以节省开发时间并满足用户的需求。而且,程序员可以把多个简单的Web页面集成在一起,创建一个可以显示不同类型水晶报表的普通报表界面。

这里着重介绍了在ASP中如何运用Crystal Reports。如何在Crystal Reports中创建各类报表那又是另外一项需要深入学习的技术了。

参考文献:

[1]Mattew Strebe,Charles Perkins.Internet Informatin Server Learning Giude[M].北京:电子工业出版社,1999(7):120-135.

[2]Cate McCoy,Gord Maric.水晶报表Crystal Reports 9从入门到精通[M].北京:电子工业出版社,2003(6):434-436.

[3]张景涛,ASP程序设计及应用[M].中国水电水利出版社,2005(3):178-181.

收稿日期:2007-12-25

作者简介:马洁明(1973-),女,江苏南京人,电子信息工程专业工程师,长期从事软件开发、系统维护及江苏省录音录像制品、电子媒体非卖品审读工作,精通VFP、VB、JavaScript,熟悉SQL Server的各种配置、优化,精通Crystal Reports报表设计技术。

上一篇:人力资源管理系统中数据抽取模块的实现 下一篇:基于微软Hyper-V的虚拟化技术