UReport2教學(xué)視頻http://pan.baidu.com/s/1boWTxF5,密碼:98hj
選中任意一個包含數(shù)據(jù)集屬性的單元格,在屬性面板上可以看到它有個名為“補充空白行”的屬性,默認(rèn)該屬性處于關(guān)閉狀態(tài),當(dāng)我們將其打開后,就需要輸入具體的“數(shù)據(jù)行倍數(shù)”,如下圖所示:
在上圖中,一旦我們將某個包含數(shù)據(jù)集的單元格的補充空白行屬性打開,并設(shè)置了具體的數(shù)據(jù)行倍數(shù),那么報表在計算當(dāng)前單元格對應(yīng)的數(shù)據(jù)時,會根據(jù)這里設(shè)置的具體倍數(shù)來決定是否填充空白行,以及填充多少行空白行。比如當(dāng)前單元格對應(yīng)的數(shù)據(jù)集屬性,在報表計算后共有3條數(shù)據(jù),而我們又將該單元格補充空白行屬性打開,并設(shè)置了數(shù)據(jù)行倍數(shù)為5,那么引擎就會拿當(dāng)前數(shù)據(jù)集計算后的條數(shù),也就是3 mod 數(shù)據(jù)行倍數(shù)值5,其結(jié)果是2,那么引擎將在這個單元格展開后的最后一行添加兩行空白行(如果當(dāng)前單元格展開后的條數(shù)是10,因為10 mod 5等于0,那么引擎將不添加空白行)。
對于添加的空白行,引擎將根據(jù)當(dāng)前單元格所在行對應(yīng)的每一列中單元格的樣式來設(shè)置空白行中每列每個單元格的樣式,也就是說,如果當(dāng)前單元格所在行每列對應(yīng)的單元格都沒有邊框線,那么添加的空白行每列中每個單元格都沒有邊框線,反之亦然。
看一個例子,在下圖中,報表模版A1單元格的填充空白行屬性打開,數(shù)據(jù)行倍數(shù)是5,如下圖所示:
在A1單元格對應(yīng)的數(shù)據(jù)集屬性中,報表運行時數(shù)據(jù)共6條,6 mod 5=1,所以引擎還會在最后一個A1單元格所在行后添加4行空白行(因為要求數(shù)據(jù)行是5的倍數(shù),所以實際運行會加四行空白行),運行后效果如下圖所示:
了解這些內(nèi)容后,再配合之前介紹的條件屬性以及行類型,就可以做出一些復(fù)雜的樣式及特殊分頁要求的主從明細型報表。
下圖中是一個典型的主從明細型報表,在這個報表中,我們就將行類型,填充空白行,條件屬性等功能進行結(jié)合使用,如下圖所示:
在B4單元格我們將其補充空白行屬性打開,并設(shè)置數(shù)據(jù)行倍數(shù)為10,同時選中B4單元格,點擊條件屬性的配置條件按鈕,可以看到我們也為其配置了一個條件,如下圖所示:
在這里,我們添加了一個條件表達式,那就是&B4 % 10==0是否成立,如果成立,那么就在這個單元格所在行后進行分頁。
關(guān)于&B4&B4是UReport2中提供的一個表達式,用來獲取對應(yīng)單元格展開后的行號,這里&B4 % 10就是拿B4單元格展開后的行號值與10除求余,看余數(shù)是否等于0,如果是就在這個單元格所在行后進行分頁。
運行后的報表如下圖的所示:
點擊打印,可以看到如下圖所示的打印預(yù)覽效果:
如果我們將B4所在行所有單元格邊框線去掉,那么生成的效果就是下面的樣子:
在這個例子當(dāng)中,報表打印輸出時之所以會出現(xiàn)上圖所示效果,是因為當(dāng)我們?yōu)锽4單元格定義了填充空白行的數(shù)據(jù)倍數(shù)為10的時候,那么對于每個明細下的B4單元格展開后的數(shù)據(jù)量行數(shù)都會是10的倍數(shù),如果不是則會自動填充空白行以達到10的倍數(shù)。同時對于B4單元格我們又為其設(shè)置了條件屬性,條件是&B4 % 10 =0,也就是判斷B4單元格展開后當(dāng)前行號整除10的余數(shù)是不是0,如果是就在B4單元格所在行后進行分頁。通過上述關(guān)鍵的兩個設(shè)置就實現(xiàn)了這種每頁行數(shù)一樣(帶有填充空白行)效果主從明細類報表。
關(guān)于分頁需要注意的是,在實現(xiàn)這種類型報表時,在采用“自動”類型的分頁方式時,要保證每一頁的行對應(yīng)的所有行高,不要超過當(dāng)前頁可用高度;當(dāng)采用“固定行數(shù)”類型的分頁方式時,要保證固定行數(shù)分頁的行數(shù)值,與條件屬性中對應(yīng)的分頁配置匹配。
更多建議: