摘要:水晶報表是一套完整的web報表制作解決方案,用于處理數(shù)據(jù)庫,幫助用戶分析和解釋重要信息,如:制作網(wǎng)絡(luò)報表,存取,分析,報告,分享資料等。該文將報表制作功能與Web與Windows應(yīng)用程序緊密結(jié)合,利用各種資源,建立高品質(zhì)的數(shù)據(jù)報告,具有快速和可擴(kuò)充的報表處理功能,使客戶能夠很好的理解與分析數(shù)據(jù)。
關(guān)鍵詞:水晶報表;Crytal Report Viewer控件;數(shù)據(jù)庫;VB.NeT
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2009)05-1102-02
Programming Analyse of Crystal Reports based on VB.Net
LI Bing
(Yunnan Province, Simao Teachers College, Simao 665000,China)
Abstract: Crystal Reports is a complete set of statements to produce web solutions for dealing with the database to help users analyze and interpret important information, such as: the production of statements of the network, access, analyze, report and share information. It will feature the production of statements with the Web and Windows applications closely integrated use of resources, the establishment of high-quality data reporting, and rapid expansion in its report processing functions, enabling customers to a very good understanding and analysis of the data.
Key words: crystal reports; crytalreport viewer control; database; VB.Net
1 引言
水晶報表[1]是一種強(qiáng)大的報表處理工具,幾乎可以從任何數(shù)據(jù)源生成所需要的報表。內(nèi)置報表專家在所生成報表和完成一般的報表任務(wù)過程中,會一步一步地指導(dǎo)用戶進(jìn)行操作。報表專家通過公式、交叉表、子報表和設(shè)置條件格式來幫助表現(xiàn)數(shù)據(jù)的實際意義,揭示可能被隱藏掉的重要關(guān)系。如果文字和數(shù)字確實不夠充分,則用地理地圖和圖形進(jìn)行形象的信息交流。其可以用于各種各樣的格式報表發(fā)布,包括用 Microsoft 的 Word 和 Excel 發(fā)布、通過電子郵件甚至 Web 發(fā)布。高級的 Web 報表功能允許工作組中的其他成員在他們自己的 Web 瀏覽器中查看或更新共享報表。
Visual Studio.NET[2]中集成的Crystal Reports 9(簡化版本)賦予.NET平臺創(chuàng)建交互式的、高質(zhì)量展示內(nèi)容的能力,可以在Web平臺和Windows平臺上呈現(xiàn)報表,甚至將Crystal報表在Web服務(wù)器上發(fā)布,下面我們就介紹Visual Studio.NET平臺下用Visual Basic語言進(jìn)行水晶報表制作的主要方法及其步驟。
2 報表模塊操作流程:
報表流程如圖1。
3 具體實驗步驟及結(jié)果
3.1 數(shù)據(jù)源的設(shè)定
1) 拉模型:在拉模型中,驅(qū)動程序?qū)⑦B接到數(shù)據(jù)庫并根據(jù)需要將數(shù)據(jù)“拉”進(jìn)來,使用這種模型時,與數(shù)據(jù)庫連接和為了獲取數(shù)據(jù)而執(zhí)行的SQL命令都同時是由Crystal Reports本身處理,而不需要開發(fā)人員編寫代碼。
2) 推模型:推模型需要開發(fā)人員編寫代碼來連接到數(shù)據(jù)庫,并執(zhí)行SQL命令以創(chuàng)建與報表中的字段所匹配的記錄集或數(shù)據(jù)集,并且將所選擇的對象傳遞給報表。(此模型相對比較靈活,安全性比較高,因此一般采用此模型)
3.2 連接數(shù)據(jù)源(ADO.NET)
3.2.1 從數(shù)據(jù)源創(chuàng)建數(shù)據(jù)集對象
1) 在項目中新建一個數(shù)據(jù)集文件(Dataset1.xsd)。
單擊“項目”項,選擇“添加”按鈕,在彈出的對話框中選擇“Dataset.xsd”,名字為默認(rèn)名:Dataset1.xsd。
2) 指定數(shù)據(jù)庫位置(利用服務(wù)器資源管理器創(chuàng)建數(shù)據(jù)源)
單擊[數(shù)據(jù)]選擇添[添加新數(shù)據(jù)項]如圖2所示;
單擊下一步,選擇要加入的數(shù)據(jù)源(本例中以酒店管理的一個數(shù)據(jù)庫(JDGL)為例),單擊”“下一步”,選擇數(shù)據(jù)庫的連接方式,一般采用ADO.NET 數(shù)據(jù)集,單擊“下一步”,選擇所要輸出的表(客房入住單),并添加所需要的字段,單擊完成,這樣數(shù)據(jù)集就創(chuàng)建好了。
3.2.2 將報表連接到ADO.NET 數(shù)據(jù)集
1) 在項目中添加新項水晶報表項并默認(rèn)名為:Crystal Report1.rpt[2]或者也可在解決資源管理器中,右擊項目名稱,在快捷菜單中選擇“添加”|“添加新項”命令。在彈出的“添加新項”對話框中,展開“類別”列表框的文件夾,然后單擊“實用工具”節(jié)點。在“模板”列表框選擇Crystal Report1,在這里創(chuàng)建名稱為:Crystal Report1.rpt
2) 單擊[數(shù)據(jù)]項,選擇[顯示數(shù)據(jù)源],在數(shù)據(jù)源選項區(qū)域中選擇所需數(shù)據(jù)集對象。
單擊“打開”按鈕,將彈出的“Crystal Report庫”對話框。在“Crystal Report庫”對話框中,有實用報表專家(指導(dǎo)完成報表創(chuàng)建的過程,并將所選擇的專家添加到Crystal Report Designer中),作為空報表項(用于打開Crystal Report Designer),來自與現(xiàn)有的報表(創(chuàng)建新報表,它與指定的另一報表設(shè)計相同)等幾項,這里在“Crystal Report 庫”對話框中選擇“實用報表專家”單選按鈕,并將“選擇專家”設(shè)置為標(biāo)準(zhǔn)。在右側(cè)列表窗口中選擇已經(jīng)添加的數(shù)據(jù)源,進(jìn)行數(shù)據(jù)選定。
3) 選擇要向報表中添加的表,并設(shè)計報表界面,如圖3所示。
在報表設(shè)計界面中含有,報表頁眉(主要設(shè)計報表頁眉的顯示樣式),頁眉(主要設(shè)計報表開頭的樣式),詳細(xì)資料(是設(shè)計的核心區(qū)域,主要是設(shè)計報表中各種數(shù)據(jù)的顯示方式),報表頁腳(是設(shè)置對“詳細(xì)資料”部分中數(shù)據(jù)統(tǒng)計相關(guān)的數(shù)據(jù)),頁腳(主要設(shè)置報表頁腳的顯示樣等功能)等功能,可以通過拖放操作將所需要的字段拖到“詳細(xì)資料”區(qū),同時會在“報表頁眉”中同步增加這兩個字段來說明,從而細(xì)化報表設(shè)計,是報表更加全面美觀。
在這里,我們增加了一個文本標(biāo)題“客房入住信息”,通過“頁腳”設(shè)置增加了頁碼,并對各個字段做了如圖3的調(diào)整。
3.3 創(chuàng)建報表顯示和打印窗體
1) 打開工具箱,并將一個crytalreportviewer控件拖到窗體上,設(shè)置Dock屬性為Fill。通過CrystalReportViewer控件的Reportsource屬性設(shè)置要查看那個表,該屬性設(shè)置后,將使報表顯示在查看器中。報表源可以是ReportDocument或報表文件的路徑,也可以是強(qiáng)類型報表。接下來,將報表綁定到crytalreportviewer控件。
2) 通過拖放操作將crytalreportviewer控件調(diào)整到希望大小并將其移到所需要的位置,如
3.4 添加動態(tài)改變數(shù)據(jù)源的代碼
Private Sub CrystalReportViewer1_Load(……) Handles CrystalReportViewer1.Load
‘連接數(shù)據(jù)源
Dim conn As String = \"Data Source = localhost;Initial Catalog = MyHotel; Integrated Security=True\"
‘定義連接項
Dim objconn1 As New SqlConnection(conn)
‘定義數(shù)據(jù)集
Dim objdset1 As New DataSet
Dim mydatatable As DataTable = New DataTable()
Dim ad As New SqlDataAdapter
Dim rpt As New CrystalReport1
‘選擇要顯示的數(shù)據(jù)項
Dim strsql1 As String = \"select * from 酒店入住單“
‘打開數(shù)據(jù)連接
objconn1.Open()
Dim objAdap As New SqlClient.SqlDataAdapter(strsql1, conn)
sqlconnection1.Close()
objset1.Clear()
‘向報表添加數(shù)據(jù)
objAdap.Fill(objset1, \"a\")
rpt.SetDataSource(objset1.Tables(\"a\"))
‘刷新報表
CrystalReportViewer1.Refresh()
CrystalReportViewer1.ReportSource = rpt
objconn1.Close()
objdset1.Clear()
End Sub
4 運行結(jié)果
圖4為水晶報表運行圖。
5 小結(jié)
在Visual Basic. Net開發(fā)平臺下可以加載水晶控件Crystal Report Viewer,通過Crystal Report Viewer控件的Report Source屬性設(shè)置要查看那個表,通過“數(shù)據(jù)源”連接項連接數(shù)據(jù)源,利用水晶報表中的“報表專家”設(shè)計水晶報表,調(diào)整報表數(shù)據(jù)輸出項,從而個應(yīng)戶顯示出基本的數(shù)據(jù)統(tǒng)計,幫助用戶分析和解釋重要信息,在應(yīng)用程序和web開發(fā)人員可以節(jié)省開發(fā)時間并滿足用戶的需求。
參考文獻(xiàn):
[1] Crystal Reports聯(lián)機(jī)幫準(zhǔn)[k].Business Objects SA,2008.
[2] 豈興名.Visual Basic.NET項目考發(fā)寶典[M].北京:電子工業(yè)出版社,2007:311-325.
[3] 郭斌,銀華強(qiáng).Visual Basic2005數(shù)據(jù)庫通用模塊開發(fā)與系統(tǒng)移植[M].北京:清華大學(xué)出版社.2007:195-198.