摘要:[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 . 以上請多指導 :
====================================================
有些事就該把它當作一種回憶...