999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

.Net平臺下水晶報表的應用研究

2012-04-29 00:44:03
軟件工程 2012年7期
關鍵詞:數據庫系統設計

報表作為信息組織和分析的有效手段和重要呈現形式,是企業管理信息系統的重要組成部分。如何方便、快捷、準確地生成各種統計報表,是一個值得研究的課題。本文通過對.Net平臺下的報表應用進行研究,讓讀者對水晶報表的應用有個全面認識,并能夠進行水晶報表的設計與開發。

.Net;水晶報表

1 引言

報表是一種數據管理工具,其目的是在于幫助用戶快速掌握原始數據中的基本關系,以便進行有效的決策。水晶報表(Crystal Reports)是一款主要用于設計及產生報表的軟件,是一個優秀的第三方報表開發工具,是業內最專業、功能最強的報表系統。它除了強大的報表功能外,最大的優勢是實現了與Visual Studio所有開發工具的集成。

Visual Studio .Net中的水晶報表是一個實現原理比較復雜但使用方法十分簡單的報表生成工具,它提供了非常豐富的模型,能夠在運行時操作屬性和方法,即可嵌入到C/S結構應用程序中,也可以加入到B/S結構的Web應用程序中。水晶報表可以在設計器中創建,用戶可以設計標題、插入數據、公式、圖表、子報表等操作。同時水晶報表查看器能夠用于顯示水晶報表的內容,包括圖和表。此外,它還具有一些自帶的功能,如翻頁、跳轉到某一頁、打印報表、刷新、放大縮小和查找等。因此水晶報表查看器也是一種功能強大的控件。

2 .Net平臺下水晶報表的控制模式

在.Net程序開發中,經常要對合并、匯總等進行編程,水晶報表大大簡化了這些工作,用它能生成漂亮的圖表和格式化文本,而且還能把報表導出為Word、Excel、PDF、HTML等格式。水晶報表程序控制上有兩種模式,即拉(PULL)模式和推(PUSH)模式。選擇的模式不同,程序實現上也會有很大差別。

2.1 拉模式(PULL)

拉模式是由水晶報表模板(引擎)直接連接數據庫,從數據庫里拉取數據。通常情況是我們在水晶報表里設置好數據庫信息以及相關的表,當我們在程序中調用水晶報表引擎,掛載模板后,水晶報表引擎會根據模板里的數據庫信息,及表信息主動連接數據庫,返回數據給報表模板,模板根據設計樣式進行呈現。

2.2 推模式(PUSH)

推模式是由應用程序從數據庫獲取數據,然后把數據推送給水晶報表引擎,水晶報表本身不跟數據庫進行交互。使用推模式將會比拉模式要多寫一些代碼。

2.3 拉模式與推模式的比較

由于拉模式是直接連接數據庫,和推模式相比,在推送給水晶報表引擎的過程中少了推送給中間結果集這么一個步驟,而中間結果集本身就占用系統資源,所以拉模式比推執行效率高。

在推模式中,數據庫是由應用程序去連接的,水晶報表本身不連接數據庫。這樣,系統就能使用公用的數據庫連接,也就節約了數據庫的連接消耗。這一點,在多用戶的系統環境內,少一次數據庫連接對系統和系統性能的影響是比較關鍵的。

當然我們也應該注意到,推模式因為存在一個中間結果集,所以會占用系統資源,也正是因為這個中間結果集的存在,使得從數據庫獲取數據后,能夠對數據進行再加工,從而使水晶報表更加靈活多變。所以在具體實現的時候,要綜合考慮實際情況來決定采用哪種模式實現。

3 .Net平臺下水晶報表的實現

.Net平臺下水晶報表開發最重要的步驟是數據的獲取。在拉模式中,數據獲取這一步驟是由.Net內置的水晶報表引擎自動處理,不需要編寫任何代碼,因此這里主要討論推模式的實現。實現過程主要涉及以下兩個文件:數據集(.xsd文件)、水晶報表(.rpt文件)。

3.1 實現步驟

(1)建立解決方案,在其管理器中添加數據集,在解決方案中生成.xsd格式的文件。具體過程為:添加→添加新項→類別→數據→模板→數據集。

(2)在服務器資源管理器中,添加數據連接,選擇所要連接的數據庫,將數據表拖到之前建立好的數據集上,保存整個項目。

(3)在解決方案資源管理器中,添加“Crystal Report”模板,通過“報表專家”完成報表設計。具體過程為:報表專家→數據庫專家→項目數據→ADO.NET數據集→選擇所需數據集對象→插入數據表。

3.2 關鍵功能代碼

(1)在項目的數據訪問層編寫獲取數據表字段的方法GetFields,該方法返回的為數據集。

Public static DataTable GetFields()

{

Database db= DatabaseFactory.CreateDatabase fftConnectionString");

String strSql= "select 列名集合 from 表名 WHERE 條件";

DataTable dtc=db.ExecuteDataSet(CommandType.Text,strSq1).Tables[0];

return dtc;//通過命令方式生成數據表

}

(2)添加Web頁面Page_Load事件處理程序。首先,實例化一個DataTable對象dtl,調用GetFields方法,將返回的數據集賦給dt1,然后將dt1綁定到相關顯示及格式化控件上。其次,實例化一個DataSet對象ds2,創建新命名的DataTable,比如,MyDataTable,并為其添加新列,比如,MyCol1、MyCol2,后將ds2用Session保存。

using CrystalDecisions.Shared;//必須引入水晶報表的類庫

using CrystalDecisions.CrystalReports.Engine;

CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt"));//制定報表路徑及文件

if (1sPostBack==false)//Form_Load()事件的部分代碼

{

DataTable dtl=new DataTable();

DropDownList1.DataSource= dt1;//將數據表中的數據加載到顯示或格式化數據空間,本例為DropDownList1.

DropDownList1.DataTextField="COLUMN_NAME";

DropDownList1.DataBind();

DataSet ds2=new DataSet();//生成數據集,本例為MyTable

ds2.Tables.Add("MyTable");

DataColurrm MyCol=new DataColumn();//生成數據列類,并添加新列

MyCol.ColumnName="MyCol1" ;

MyCol.DataType=System.Type.GetType ("System.String");

ds2.Tables["MyTable"].Columns.Add(MyCol);

MyCol=new DataColumn();

MyCol.ColumnName="MyCol2";

MyCol.DataType=System.Type.GetType("System.String");

ds2.Tables["MyTable"].Columns.Add(MyCol);

Session["dsTemp"]=ds2;//將數據集以變量形式保存為會話

}

(3)報表文件的綁定

DataTable MyTable=new DataTable();

MyCrysta1.SetDataSource(MyTable);//設置報表文件MyCrysta1的數據表來源

CrystalReportViewer1.ReportSource= MyCrysta1;//設置報表控件的報表文件來源

CrystalReportViewer1.Visible=true;//報表顯示

4 利用向導制作報表

除了使用程序方式開發報表外,還可利用報表向導輕松地完成一個報表。首先新建一個WebSite,添加報表,向導會提示創建一個數據源并打開數據庫工具,根據提示,很容易就能生成一個數據源,作為報表的數據來源。在報表設計器中,可以根據需要畫出想要的報表,并從“數據源”中選擇想要的數據。這樣,就完成了一個報表,接下來就可以使用ReportViewer控件來顯示這個報表了。新建一個WebForm,從工具箱中拖一個ReportViewer控件到頁面上,它會提示你選擇報表,我們就選擇剛才設計的報表,運行程序就能看到想要的東西了。

5 結束語

在ASP.NET環境下采用水晶報表開發Web動態報表,利用水晶報表本身提供的報表設計器和.Net提供的豐富特性,通過推模型從數據庫中讀取滿足查詢條件的數據,從而靈活地產生報表輸出。這種設計方法在系統開發中可以作為一種通用的查詢方法,因此能夠減少系統的開發和維護的工作量,極大地提高系統的開發效率。同時,可以減少系統的復雜度,增加報表系統開發的可復用度,是一種比較實用的報表系統解決方案。

參考文獻

[1]張榮圣,侯鵬志,郭圣路.Crystal Reports 2008.水晶報表從入門到精通.北京:電子工業出版社,2010.

[2]劉彥博,等.Visual Studio技術大全.成都:人民郵電出版社,2009.

猜你喜歡
數據庫系統設計
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 亚洲无码视频一区二区三区 | 国产玖玖玖精品视频| 亚洲色无码专线精品观看| 最新精品国偷自产在线| 亚洲天堂伊人| 欧美69视频在线| 久久 午夜福利 张柏芝| 中文字幕永久在线看| 午夜限制老子影院888| 国产黄色爱视频| 国产91小视频在线观看| 国产对白刺激真实精品91| 久久久久亚洲AV成人网站软件| 老色鬼久久亚洲AV综合| 日本午夜在线视频| 国产一级二级在线观看| 中国国产高清免费AV片| 日本三级黄在线观看| 亚洲精品男人天堂| 无码中文字幕乱码免费2| 草逼视频国产| 国产91麻豆免费观看| 久久夜夜视频| 三级欧美在线| 国产91av在线| 狼友av永久网站免费观看| 麻豆精品在线| 国产麻豆91网在线看| 伦伦影院精品一区| 久久美女精品| 国产成人一区二区| 日韩午夜福利在线观看| av无码一区二区三区在线| 日韩A∨精品日韩精品无码| 国产亚洲精品97AA片在线播放| 国产麻豆另类AV| 亚洲经典在线中文字幕| 国产中文在线亚洲精品官网| 激情六月丁香婷婷四房播| 色悠久久久| 午夜国产不卡在线观看视频| 国产天天色| 日本不卡免费高清视频| 国产欧美专区在线观看| 色哟哟国产精品一区二区| 中美日韩在线网免费毛片视频 | 久久亚洲天堂| 久久这里只有精品国产99| 在线99视频| 无码一区二区三区视频在线播放| 亚洲国产天堂久久综合226114| 亚洲有码在线播放| 欧美精品在线观看视频| 91亚瑟视频| 国产亚洲欧美在线中文bt天堂| 欧美怡红院视频一区二区三区| 欧美日韩综合网| 欧美五月婷婷| 亚洲av无码片一区二区三区| 国产精品久久久久无码网站| 色综合久久无码网| 亚洲男人的天堂久久香蕉 | 热99精品视频| 久久综合亚洲色一区二区三区| 欧美a在线看| 无码电影在线观看| 黄色网址手机国内免费在线观看| 伊人91视频| 午夜毛片福利| 午夜免费视频网站| 国产福利大秀91| 欧美a在线视频| 大香网伊人久久综合网2020| 国产乱子伦视频在线播放| 色妞www精品视频一级下载| 狠狠色成人综合首页| 国产熟睡乱子伦视频网站| 亚洲欧美人成电影在线观看| 欧美精品黑人粗大| 日韩AV手机在线观看蜜芽| 国产黑丝一区| 麻豆精品久久久久久久99蜜桃|