環境 : VS2005 + DataSet + 內建CrystalReports
需求 : 在報表顯示時,要求每一頁顯示的資料數不可超過20筆。
公式 :
IIF (OnLastRecord ,false ,if RecordNumber mod 20 = 0 then true else false );
環境 : VS2005 + DataSet + 內建CrystalReports
需求 : 在報表顯示時,要求每一頁顯示的資料數不可超過20筆。
1 . 建立範例資料 :
1-1 . 在專案裡 --> 方案總管窗格 --> 新增項目 --> 加入 --> 資料集 (DataSet1) ,參考(圖一)
1-2 . 左鍵點2下剛剛新增加入的 DataSet1,
在其內 工具箱窗格 -->拉一個 DataTable --> 在DataTable1 右鍵加入 --> 資料行 (參考圖二)
(圖二)
1-3 . 建立資料 :
在 Form_Load 事件加入以下
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim TempStr(2) As String
Dim DS As New DataSet1
Dim TempTable As Data.DataTable = DS.Tables(0)
For ii As Integer = 0 To 45
TempStr(0) = "資料數 : " & ii
TempStr(1) = "欄位2"
TempStr(2) = "欄位3"
TempTable.Rows.Add(TempStr)
Next
Me.CrystalReport11.SetDataSource(DS)
Me.CrystalReportViewer1.ReportSource = Me.CrystalReport11
End Sub
End Class
2 . 報表設計階段 :
2-1 . 將 DataSet1 匯入報表 : 欄位總管窗格 --> 資料庫欄位 --> 資料庫專家 (參考圖三)
專案資料 --> ADO.NET資料集 --> CrystalReportsApp... --> DataSet1 ,加入至右方(選取的資料表)
2-2 . 報表欄位設計畫面 : (參考圖四)
(圖四)
2-3 . 設定分頁公式 : 在細項區塊 --> 右鍵 --> 區段專家,對區段專家設定視窗右方 設定, 在之後分頁(F)
撰寫 CrystalReport 公式 (參考圖五,圖六)
(圖五)
(圖六)
2-4 . 公式解說 :
CrystalReport 函數運用 : 函數分類 --> 列印狀態 -->
OnLastRecord : 判斷目前資料是否顯示到最後一筆,並回傳 True 或是 False 。
RecordNumber : 記錄目前顯示的資料數,由 1~~N。
函數分類 --> 程式捷徑 -->
IIF (運算式,當運算為 True ,當運算式為 False )
函數分類 --> 運算子 -->
mod :
公式 :
IIF (OnLastRecord ,false ,if RecordNumber mod 20 = 0 then true else false );
判斷當 OnLastRecord = True ,表示最後一筆資料,就停止分頁。
判斷當 OnLastRecord = False ,就去計算 目前資料數 RecordNumber mod 20 是否等於 0 。
等於 0 表示繼續分頁,不等於 0 表示不分頁。
3 . 執行結果 : (參考圖七)
4 . 以上請多指導 :
IIF (OnLastRecord ,false ,if RecordNumber mod 20 = 0 then true else false );
====================================================
有些事就該把它當作一種回憶...