[CrystalReports] 執行期間~利用程式傳遞公式~動態篩選資料

  • 10284
  • 0
  • 2010-07-23

摘要:[CrystalReports] 執行期間~利用程式傳遞公式~動態篩選資料
在此篇 (執行期間~利用程式傳遞公式~動態篩選資料),適合應用在多欄位篩選且
篩選條件較為單一或是直接。

序 : 之前已發過

 [CrystalReport] 利用 參數欄位,篩選要顯示的報表資訊(完成)

        在那篇主要是應用在,當單一欄位篩選條件為複數且條件的參數值,是離散值。

        就是指每次參數的數量皆為不固定,且非範圍或是連續的值。

        在此篇 (執行期間~利用程式傳遞公式~動態篩選資料),適合應用在多欄位篩選且

        篩選條件較為單一或是直接。請直接參考以下

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 . 報表設計階段畫面 : 在報表設計階段畫面--> 欄位總管窗格 -->資料庫欄位  --> 右鍵 --> 資料庫專家

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

(圖二)

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

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

(圖三)

規劃並設計報表畫面(參考圖四)

(圖四)

5 . 程式介面UI : Form2 做為主視窗 (參考圖五),Form1 顯示預覽報表 。

(圖五)

6 . 內部程式碼 :

引用參考 :

 


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

這次主要練習利用 2種方法來達到執行階段動態篩選資料。

方法一 : 針對 報表的執行個體 ,設定篩選的公式。

 


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        '建立報表的執行個體
        Dim oRpt As New CrystalReport1

        '設定其資料錄篩選公式字串
        oRpt.RecordSelectionFormula = "{客戶.去年業績}" & TextBox2.Text & " and {客戶.國家}=""" & TextBox1.Text & """
        '重新載入報表
        Form1.CrystalReportViewer1.ReportSource = oRpt

        '顯示並預覽篩選結果
        If Form1.Visible = True Then
            Form1.Focus()
            Form1.Select()
        Else
            Form1.Show()
            Form1.Select()
        End If

    End Sub

方法二 : 針對 報表顯示控制項 ,設定篩選的公式。

 


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        '針對報表執行個體設定資料錄選取公式
        '建立報表的執行個體
        Dim oRpt As New CrystalReport1

        '針對報表顯示控制項設定資料錄選取公式
        '設定其資料錄篩選公式字串
        Form1.CrystalReportViewer1.SelectionFormula = "{客戶.去年業績}" & TextBox2.Text & " and {客戶.國家}=""" & TextBox1.Text & """

        '重新載入報表
        Form1.CrystalReportViewer1.ReportSource = oRpt
        '重新整理報表()
        Form1.CrystalReportViewer1.RefreshReport()

        '顯示並預覽篩選結果
        If Form1.Visible = True Then
            Form1.Focus()
            Form1.Select()
        Else
            Form1.Show()
            Form1.Select()
        End If

    End Sub

完整顯示報表資料

 


    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        '建立一個報表的新執行個體,
        '將報表的執行個體的篩選公式回復預設清空()
        Dim oRpt As New CrystalReport1

        '將報表顯示控制項篩選公式清空
        Form1.CrystalReportViewer1.SelectionFormula = ""

        '重新載入報表
        Form1.CrystalReportViewer1.ReportSource = oRpt

        '顯示並預覽篩選結果
        If Form1.Visible = True Then
            Form1.Focus()
            Form1.Select()
        Else
            Form1.Show()
            Form1.Select()
        End If

    End Sub

7 . 預覽結果 : (參考圖六)

完整資料顯示

設定條件 : {客戶.去年業績} < 100

設定條件 : {客戶.去年業績} < 100,{客戶.國家} =美國

8 . 以上請多指導 :


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