WinForm中使用CrystalReport水晶報表——基礎,分組統計,自定義數據源


開篇


本篇文章主要是幫助剛開始接觸CrystalReport報表的新手提供一個循序漸進的教程。該教程主要分為三個部分1)CrystalReport的基本使用方法;2)使用CrystalReport對數據進行分組求和;3)CrystalReport如何使用自定義的數據源(如內存中的DataTable表)三個方面來寫。相信看懂了這個教程之后,對於自己項目中的實現報表這一功能,應該就能輕松的應對了。
 
一    CrystalReport模板的制作及顯示

A模板的制作
1、右鍵【項目屬性】添加一個水晶報表(在vs中需要安裝CrystalReport模塊,不同vs版本下載不同的CrystalReport版本:CrystalReport下載鏈接: http://scn.sap.com/docs/DOC-7824
 
2、添加報表的設計界面如下:一個報表包括(報表頭,頁眉,詳細資料,報表尾,頁眉)5個基本部分。
 
3、現在我們需要給新建的報表添加一個數據源,右鍵左邊的【數據庫字段】選擇相應的數據源,進行綁定。我這里選擇的是sqlserver數據庫。
 
 
4、輸入數據庫的登錄信息,然后選擇需要綁定的數據庫表,除了綁定數據表之外,還可以綁定sql語句查詢的結果,以及存儲過程和視圖,下面給出綁定數據庫表格,和綁定sql查詢。
1)綁定數據庫表格
 
 
2)點擊連接下面的【添加命令】綁定sql語句。
 
5、綁定數據庫之后在報表左側的【字段管理器】中就會出現該表以及sql查詢結果的的相應表頭字段。
 
6、把相應的字段在報表視圖中進行布局。
 
 
到此水晶報表的模板已經做好了。 注意:頁眉中的userName,courseName,score是可以更改。
 
B模板的顯示
1、首先在窗體上拖一個CrystalReportView控件作為顯示報表模板。
 
2、在form_load事件里面寫如下代碼:
  CrystalReport1 cr = new CrystalReport1();//實例化一個報表模板
 
  this.crystalReportViewer1.ReportSource = cr;//為報表顯示控件設置數據源 
3、運行
 
報表設計點丑,但是你可以根基自己的風格進行排版設計,如字體,大小,顏色等啦。
 
二    CrystalReport分組統計

我們在第一部分已經實現了每個同學成績的報表輸出,接下我們需要對每個同學進行分組統計,求每個同學的平均成績。
1、在左側的【字段資源管理器】中右鍵【組名字段】點擊【插入組】
2、選擇要分組的字段,然后點擊【確定】
 
3、這是在報表的設計器中會自動添加一個【分組】的部分。
4、在分組頭中顯示每組的名稱,然后我們可以在組尾中進行成績平均值的統計。點擊【運行總計字段】【新建】。
5、點擊【確定】會彈出編輯運行總計字段,然后在設置avg的值。
 
6、點擊【確定】后,在左側的【字段資源管理器】中的【運行總計字段】會顯示【avg】。
7、接下來,就可以把這個字段拖到報表設計器上的【組尾】部分中。
8、這下分組統計的報表模板就已經做好了。下面對報表模板進行整理一下,然后進行顯示。
 
 
三    CrystalReport綁定自定義的數據源

我們在第一步,第二步中都是使用sqlserver(數據表,查詢結果等)作為數據源,都是一個二維表,然后通過二維表的表頭去布局報表模板,然后報表在顯示的時候自動連接sqlserver,根據設置獲取數據並顯示,通過這樣的方式我們的對數據的控制權就不夠。而有時候我們需要在內存中對數據進行加工處理,形成一個自己的datable表,然后再綁定到報表上進行顯示。下面我們就演示一下,如何使用內存的datatable表作為水晶報表的數據源。
1、定義一個DataTable數據表,並添加一些數據(作為自定義的數據源)。
代碼如下:
     private DataTable GetCustomDataTable()
        {
            DataTable dt = new System.Data.DataTable();
            dt.Columns.Add("id", typeof(string));
            dt.Columns.Add("userName", typeof(string));
            dt.Rows.Add("430400","tjm");
            dt.Rows.Add("430401", "lw");
            dt.Rows.Add("430402", "tj");
            return dt;
        }
2、定義好數據源之后,我們就需要根據我們自定的數據源建立一個報表模板。通過前面兩步我們都知道,報表模板的設計都需要數據源的字段的,所以我們的添加一個dataset數據集來制作報表模板。
3、然后在這個數據集上定義一個虛擬的表頭就行了,這個虛擬的表頭必須和內存中定義的數據源表頭是一致的,方便我們進行報表的設計。
4、然后在報表的設計器中,添加我們建立的自定義數據源,並進行設計。
 
5、然后在Form_load中為報表綁定數據自定義的數據源
     private void Form1_Load(object sender, EventArgs e)
        {
            CrystalReport2 cr = new CrystalReport2();
            cr.SetDataSource(GetCustomDataTable());//數據源的綁定(DataTable類型)
            this.crystalReportViewer1.ReportSource = cr;
        }
6、點擊運行,結果就是我們自己定義的數據表中的數據。
 
總結

希望自己寫的這個教程,對剛接觸的水晶報表的同學有一些幫助。其中可能會有一些錯誤的地方,歡迎各位指正。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM