摘要:在信息管理系統(tǒng)開發(fā)中,經(jīng)常要使用報表分析和統(tǒng)計數(shù)據(jù),水晶報表是一款優(yōu)秀的報表開發(fā)工具,簡單、易用和功能強大,使得在開發(fā)信息管理系統(tǒng)時報表的開發(fā)變得很方便,該文通過一個教務(wù)管理系統(tǒng)介紹了在VB.NET 平臺下用水晶報表開發(fā)報表的方法。
關(guān)鍵詞:VB.NET;水晶報表
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)36-10250-02
VB.NET開發(fā)應(yīng)用程序時,經(jīng)常需要生成報表,,如何開發(fā)出既滿足用戶需求,又能減少開發(fā)人員工作量的報表是開發(fā)人員普遍面臨的問題。水晶報表是由Crystal Decisions 公司開發(fā)的商務(wù)智能軟件,是一款優(yōu)秀的專業(yè)報表開發(fā)和制作工具,Crystal Reports for Visual Studio.NET是以CrystalReports9.0 為藍本,專門為.NET平臺定制的,提供了豐富的編程模型,充分利用.NET Framwork 和CRL,大大降低了開發(fā)大型,復(fù)雜的企業(yè)級報表過程的復(fù)雜度,同時它使用開放而靈活的結(jié)構(gòu),其標準類似XML,可通過Web 共享報表與信息,可提供深化圖表、報表導(dǎo)航和文本搜索等功能。此外,導(dǎo)出的Excel文件格式非常完美,任何其它報表在這方面都不能與之比擬,而且并不需要安裝Excel,它還為.NET 開發(fā)人員提供豐富的API,便于開發(fā)人員調(diào)用。
1 VB.Net下的水晶報表設(shè)計
1.1 水晶報表數(shù)據(jù)傳遞模型
水晶報表數(shù)據(jù)傳遞模型如圖1圖示,其中,數(shù)據(jù)源可以是傳統(tǒng)數(shù)據(jù)庫也可以是XML文件,使用ADO.NET的對象DATAAdapter及Connection等來連接數(shù)據(jù)庫,DataSet向下用來存儲數(shù)據(jù),同時可以直接操作XML文件,向上填充BindingSource,并用BindingSource來填充DataSource,CrystalReportViewer的功能是利用Datasource的填充的數(shù)據(jù)及指定給它的RDLC報表文件表顯示報表(如圖1)。
1.2 水晶報表的應(yīng)用實例
本文以某高校一個教務(wù)管理系統(tǒng)為例介紹如何使用水晶報表。
1.2.1 創(chuàng)建報表模板
1) 新建基于Windows的工程WindowsApp lication1,在“解決方案管理器”中,右擊項目名,在彈出的“項目”菜單中選擇“添加”,打開“添加”菜單,在“添加”菜單里選擇“新建頂”,打開“添加新項”對話框。
2) 在“添加新項”中選擇“Crystal報表,單擊“添加”,彈出 “Crystal Reports庫” 對話框。在選項組“創(chuàng)建新Crystal Report文檔”中,有3個選項:1. 使用報表向?qū)?有對話框指導(dǎo)完成報表的創(chuàng)建,并將選擇保存到報表設(shè)計器中;2. 作為空白報表:對報表不做任何設(shè)置;3. 來自于現(xiàn)有的報表:用目前設(shè)計好的報表作為模板,重新設(shè)計報表。
在選項組“選擇專家”中包含三種不同的報表專家,可以指導(dǎo)完成特定類型報表的創(chuàng)建工作。有3個選項:1. 標準:指導(dǎo)如何選擇數(shù)據(jù)源和連接數(shù)據(jù)庫表。還可以幫助用戶添加字段以及分組、統(tǒng)計、圖表以及排序。2. 交叉表:報表中的數(shù)據(jù)作為交叉表對象顯示,并指導(dǎo)自定義格式。3. 郵件標簽:允許用戶格式化報表,目的是打印在任意尺寸的郵件標簽上。
3) 分別選擇“使用報表向?qū)А焙汀皹藴省边x項,點擊確定,“標準報表創(chuàng)建對話框,對話框“數(shù)據(jù)”為要創(chuàng)建的報表選擇數(shù)據(jù)源,列表中包括如下的選項:1. 項目數(shù)據(jù):顯示當(dāng)前項目的數(shù)據(jù)源列表和ADO.NET的數(shù)據(jù)源;2. 當(dāng)前連接:顯示當(dāng)前連接到數(shù)據(jù)源的列表;3. 收藏夾:顯示“收藏夾”列表中維護的數(shù)據(jù)源列表。4. 歷史記錄:顯示最新5條使用過的數(shù)據(jù)源;5. 創(chuàng)建新連接:顯示可以創(chuàng)建的所有數(shù)據(jù)源,取決于安裝過程中選定的數(shù)據(jù)訪問組件。
4) 在列表中選擇“創(chuàng)建新連接”中選擇“OLE DB(ADO)”文件夾,對話框“OLE DB(ADO)”
5) 選擇“Microsoft OLE DB Provider for SQL Server”并進入下一步,將要連接的數(shù)據(jù)庫信息填寫到對話框中。服務(wù)器名字為“(local)”,用戶名和密碼分別為“sa”和“123456”,并選擇要連接的數(shù)據(jù)庫為JWGL。
6) 單擊按鈕“完成”返回到“標準報表創(chuàng)建向?qū)А睂υ捒颍来吸c開文件夾,找到連接的數(shù)據(jù),并將表“stdent”添加到右邊的選定列表中,將表“student”中的所有字段都選中,并添加要顯示的字段列表中。下面還有兩個配置的窗口,分別是分組和篩選的對話框,因為這里不需要設(shè)置,所以都直接跳到最后一步“報表樣式”,可選的樣式有10個,這里選擇“標準”樣式。創(chuàng)建好的報表將加載到主窗口中。
1.2.2 在工程中添加報表模板
1) 在窗體上放置一個CrystalReport Viewer 控件
2) 在程序中添加報表驗證信息,在form1下自定義一個過程
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo)
Dim myTableLogonInfos As TableLogOnInfos = CrystalReportViewer1.LogOnInfo
For Each myTableLogOnInfo As TableLogOnInfo In myTableLogonInfos
myTableLogOnInfo.ConnectionInfo = myConnectionInfo
Next
End Sub
1.2.3 在form控件的load 事件下加入下面的代碼
Dim dir As String
dir = System.Environment.CurrentDirectory
Dim path = dir.Substring(0, dir.LastIndexOf(\"\\\") - 3)
'MessageBox.Show(path + \"Hierarchical Grouping.rpt\")
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
CrystalReportViewer1.ReportSource = path + \"CrystalReport1.rpt\"
myConnectionInfo.ServerName = \"(local)\"
myConnectionInfo.DatabaseName = \"jwgl\"
myConnectionInfo.IntegratedSecurity = False
myConnectionInfo.UserID = \"sa\"
myConnectionInfo.Password = \"123456\"
'CrystalReportViewer1.LogOnInfo = myConnectionInfo
SetDBLogonForReport(myConnectionInfo)
2 總結(jié)
水晶報表在與VB.NET 緊密集成后,功能強大,性能穩(wěn)定,操作便捷,利用自身提供的報表設(shè)計器和VB.NET 提供的豐富特性,在開發(fā)報表時可以極大地提高開發(fā)效率,減少開發(fā)人員工作量。
參考文獻:
[1] 許清榮.新一代Visual Basic 2005 程序設(shè)計[M].北京:清華大學(xué)出版社,2006.
[2] 石志國.VB.Net數(shù)據(jù)庫編程[M].北京:清華大學(xué)出版社,2009.