[CrystalReports]執行期間~動態改變群組

  • 3994
  • 0
  • 2010-11-01

1 . 環境 : XP SP3 + VS2005 + 內建 CrystalReports

2 . 需求 : 當程式在執行期間,報表以顯示預設的群組欄位分類顯示,而使用者希望能夠

自定要分類顯示的群組項目。

1 . 環境 : XP SP3 + VS2005 + 內建 CrystalReports

2 . 需求 : 當程式在執行期間,報表以顯示預設的群組欄位分類顯示,而使用者希望能夠

                 自定要分類顯示的群組項目。

3 . 範例資料 : VS2005 CrystalReports 內建的範例資料庫 xtreme.mdb,預設位置

C:\Program Files\Microsoft Visual Studio 8\Crystal Reports\Samples\zh-cht\Databases

範例資料表 : xtreme.mdb 內的 [客戶] 資料表。(參考圖一)

因其只是範例,故在報表內將主要抓取欄位 [國家],[城市],[地區]

做為範例顯示。

(圖一)

4 . 報表設計階段畫面 : 在報表設計階段畫面--> 欄位總管窗格 -->資料庫欄位  --> 右鍵 --> 資料庫專家

4-1 . 將資料庫 xtreme.mdb 內的 [客戶] 資料表載入至報表內。(參考圖二)

(圖二)

在資料庫專家左方 [可用的資料來源] --> 建立新連結 --> Access/Excel(DAO) --> 選取Acess 資料檔案 -->

4-2 . 將其內的客戶資料表加入右方 [選取的資料表]。(參考圖三)

(圖三)

4-3 . 規劃並設計報表畫面(參考圖四)

4-3.1 . 建立文字欄位並設定標題。

4-3.2 . 將要顯示的資料欄位拉到細項區塊。

(圖四)

4-3.3 設定預設的群組欄位 : 欄位總管窗格--> 右鍵 --> 插入群組 -->選取作為預設的群組欄位(參考圖五)

(圖五)

5 . UI畫面和程式碼

5-1 . UI畫面,主視窗 Form2 ,主要利用 ComBobox 選擇要做為群組分類的欄位 (參考圖六),而報表顯示在 Form1

(圖六)

5-2 . 程式碼


'加入 CrystalReports.Engine 參考
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Collections

 

顯示報表


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            '建立報表的執行個體
            Dim oRpt As CrystalReport1 = Form1.CrystalReport11

            If ComboBox1.SelectedIndex > 0 Then '判斷所選取的群組項目

                Dim FieldDef As FieldDefinition '宣告報表欄位定義

                '設定 FileDef 所代表的在資料庫內的欄位 
                '抓取ComBobox1.Text 在符號 [ - ] 之後的字串
                FieldDef = oRpt.Database.Tables.Item(0).Fields.Item(Strings.Split(ComboBox1.Text, "-")(1))

               '設定報表群組的欄位定義 
                oRpt.DataDefinition.Groups.Item(0).ConditionField = FieldDef

            End If

            If Form1.Visible = True Then
                '以顯示報表故只要重新整理
                Form1.CrystalReportViewer1.RefreshReport()
                Form1.Focus()
                Form1.Select()
            Else
                '未顯示報表,重新載入報表
                Form1.CrystalReportViewer1.ReportSource = oRpt
                Form1.Show()
                Form1.Select()
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

    End Sub

6 . 執行畫面(參考圖七,圖八)

(圖七)

(圖八)

7 . 以上請多參考

8 . 預告下一篇 將會介紹 [ 固定欄位數 ] ,執行期間~動態改變顯示在報表上的資料庫欄位,由使用者決定要顯示在報表上的資料庫欄位

 

[CrystalReports] 公式欄位~固定欄位數,執行期間~動態改變顯示資料庫欄位


==================================================== 
有些事就該把它當作一種回憶...
一種放在記憶中任隨時間慢慢的侵蝕慢慢的隨風漂泊........
 ===================================================
~~~請支持 點部落 格,點點下方的廣告吧~~~