RDLC報表:每頁顯示N條記錄

摘要:數據庫

  提供一種方案,使分頁瀏覽的報表每頁顯示固定條數記錄,最後一頁記錄條數不足的,用空行補齊。設計模式

示例: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的時候也達到這個效果,只能在數據傳遞到報表以前預處理,添加一行空記錄。

相關文章
相關標籤/搜索