摘要:數據庫
提供一種方案,使分頁瀏覽的報表每頁顯示固定條數記錄,最後一頁記錄條數不足的,用空行補齊。設計模式
示例:spa
記錄共7條,每頁顯示5條記錄: 設計
下載代碼(vs2008,須要安裝AdventureWorks數據庫)orm
下載代碼(vs2008,不須要數據庫支持)blog
下載代碼(僅rdlc報表定義文件)get
原理:it
因爲表的分組包含「在起始處分頁」和」在結束處分頁」的功能,因此咱們考慮先將數據分紅若干個記錄條數爲N的組,table
再啓用「在結束處分頁」的功能。原理
那麼,如何分組呢?考慮記錄的下標爲 0,1,2,3... 的天然數序列,用下標除以N(設爲3),獲得如下數列:
0 /3 取整:0
1 /3 取整:0
2 /3 取整:0
3 /3 取整:1
4 /3 取整:1
5 /3 取整:1
6 /3 取整:2
因此,咱們能夠如下標除以3的商的整數值對數據進行分組,則每一個分組包含3條數據。當記錄條數不能被3整除時,最後一個分組會不足3。分組表達式爲 =Int((RowNumber(Nothing) - 1) / N)。
另外一個須要考慮的問題是,最後一個分組的記錄條數可能不足N,怎樣以空白行補齊它呢?考慮TableRow.Visibility.Hidden屬性,可經過表達式設置它的狀態。爲此,咱們在詳細信息組內額外添加N-1行,若是檢查到當前是記錄的最後一組最後一條而且該組記錄條數不足N時,將Hidden設爲Flase;其它狀況爲True。
表達式爲=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() <= r,False,True)。其中r從1開始遞增。
實現:
1.新建WinForm項目,用報表嚮導添加一張報表,數據源爲AdventureWorksDataSet的Employee數據庫表,調整詳細信息(這裏只選擇了表內前面7條數據):
2.(如下都是在報表的設計模式中)在表內添加組,分組表達式爲 =Int((RowNumber(Nothing) - 1) / 3),取消包括組頭和包括組尾,勾選在結尾處分頁:
3.連續插入兩行:
4.選擇插入的第一行(TableRow3),在Visibility的Hidden屬性下選擇「表達式」,在打開的文本框內填入
=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() <= 1, False, True);同理,在插入的第二行(TableRow4)同位置填入
=IIf(RowNumber(Nothing) = CountRows("table1") AndAlso CountRows() <= 2, False, True):
5.運行程序,能夠看到前兩頁分別只有3條記錄,最後一頁1條,空白處用空行補齊了:
注意:
若是要在數據集記錄條數爲0的時候也達到這個效果,只能在數據傳遞到報表以前預處理,添加一行空記錄。