亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2012-04-29 00:44:03
        軟件工程 2012年7期
        關(guān)鍵詞:數(shù)據(jù)表水晶控件

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

        .Net;水晶報表

        1 引言

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

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

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

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

        2.1 拉模式(PULL)

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

        2.2 推模式(PUSH)

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

        2.3 拉模式與推模式的比較

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

        在推模式中,數(shù)據(jù)庫是由應用程序去連接的,水晶報表本身不連接數(shù)據(jù)庫。這樣,系統(tǒng)就能使用公用的數(shù)據(jù)庫連接,也就節(jié)約了數(shù)據(jù)庫的連接消耗。這一點,在多用戶的系統(tǒng)環(huán)境內(nèi),少一次數(shù)據(jù)庫連接對系統(tǒng)和系統(tǒng)性能的影響是比較關(guān)鍵的。

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

        3 .Net平臺下水晶報表的實現(xiàn)

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

        3.1 實現(xiàn)步驟

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

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

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

        3.2 關(guān)鍵功能代碼

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

        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;//通過命令方式生成數(shù)據(jù)表

        }

        (2)添加Web頁面Page_Load事件處理程序。首先,實例化一個DataTable對象dtl,調(diào)用GetFields方法,將返回的數(shù)據(jù)集賦給dt1,然后將dt1綁定到相關(guān)顯示及格式化控件上。其次,實例化一個DataSet對象ds2,創(chuàng)建新命名的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;//將數(shù)據(jù)表中的數(shù)據(jù)加載到顯示或格式化數(shù)據(jù)空間,本例為DropDownList1.

        DropDownList1.DataTextField="COLUMN_NAME";

        DropDownList1.DataBind();

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

        ds2.Tables.Add("MyTable");

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

        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;//將數(shù)據(jù)集以變量形式保存為會話

        }

        (3)報表文件的綁定

        DataTable MyTable=new DataTable();

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

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

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

        4 利用向?qū)е谱鲌蟊?/p>

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

        5 結(jié)束語

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

        參考文獻

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

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

        猜你喜歡
        數(shù)據(jù)表水晶控件
        一張水晶卡告訴你浪漫都在哪
        金卡生活(2021年7期)2021-07-07 05:14:40
        湖北省新冠肺炎疫情數(shù)據(jù)表
        黨員生活(2020年2期)2020-04-17 09:56:30
        基于列控工程數(shù)據(jù)表建立線路拓撲關(guān)系的研究
        關(guān)于.net控件數(shù)組的探討
        軟件(2018年7期)2018-08-13 09:44:42
        邁向UHD HDR的“水晶” 十萬元級別的SIM2 CRYSTAL4 UHD
        藍水晶般的大眼睛
        潤·文摘(2018年7期)2018-05-14 16:52:40
        尋找藍水晶
        快樂語文(2016年15期)2016-11-07 09:46:35
        圖表
        基于VSL的動態(tài)數(shù)據(jù)表應用研究
        河南科技(2014年24期)2014-02-27 14:19:25
        就這樣玩會VBA中常見的自定義控件
        電腦迷(2012年24期)2012-04-29 00:44:03
        日本va欧美va精品发布| 亚洲女同性恋在线播放专区| 校花高潮一区日韩| 国产一区二区三区蜜桃av| 日本成年一区久久综合| 国产在线无码精品无码| 精品水蜜桃久久久久久久| 亚洲熟妇色xxxxx欧美老妇| 亚洲中国美女精品久久久| 加勒比东京热中文字幕| 一本加勒比hezyo无码专区| 亚洲学生妹高清av| 波多野结衣一区二区三区免费视频| 免费在线不卡黄色大片| 麻花传媒68xxx在线观看| 欧美人与动人物牲交免费观看| 国产成人一区二区三区视频免费蜜 | 日本久久视频在线观看| 高潮毛片无遮挡高清视频播放 | 99久久99久久久精品齐齐| 夜夜爽一区二区三区精品| 丰满少妇棚拍无码视频| 少妇被爽到高潮喷水免费福利 | 日本午夜伦理享色视频| 在线视频夫妻内射| 又黄又爽又色又刺激的视频| www久久久888| 国模91九色精品二三四| 国产无遮挡又黄又爽免费网站 | 狼人国产精品亚洲| 久草视频在线播放免费| 欧美奶涨边摸边做爰视频| 亚洲av无码日韩精品影片| 亚洲国产精品无码久久九九大片健 | 免费人成网站在线观看| 亚洲日韩精品a∨片无码加勒比| 人成午夜免费大片| 女同成片av免费观看| 99蜜桃在线观看免费视频| 亚洲sm另类一区二区三区| 馬与人黃色毛片一部|