1. 概述
1.1 版本
報表伺服器版本 |
---|
11.0 |
1.2 問題描述
文檔 每頁顯示固定行數 中,透過「條件屬性>行後分頁」實現了每頁顯示固定行數,但在其基礎上實現 頁內合計 時,使用「重複結尾行」設定「頁合計」,會出現頁合計重複出現的問題。如下圖所示:
那麼要如何實現固定行數報表中,頁合計、組合計、總合計正常顯示呢?
1.3 解決思路
利用進階分組寫分組公式,在條件屬性中設定「行前分頁」,再進行合計。
2. 範例
2.1 開啟範本
開啟範本:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Pagination\按組分頁.cpt
點選下載範本:按組分頁.cpt
2.2 設定分組
範本 按組分頁.cpt 中一個組的資料是一個「貨主地區」的全部資料,這裏將其每個組的資料再分為每 5 筆資料為一組。
1)在報表最左側插入一欄,選中 A5 儲存格,拖入資料列「訂單 ID」,「儲存格屬性>擴展」中設定擴展方向為「縱向擴展」,左父格為 B4 儲存格。如下圖所示:
3)設定 A5 儲存格的「儲存格元素>資料設定」為「分組>進階」,點選「自訂」,選擇「公式分組」,顯示模式為「普通分組」,自訂值輸入公式:CEILING(INARRAY($$$,ds1.group(訂單ID))/5) 。即每 5 筆資料為 1 組,組序號從 1 開始。
公式說明如下表所示:
公式 | 說明 |
---|---|
ds1.group(訂單ID) | 選出資料集 ds1 中訂單 ID 的資料並分組 |
INARRAY($$$,ds1.group(訂單ID))/5 | 傳回當前值在陣列中的位置,再除以 5 |
CEILING() | 將參數沿絕對值增大的方向,舍入為最接近的整數 |
步驟如下圖所示:
3)修改 B5 儲存格的左父格為 A5 儲存格(即預設)。如下圖所示:
2.3 匯總計算
針對「應付金額」資料列作合計,下面分別介紹三種合計設定。
2.3.1 頁合計
「貨主地區」下每一小組訂單記錄就為一頁,頁合計即對每一小組資料進行匯總。
1)合併 B6~D6 儲存格,插入正文:「頁合計:」,左父格為 A5,不擴展,如下圖所示:
2)選擇 E6 儲存格,選擇「儲存格元素>插入公式」,公式為:sum(E5)。如下圖所示:
2.3.2 組合計
對每個「貨主地區」的所有資料進行匯總。
1)合併 B7~D7 儲存格,插入正文:「組合計:」,左父格為 B4,不擴展,如下圖所示:
2)在 E7 儲存格,選擇「儲存格元素>插入公式」,公式為:插入公式sum(E5)。如下圖所示:
2.3.3 總合計
所有資料都擴展完後進行總計。
合併 B8~D8 儲存格,插入正文:「總合計:」,E8 儲存格選擇「儲存格元素>插入公式」,公式為:sum(E5)。如下圖所示:
2.4 設定分頁
此時預覽範本,每一小組還是顯示在一頁上面,因此需要設定分頁。
選中 A5 儲存格選擇「條件屬性」,新增屬性「分頁」,選擇「行前分頁」,條件類型選擇「普通」,運算子選擇「不等於整數型態 1」,即每個地區下從小組序號為 2 的小組開始「行前分頁」,如下圖所示:
2.5 隱藏列
設定完成後隱藏 A 列。
2.6 效果預覽
2.6.1 PC 端
儲存範本,點選「分頁預覽」,效果如下圖所示:
2.6.2 行動端
App 端和 HTML5 端均支援,效果如下圖所示:
2.7 補充:設定頁碼
問題描述
上述已完成範本,以貨主地區來進行分頁,每頁 5 筆資料,此時若想要知道這是某個地區的第幾頁和這個地區共有幾頁,那麼該如何生實現呢?
解決方案
1)在報表下方插入兩個表示頁碼的公式:D10 儲存格為{A5},表示某地區當前頁數;E10 儲存格為"/" + count(A5),表示獲取該地區的頁碼有幾頁,"/" 起分隔符的作用。
2)設定 D10、E10 儲存格的左父格均為「貨主地區」所在的 B4 儲存格,並將第 10 行設定為重複結尾行。
3)由於重複結尾行的影響,需將總合計所在 B8、E8 儲存格的左父格設定為 A11,並且在 A11 儲存格中新增一個空格,使第 11 行為「空白編輯行」。
如下圖所示:
4)儲存報表,點選「分頁預覽」,即可看到當前地區的頁碼數:
注:也可以透過頁碼公式進行頁碼的顯示,可參考: 根據分組設定頁碼
3. 範本下載
已完成範本可參見:%FR_HOME%\webroot\WEB-INF\reportlets\docte\Advanced\Pagination\分組分頁合計.cpt
點選下載範本:每頁顯示動態行數.cpt