?

.NET環境下水晶報表的設計與實現

2013-12-10 14:07廣州市機電高級技工學校余楷鑫
電子世界 2013年4期
關鍵詞:程序員數據源水晶

廣州市機電高級技工學校 余楷鑫

廣州輕工職業學校 劉魁元

一、水晶報表的模式

水晶報表是開發數據報表的利器,在.NET平臺做過報表開發的程序員,一定都對水晶報表強大的報表設計功能留下深刻的印象。運用水晶報表進行開發,能夠大大簡化數據報表開發的難度,減少開發的工作量,其良好的接口功能,使得程序員在開發與維護過程中,往往能夠取得事半功倍的效果。水晶報表在應用時分兩種方法,分別是拉模式(PULL)、推模式(PUSH)。下面將介紹水晶報表的這兩種模式。

1.水晶報表的拉模式

水晶報表的拉模式是指直接從數據庫獲取數據,利用水晶報表的接口來實現報表展示,基本上不用手動編寫代碼。該種模式只需要調整模版就可以設計好水晶報表,與數據的連接和執行SQL命令都是交水晶報表來完成,其表現如圖1所示。拉模式適用于不需要對數據庫(或數據文件)中的數據進行額外的處理(如數值計算等)的情況,其優點是設計時非常方便,可以隨時對設計的情況進行預覽,但在應用程序部署時則比較繁瑣(如需要設定數據庫連接的數據源及驅動)。

在拉模式下,只要按照報表專家的向導來操作,水晶報表直接根據指定的驅動連接數據庫然后組裝這些數據,不需要開發人員編寫代碼。但是其缺點也是顯而易見的,用拉模式設計的水晶報表在運行環境或者數據庫變動時,其調整比較麻煩。另外在設計與實現上,拉模式的靈活性不足也是存在的一個問題,作為程序員,該模式是不被喜歡的,所以本文并不推薦使用水晶報表的拉模式。

2.水晶報表的推模式

水晶報表的推模式也是需要獲取數據庫里的數據后在設計好的模板中展示出來,所不同的是推模式能夠靈活的按照程序員的設想實現復雜的水晶報表,而且在維護上更加的便利,一定程度上降低了與數據庫的耦合度。其表現形式如圖2所示。在推模式中編程組裝的Dataset里的SQL語句中的字段要與水晶報表里的SQL語句字段一致。

圖1

圖2

在水晶報表的推模式實現上,開發人員要編寫相應的查詢代碼與報表中的字段相匹配,并且代碼中的數據庫表也要跟水晶報表中的保持一致,不然水晶報表便顯示不出數據,筆者在這一點上曾經吃過虧,調試了很久才發現這一疏漏。在簡單的水晶報表實現上,相信有過這方面開發的人都有一定了解,但是涉及到多數據表展示在同一張打印報表上時,未必就有人知道了,本文接下來將介紹如何解決多報表打印這一問題。

二、如何利用水晶報表推模式實現多數據源綁定

通過以上分析,程序員在設計開發水晶報表的時候,以推模式來實現更加的符合實際項目的要求,筆者將通過一個學生學籍報表來介紹水晶報表推模式的實現步驟。

(1)實現的工具采用Visual Studio 2008,數據庫選擇SQL Server 2005,水晶報表則為Visual Studio 2008自帶的10.5版本。

(2)在項目底下新建一個StuReport.aspx的頁面,在該頁面中放置查詢條件,并在工具箱的報表欄中拖入CrystalReportViewer和CrystalReportSource控件到頁面中,前臺主要代碼如下:

如果是多個數據源的話,仿照上面將數據庫中的數據讀取到dataset中,這里需要注意的地方是Fill數據集的時候表名要和水晶報表中的保持一致。如果數據報表中需要顯示圖片的話,必須將圖片轉化為二進制流的形式,因為vs 2008集成的水晶報表10.5只支持二進制流的形式。

(3)在同一目錄下新建一個student.xsd的頁面,創建數據庫字段的映射,該頁面是利用xsd標記語言建立的。實際上,xsd可以認為是一個數據中介,介于報表模板與數據之間。建成數據集,有三個數據庫表,分別為STU_V_StuInfo、STU_V_Family、STU_T_ConductReview,這三個表的表名對應上面提到的dataset填充名。

(4)接下來便是設計水晶報表頁面,首先便是綁定上面所示的數據源xsd文件,點擊字段資源管理器—數據庫字段,右鍵點擊數據庫專家。在數據庫文件中選擇我們創建的student.xsd文件。

設計數據報表:因為是多數據源展示到同一數據報表中,所以需要插入子報表。學生信息模塊為主報表,家庭成員模塊和操行評定模塊為子報表。

點擊主報表,右鍵—插入--子報表,選擇鏈接標簽,這里需要注意的地方是:主報表與子報表必須通過學生ID進行關聯,這樣才能使報表讀到的學生信息是同一個學生ID的信息。子報表中的字段設置方法與主報表一樣。

設計完報表,我們就可以運行我們所設計的報表界面。

三、結束語

學校學生學籍打印是學校學生管理系統的一項重要功能,運用水晶報表來進行學籍打印,能夠大大減少學籍管理員的工作量。本文利用水晶報表來解決這一問題,希望能給大家提供借鑒與參考。

[1]滕永富,孫振龍,田麗軍,薛仁政.基于Web的研究生管理信息系統的設計與實現[J].齊齊哈爾大學學報(自然科學版),2010(03).

[2]李濤,屈展.基于.NET的Web動態報表研究與實現[J].科技資訊,2008(03).

[3]雷筱珍.水晶報表數據來源之.NET對象應用技巧[J].福建電腦,2010(11).

[4]張龍強.一種.NET下報表打印的方法與實現[J].電腦知識與技術,2010(19).

[5]石俊萍.基于C#水晶報表數據源動態綁定的實現[J].電腦與電信,2009(05).

[6]洪穎.基于.net平臺下不同模式水晶報表的研究與實現[J].計算機與信息技術,2009(12).

[7]莫麗萍.基于.NETB/S模式中水晶報表打印與套打的實現[J].農業網絡信息,2008(11).

猜你喜歡
程序員數據源水晶
為了讓媽媽看懂地圖,一位“野生程序員”做了個小程序
一張水晶卡告訴你浪漫都在哪
怎樣成為一名優秀程序員
邁向UHD HDR的“水晶” 十萬元級別的SIM2 CRYSTAL4 UHD
藍水晶般的大眼睛
Web 大數據系統數據源選擇*
程序員之子
寇準與水晶餅
基于不同網絡數據源的期刊評價研究
加班
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合