明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

在 Visual Studio .NET中使用Crystal Report(上) cashcho(翻譯)

[摘要]在 Visual Studio .NET中使用Crystal Report(上) from www.aspfree.comtranslated by cash(天下第七)cashcao@msn.co...
Visual Studio .NET中使用Crystal Report()



from www.aspfree.com
translated by cash(天下第七)
cashcao@msn.com



在我們開始這個關于如何在VS.NET上使用Crystal Reports的小小的研究之前,我和我的朋友都對如何把它應用于我們的Web程序中感到非常的疑惑。一個星期以后,經(jīng)過一些努力(在網(wǎng)上查找“how-to”文檔),我們掌握了將簡單的報表加入asp.net程序中的一些小小技巧。



本文包含將Crystal Report 應用于您的.NET Web 應用程序所需方法的一些匯總,通過這些循序漸進地演示,你將遇到的錯誤(正如我們曾經(jīng)所遇到過的)將被減少到微乎其微。為了更有效地利用本文,讀者應具備ASP.NET中數(shù)據(jù)庫連接的基本知識,并且正在使用VS.NET開發(fā)。請注意我們僅用beta2版對下列代碼進行了測試。



本文包括以下內容:

(1)介紹;

(2)牛刀小試-在.aspx頁面中使用一個已存在的Crystal Report文件;

(3)Crystal Report演示-使用Pull Model;

(4)Crystal Report 演示-使用Push Model;

(5)將Report 文件輸出到其它的格式中。



有各種各樣的Crystal Report,這里我們用到的是專為.NET設計的"Crystal Report for Visual Studio .NET"。它是一個rich programming model,以此可以操作它的properties和methods。如果你用VS.NET開發(fā)你的程序,你就不需要安裝任何額外的軟件,因為它已經(jīng)包括在VS.NET中了。



優(yōu)勢
使用Crystal Report for Visual Studio .NET的主要好處有:

--快速開發(fā)報表
--能與相關聯(lián)圖表一起擴展為復雜的報表
--可以與這個web form中的其它控件相互作用
--能夠將其輸出成常用的.pdf,.doc,.xls,.html,.rtf等格式



總體結構

展示這個具有兩層結構的Crystal Report需要:



客戶端:

客戶端僅需使用瀏覽器即可得到裝載于.aspx頁面中的報表。



服務器端:



- Crystal Report Engine (CREngine.dll)

與其它任務(比如將數(shù)據(jù)與報表文件合并、將數(shù)據(jù)輸出為不同的格式等)一起,Crystal Report Engine 可以將你的Crystal Report轉為傳到.aspx頁中的簡潔明了的HTML.



- Crystal Report Designer (CRDesigner.dll)

使用Crystal Report Designer可以從頭開始制作報表,可以設計標題、插入數(shù)據(jù)、公式、表格、次級報告等。



- The .rpt Report file

將一份報表應用到你的Web應用程序中的第一步是使用Crystal Report Designer創(chuàng)建報表。在你的電腦里已經(jīng)有了一些現(xiàn)成的樣本,你現(xiàn)在就可以用它。



- The Data Source

.rpt文件獲取數(shù)據(jù)的方式取決于你所選用的方法。你可以選擇制作Crystal Report以獲取數(shù)據(jù)而無須手工寫任何代碼,也可以選擇綁定你的dataset并將其傳入報表文件。稍后我們將看到不同的應用。



- Crystal Report Viewer web form Control (CRWebFormViewer.dll)

Crystal Report Viewer是一個能夠插入.aspx頁中的web form control。它可以理解為一個包含報表的容器。



注意:在復雜的實現(xiàn)過程中,報表服務器和網(wǎng)絡服務器可以位于不同的服務器上,在這種情況下,網(wǎng)絡服務器將向報表服務器提出要求。Crystal Report將作為一項web service被執(zhí)行。

執(zhí)行模式



執(zhí)行以下任一種方法均可獲取Crystal Report數(shù)據(jù)。



Pull Model(拉模型)

在拉模型中,驅動程序將連接到數(shù)據(jù)庫并根據(jù)需要將數(shù)據(jù)“拉”進來。使用這種模型時,與數(shù)據(jù)庫的連接和為了獲取數(shù)據(jù)而執(zhí)行的 SQL 命令都同時由 Crystal Reports 本身處理,不需要開發(fā)人員編寫代碼。如果在運行時無須編寫任何特殊代碼,則使用拉模型。

Push Model(推模型)



相反,推模型需要開發(fā)人員編寫代碼以連接到數(shù)據(jù)庫,執(zhí)行 SQL 命令以創(chuàng)建與報表中的字段匹配的記錄集或數(shù)據(jù)集,并且將該對象傳遞給報表。該方法使您可以將連接共享置入應用程序中,并在 Crystal Reports 收到數(shù)據(jù)之前先將數(shù)據(jù)篩選出來。



報表類型

除了獨立于方案的報表外,Crystal Report Designer還可裝載包含于方案之中的報表。



- Strongly-typed Report :

當在方案中加入一個報表時,該報表就成為一個Strongly-typed Report。在這種情況下,你可以直接創(chuàng)建報表實例(可以減少若干代碼),可以將其隱藏。當然你可以點擊Solution Explorer中的”show all files”來顯示它。



- Un-Typed Report :

不包含在方案中的報表即Un-Typed Report。在這種情況下,必須創(chuàng)建一個Crystal Report Engine的 'Report Document'對象并將報表手工裝載進去。



另外你還應該知道的其它事項



盡管Crystal Report Viewer控件內置了zooming、page navigation等選項,但是它并沒有內置的打印選項。你必須使用瀏覽器的打印選項才可以。



Crystal Report for Visual Studio .NET未注冊版本只有前30項功能可用。在此之后的save option將不能使用。為了使用全部的功能,你不得不為之付費。



 缺省安裝只只提供了五位用戶的許可證,若要支持更多的使用者,必須向www.crystaldecisions.com購買額外的許可證。



牛刀小試-在.aspx頁中使用一個已存在的Crystal Report文件



現(xiàn)在讓我們看看如何將一個Crystal Report文件應用于你的web form。



(1) 從tool box中拖出一個"Crystal Report Viewer"放到你的.aspx頁面上。









(2)打開這個control的屬性窗口。

(3)在"Data Binding"屬性上點擊[...]彈出data binding窗口。

(4) 從左邊選擇"Report Source"。

(5)選擇"Custom Binding Expression",在下邊的表單中輸入以下語句:

"C:\Program Files\Microsoft Visual Studio.NET\Crystal Reports\Samples\Reports\General Business\World Sales Report.rpt"

記得要包括引號,點OK。









注意:這個‘World Sales Report.rpt’文件是做為VS.NET的一部分被安裝的。如果你指定了一個不同的路徑安裝VS.NET,請自行修改。



(譯者注:C#用戶請輸入以下字符串:"C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt")



經(jīng)過短暫時間的加載后,你將會看到一個簡單的預覽 。



上面的步驟實際上在你的.aspx頁面上插入了如下代碼:

<%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web" %>

和在<form>段里的

<CR:CrystalReportViewer

id="CrystalReportViewer1"

runat="server"

Width="350px" Height="50px"

ReportSource='<%# "C:\Program Files\Microsoft Visual Studio.NET\Crystal Reports\Samples\Reports\General Business\World Sales Report.rpt" %>'>

</CR:CrystalReportViewer>



(6) 調用DataBind方法,在Code Behind文件中編輯Page Load Event



Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

DataBind()

End Sub



(7). 保存,生成并運行。現(xiàn)在你已經(jīng)有了一個包含Crystal Report文件的頁面了。