摘要:結合開發與應用實踐,介紹了在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代碼包中提取文件
從http://support.businessobjects.com/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=\"busimanage.asp?ProcID=<%=ProcID%>page=<%=pageno%>\">返回</a></td>
</tr>
<tr class=\"SxTd3\"><td>1.政務大廳出證
<a href=\"../../rpt/rptcrl.asp?rpt=lxxzyz1.rptsel=<%=seltrans%>\" target=\"_blank\"><u>連續性內部資料出版物準印證預覽一</u></a>(21.5*28.7) <a href=\"../../rpt/rptcrl.asp?rpt=lxxzyz2.rptsel=<%=seltrans%>\" target=\"_blank\"><u>連續性內部資料出版物準印證預覽二</u></a>(21.5*28.7)</td>
</tr>
<tr>
<td class=\"SxTd4\"></td>
</tr>
</table>
</body>
</html>
注意這段代碼:<a href=\"../../rpt/rptcrl.asp?rpt=lxxzyz1.rptsel=<%=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報表設計技術。