[轉]CrystalReport 使用總結

本文章由 yanhuaju9  發表於  http://blog.csdn.net/yanhuaju9/archive/2007/07/02/1674915.aspx

 

水晶報表是一個優秀的報表開發工具,本人在開發通用管理系統的時候,所有報表都使用水晶報表,其簡單、易用和強大的功能令筆者倍加喜愛,現將水晶報表使用手記呈現給大家。

一、在使用自帶的水晶報表時,請註冊,否則只能使用30次

水晶報表註冊碼
註冊號:6707437608
密碼:AAP5GKS0000GDE100DS

二、使用CrystalReportViewer進行預覽

CrystalReportViewer控件允許在應用程序中查看 Crystal Report。ReportSource 屬性用於設置要查看哪個報表。該屬性設置之後,報表顯示在查看器中。報表源可以是ReportDocument、報表文件的路徑,也可以是強類型報表。

1.      打開“工具箱”,並將一個 CrystalReportViewer 拖到窗體上,我們命名爲rptVew。

2.      通過拖放操作將 Windows 窗體查看器調整到希望的大小並將其移動到所需位置。

3.      當運行應用程序時,報表將顯示在查看器中。

三、創建新報表

1.      指向“添加”,單擊“添加新項”。

2.      在“添加新項”對話框中,從“模板”區域選擇 Crystal Report,將報表命名爲rptClient,單擊“打開”。

3.      在 Crystal Report 庫中,選擇下列選項之一:

·         使用報表專家 — 指導您完成報表的創建過程,並將您的選擇添加到 Crystal Report Designer。

·         作爲空白報表 — 打開 Crystal Report Designer。

·         來自於現有的報表 — 創建新報表,它與指定的另一報表設計相同。

注意   Crystal Report 庫包含許多專家,可以指導您完成數個特定類型報表的創建工作。您可能希望使用專家來創建最初的報表,以確定哪種報表構造方法適合您的需要。

4.      單擊“確定”按鈕。

如果選擇使用“報表專家”,便會出現“報表專家”對話框,並帶有數據資源管理器。爲每個文件夾選擇所需數據,完成“報表專家”選項卡界面上的操作,然後單擊“完成”來訪問 Crystal Report Designer 和您的報表

四、是否需要動態設置數據源?

Crystal Reports 通過數據庫驅動程序與數據庫連接。每個驅動程序都被編寫爲可處理特定數據庫類型或數據庫訪問技術。

拉和推模型
爲了向開發人員提供最靈活的數據訪問方法,Crystal Reports 數據庫驅動程序被設計爲可同時提供數據訪問的拉模型和推模型。

拉模型

在拉模型中,驅動程序將連接到數據庫並根據需要將數據“拉”進來。使用這種模型時,與數據庫的連接和爲了獲取數據而執行的 SQL 命令都同時由 Crystal Reports 本身處理,不需要開發人員編寫代碼。如果在運行時無須編寫任何特殊代碼,則使用拉模型。

推模型

相反,推模型需要開發人員編寫代碼以連接到數據庫,執行 SQL 命令以創建與報表中的字段匹配的記錄集或數據集,並且將該對象傳遞給報表。該方法使您可以將連接共享置入應用程序中,並在 Crystal Reports 收到數據之前先將數據篩選出來。

四、從 ADO.NET 數據集製作報表

從數據庫創建數據集對象

1.      在項目中新建一個架構文件:

a.      在解決方案資源管理器中,右擊項目名,指向“添加”,然後單擊“添加新項”。

b.      在“添加新項”對話框的“類別”區域,展開文件夾,然後選擇“數據”。

c.      在“模板”區域選擇“數據集”。

d.      接受默認名稱 Dataset1.xsd。

這就創建了一個新的架構文件 (Dataset1.xsd),以後將用它來生成強類型數據集。該架構文件將顯示在 ADO.NET 數據集設計器中。

2.      指定數據庫位置:

a.      在服務器資源管理器中,右擊“數據連接”並選擇“添加連接”。

b.      在“數據鏈接屬性”對話框中,單擊“提供程序”選項卡,然後選擇一個提供程序(例如 Microsoft OLE DB Provider for SQL Server)。

c.      單擊“連接”選項卡,然後指定您的數據庫所在位置。在所需位置輸入服務器和登錄信息。

d.      單擊“確定”按鈕。

此時,您的數據庫及其表和字段就出現在服務器資源管理器的“數據連接”節點下面。

3.      在解決方案資源管理器中,雙擊 Dataset1.xsd (如果它尚不是活動視圖)。

Dataset1.xsd 現在應顯示在“數據集”選項卡中。

4.      若要爲數據集建立架構,請將需要的表從服務器資源管理器中拖動到 Dataset1.xsd 的“數據集”選項卡上。

5.      單擊“保存 Dataset1.xsd”來保存“Dataset1.xsd”文件。

6.      在“生成”菜單上,單擊“生成”爲項目生成數據集對象。

ADO.NET 數據集對象提供數據的描述,從它可以向 Crystal report 添加表。使用 Crystal Report Designer 中的“數據庫專家”從 ADO.NET 數據集對象添加表。

請在使用“報表專家”創建新報表時調用“數據庫專家”。或者,要從一個已經使用 ADO.NET 建立好的報表中訪問“數據庫專家”,請在 Report Designer 中右擊,指向“數據庫”,然後單擊“添加/刪除數據庫”。

將報表連接到 ADO.NET 數據集對象

1.      在“數據庫專家”中,展開“項目數據”文件夾。

2.      展開“ADO.NET 數據集”文件夾。

3.      選擇所需數據集對象。

例如,如果當時使用的是從項目“WindowsApplication1”的架構文件“Dataset1.xsd”中生成的數據集對象,則應該選擇“WindowsApplication1.Dataset1”。

4.      選擇要向報表中添加的表,和使用其他數據源一樣。  

五、動態改變數據源的代碼

               Dim dsdataSet As New DataSet()

                Dim oRpt As New rptClient()   '已建立的報表rptClient

                請讀者自行填充數據集dsdataSet

                '使用“報表引擎”對象模型將填充的數據集,傳遞給報表

                oRpt.SetDataSource(dsdataSet.Tables(0))

                ' 將帶有數據的報表對象綁定到 Windows 窗體查看器,rptVew(CrystalReportViewer控件)

                rptVew.ReportSource = oRpt

注意   FillDataSet 方法可連接到指定的數據庫,提取數據,然後斷開數據庫連接。如果您希望將數據庫中的多個表添加到報表中,請使用 SQL JOIN 語句將這些表聯接在一起;然後在 FillDataSet 方法中指定一個結果表

六、創建主從報表

在報表中,有許多報表是主從表結構,比如訂單與訂單商品明細,訂單是一個表中的一條記錄,而分錄是另一個表中的多條記錄,兩個表通過一個字段關聯起來,這種報表可利用其分組功能實現,

1.      新建一個工程

2.      往FORM1中添加一個CrystalReportViewer控件

3.      在服務噐資源管理器中連接到SQL SERVER 2000上的Northwind數據庫

4.      添加一個數據集Dataset1,將服務器資源管理器中的Orders和 Order Details加入到數據集中。

5.      添加一個水晶報表,使用報表專家,在項目數據中選擇“ADO.NET數據集”,插入表Orders和 Order Details,“鏈接”中是關聯字段的鏈接,在“字段”中選擇要顯示的主表和明細表的字段,組中選擇分組依據爲Orders表OrdersID字段,總計,圖表,選擇(可進行篩選),樣式(可設置報表標題),可自行設置。設置完後,點擊完成。

6.      在報表設計器中調整需要顯示的字段的位置、寬度等。

7.      在窗口中添加代碼。

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim oRpt As New CrystalReport1()

        Dim dsdataSet As New Dataset1()

        Dim CN As New Data.SqlClient.SqlConnection("data source=PMSERVER;initial catalog=Northwind;user id=sa;password=sa")

        CN.Open()

        Dim daOrders As New Data.SqlClient.SqlDataAdapter("select * from orders", CN)

        daOrders.Fill(dsdataSet, "orders")

        Dim daDetails As New Data.SqlClient.SqlDataAdapter("select * from [Order Details]", CN)

        daDetails.Fill(dsdataSet, "Order Details")

        '使用“報表引擎”對象模型將填充的數據集,傳遞給報表

        oRpt.SetDataSource(dsdataSet)

        CrystalReportViewer1.ReportSource = oRpt

    End Sub

8、運行程序

七、用程序改變報表中text的文本

代碼如下:
                Dim GetTextObject As TextObject

                ' 按名稱獲取 ReportObject,將其轉換爲 TextObject,並返回此對象。

                GetTextObject = orpt.ReportDefinition.ReportObjects.Item("text13")

                GetTextObject.Text = "XXXX系統"

總結:水晶報表具有非常強大的功能,還可進行導出WORD、EXCEL、RTF等文件,還可生成複雜、漂亮圖表,是進行WEB和WINDOWS報表開發的利器。

(此文部分資料來自MSDN) 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1674915

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章