扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁(yè) 軟件開發(fā) 成功案例 公司新聞 公司簡(jiǎn)介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> 開發(fā)語(yǔ)言 >> 文章正文

大家看看,水晶報(bào)表的又一種靈活應(yīng)用

             
        使用水晶報(bào)表的強(qiáng)大功能來(lái)實(shí)現(xiàn)應(yīng)用程序的統(tǒng)計(jì)分析及打印導(dǎo)出等功能,是微軟平臺(tái)上進(jìn)行.NET應(yīng)用程序開發(fā)報(bào)表的一種不錯(cuò)的選擇。水晶報(bào)表在設(shè)計(jì)、開發(fā)、配置以及部署上,還是會(huì)給初學(xué)者帶來(lái)一定的困擾的。那么,是否存在一種相對(duì)比較簡(jiǎn)單而且易用的方式來(lái)進(jìn)行水晶報(bào)表的設(shè)計(jì)、開發(fā)、配置以及部署呢?本文將提供一種比較簡(jiǎn)單且相對(duì)靈活的方法。
本文將包含以下內(nèi)容:

Crystal Reports的另類非對(duì)象模式數(shù)據(jù)綁定  
水晶報(bào)表的簡(jiǎn)單模式部署
P.S. 本文中描述到的Crystal Reports為Crystal Reports for Visual Studio .NET,原則上該版本是runtime free授權(quán),for unlimited user的。VS IDE版本為2008,Crystal Reports版本為10

Crystal Reports的另類非對(duì)象模式數(shù)據(jù)綁定
水晶報(bào)表綁定數(shù)據(jù)的模式有很多種,其中包括使用DataSet、DataReader及ObjectCollection等。在某個(gè)特定的系統(tǒng)項(xiàng)目中,我們多數(shù)通過(guò)指定的業(yè)務(wù)數(shù)據(jù)庫(kù)來(lái)提供對(duì)報(bào)表數(shù)據(jù)的支持。本文將主要描述一種非數(shù)據(jù)庫(kù)數(shù)據(jù)綁定的變通模式,通過(guò)這種模式進(jìn)行綁定的報(bào)表,可以不用設(shè)置其數(shù)據(jù)庫(kù)驗(yàn)證參數(shù)(DBLogon)的相關(guān)信息,具體的數(shù)據(jù)源可以來(lái)源于數(shù)據(jù)庫(kù),也可以來(lái)源于xml文件等其他半結(jié)構(gòu)化數(shù)據(jù)。
在VS IDE項(xiàng)目的Solution Explorer中,建立存放報(bào)表文件的文件夾,如ReprotFilesFolder
用鼠標(biāo)右鍵點(diǎn)擊新建的文件夾,選擇添加新項(xiàng)(Add New Item...)
 
選擇“XML Schema”,將文件命名為Demo.xsd
用DataSet Editor打開該Schema文件,點(diǎn)擊“Ctrl+Alt+S”,打開“Server Explorer”,找到當(dāng)前項(xiàng)目使用的數(shù)據(jù)庫(kù)連接,將報(bào)表展示涉及到的數(shù)據(jù)表拖拽到設(shè)計(jì)區(qū)域
 
推拽的表可以是存在鍵值關(guān)系的表,也可以是毫無(wú)關(guān)系的表,甚至通過(guò)存儲(chǔ)過(guò)程建立的臨時(shí)表,保存該xsd文件
用鼠標(biāo)右鍵點(diǎn)擊新建的文件夾,選擇添加新項(xiàng)(Add New Item...) 
選擇Crystal Report,將報(bào)表文件命名為Demo.rpt,點(diǎn)擊添加(Add)
在打開的水晶報(bào)表向?qū)Т翱谥羞x擇“使用報(bào)表向?qū)А,點(diǎn)擊確定
 
在報(bào)表向?qū)У臄?shù)據(jù)向?qū)ы?yè)中,選擇“創(chuàng)建新連接-數(shù)據(jù)庫(kù)文件”
 
點(diǎn)擊數(shù)據(jù)庫(kù)文件前的“+”,將彈出選擇數(shù)據(jù)文件窗口,找到剛才創(chuàng)建的Demo.xsd文件,并點(diǎn)擊“打開”
 
此時(shí),我們剛添加到Demo.xsd中的兩個(gè)數(shù)據(jù)表將出現(xiàn)在“數(shù)據(jù)文件”節(jié)點(diǎn)的子節(jié)點(diǎn)下,選中數(shù)據(jù)表,點(diǎn)擊“>”按鈕,將表添加到“已選擇表”列表中
 
點(diǎn)擊“下一步”,可以為表之間添加隱式的鍵值關(guān)系
 
點(diǎn)擊完成,將生成一張空白的報(bào)表
 
根據(jù)實(shí)際的業(yè)務(wù)情況設(shè)計(jì)符合要求的報(bào)表,并保存報(bào)表文件,例如下圖
 
設(shè)計(jì)工作到此告一段落,下面將進(jìn)行數(shù)據(jù)的綁定。
新建一個(gè)WebForm頁(yè)面,將CrystalReportViewer添加到頁(yè)面中,如下圖所示
 
在后臺(tái)頁(yè)面中首先引用Crystal Reports的程序集
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
定義變量
private ReportDocument reportDocument;
添加自定義方法
/// <summary>
/// 初始化報(bào)表
/// </summary>
private void ConfigureCrystalReports()
{
    //當(dāng)前業(yè)務(wù)的報(bào)表打印文件
    string RPTFile = "";
    //當(dāng)前業(yè)務(wù)的報(bào)表打印數(shù)據(jù)集
    DataSet ds = null;

    #region 獲取報(bào)表打印文件
    if (Session["rf"] == null)
    {
        RPTFile = Server.MapPath("Demo.rpt");
        Session["rf"] = RPTFile;
    }
    else
        RPTFile = Session["rf"].ToString();
    #endregion

    #region 獲取當(dāng)前業(yè)務(wù)的報(bào)表打印數(shù)據(jù)
    if (Session["pd"] == null)
    {
        ds = new DataSet();
        string sql = "";
        sql = "select * from SalesMaster where BItemSerialNumber='0802280001'";
        DataSet masterDs = 填充主表數(shù)據(jù)
        //將主表添加到報(bào)表數(shù)據(jù)集中
        ds.Merge(masterDs);
        //利用同樣的方法添加子表或其他的表,甚至可以添加表和表之間的關(guān)系

        //上述方法也可以從其他數(shù)據(jù)源讀入數(shù)據(jù),包括Access數(shù)據(jù)庫(kù)、xml數(shù)據(jù)等

        Session["pd"] = ds;
    }
    else
        ds = (DataSet)Session["pd"];
    #endregion

    if (Session["reportDocument"] == null)
    {
        reportDocument = new ReportDocument();
        reportDocument.Load(RPTFile);
        reportDocument.SetDataSource(ds);
        Session["reportDocument"] = reportDocument;
    }
    else
        reportDocument = (ReportDocument)Session["reportDocument"];
    ReportViewer.ReportSource = reportDocument;
}

在頁(yè)面的Page_Load方法中添加Response.Expires = -1;
添加頁(yè)面初始化方法
/// <summary>
/// 頁(yè)面初始化事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Init(object sender, EventArgs e)
{
    ConfigureCrystalReports();
}

至此,報(bào)表的數(shù)據(jù)綁定及顯示工作完成。編譯項(xiàng)目后,在瀏覽器中可以查看報(bào)表效果。此種方法的靈活性在于
完成后,完全可以刪除.xsd的Schema文件而運(yùn)行,或?qū)?xsd文件移出項(xiàng)目。
數(shù)據(jù)的讀入,不論來(lái)自SQL Server、Access還是xml數(shù)據(jù),只要符合我們?cè)O(shè)定的Schema的表格式,即可以綁定到報(bào)表中。
我們也可以修改并強(qiáng)化上述的ConfigureCrystalReports方法,并建立系統(tǒng)管理頁(yè)面,在管理頁(yè)面上進(jìn)行數(shù)據(jù)來(lái)源的選擇和設(shè)定等。
水晶報(bào)表的簡(jiǎn)單模式部署
將水晶報(bào)表部署到目標(biāo)服務(wù)器的原因是,.NET Framework的安裝中并沒(méi)涵蓋水晶報(bào)表的合成項(xiàng)。在之前,曾經(jīng)聽說(shuō)過(guò)程序員為了將水晶報(bào)表的支持部署到服務(wù)器,而在服務(wù)器上安裝VS IDE的事情。因此,在這里給一個(gè)簡(jiǎn)單的方法。
在安裝了VS IDE的開發(fā)機(jī)環(huán)境中,打開資源管理器
VS2005定位到:
%systemroot%\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\CrystalReports
VS2008定位到:
%systemroot%:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5
在上述文件夾中找到CRRedist2005_x86.msi或CRRedist2008_x86.msi文件,在服務(wù)器上安裝即可

作者:Richard | 文章來(lái)源:cnblogs | 更新時(shí)間:2008-2-28 15:53:08

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    沒(méi)有相關(guān)文章
    軟件技術(shù)
    · 開發(fā)語(yǔ)言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫(kù)開發(fā)
    最新文章  
    ·搜集整理的asp.net的驗(yàn)證方
    ·各種FOR循環(huán)結(jié)構(gòu)的整理
    ·軟件項(xiàng)目開發(fā)中應(yīng)該考慮那
    ·搜集整理的javascript sel
    ·軟件開發(fā)中項(xiàng)目經(jīng)理有那些
    ·學(xué)習(xí)如何在Lambda表達(dá)式進(jìn)
    ·C++基礎(chǔ)知識(shí):結(jié)構(gòu)體數(shù)據(jù)的
    ·C#實(shí)現(xiàn)短信發(fā)送程序的例子
    ·sun最近修補(bǔ)了一部分java的
    ·rss定制的另外一種實(shí)現(xiàn)方式
    ·delphi實(shí)現(xiàn)利用arp欺騙來(lái)實(shí)
    ·基礎(chǔ)學(xué)習(xí):基于WF的流程框
    ·網(wǎng)絡(luò)編程中怎樣得知一次數(shù)
    ·如何逆序輸出單鏈表?
    ·軟件開發(fā)過(guò)程中的性能設(shè)計(jì)
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號(hào)
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    泽库县| 焉耆| 昭平县| 安乡县| 永嘉县| 龙口市| 山阴县| 佛坪县| 乾安县| 枣强县| 淮南市| 江山市| 景谷| 东海县| 名山县| 富蕴县| 杂多县| 德昌县| 临邑县| 乾安县| 盐边县| 安达市| 泾川县| 唐河县| 凤城市| 衡山县| 垦利县| 类乌齐县| 永州市| 滦平县| 苍山县| 正镶白旗| 皮山县| 辽中县| 祁连县| 赤峰市| 扶沟县| 万安县| 中山市| 玉溪市| 商都县|