1. 概述
1.1 版本
報表伺服器版本 |
---|
11.0 |
1.2 應用場景
單表式主子報表一般資料集會有兩個以上,分別是主表的資料集和子表的資料集,在展現上,一般要求主表以自由格式展現,子表以列表格式展現,為一對多的關係,子報表可能同時存在多個。
單表式主子報表操作比較方便,而且可以進行資料填報,詳情可參見:主從表填報
2. 範例
下面製作一個單表式主子報表作為範例:
該報表的資料分為兩個區域展示,分別為「訂單統計表」和「訂單明細表」。這兩個表格都是展示訂單相關的資料,即它們都針對同一個物件「訂單」,但他們展示的詳細訂單資料完全不同。我們稱「訂單統計表」為主表,稱「訂單明細表」為子表,而這兩個表格構成的報表整體稱為「單表式主子報表」(命名為「訂單資料主子表」)。
2.1 資料準備
建立普通報表,建立兩個資料庫查詢,SQL 查詢語句分別為:
ds1:SELECT * FROM 訂單
ds2:SELECT * FROM 訂單明細
2.2 報表設計
2.2.1 訂單統計表
1)按照下面表格中的說明設計「訂單統計表」樣式:
儲存格 | 操作 |
---|---|
A1~D2 | 合併A1~D2儲存格,寫入標題「訂單統計表」,字號12,字體置中,粗體,左父格為 B3 |
A3,A4,C4,A5,C5,A6,A7,C7 | 依次寫入欄位標題名:訂單編號,訂單日期,發貨日期,客戶編號,客戶名稱,地址,到貨日期,應付金額。字體靠左,左父格為 B3 |
B3~D3 | 合併 B3~D3 儲存格 |
B4,D4,B5,D5,B6~D6,B7,D7 | 合併 B6~D6 ,給這些空白儲存格只新增黑色的外部底框,字體靠左,左父格為 B3 |
注:因為所有資料均依靠 B3 儲存格的「訂單 ID」查詢出來的,所以左父格均為 B3。
給儲存格新增黑色的外部底框的方法如下圖所示:
設計好的「訂單統計表」樣式如下圖所示:
2)將資料集 ds1 中的相關資料列按照標題欄位依次拖入到 B3,B4,D4,B5,D5,B6,B7,D7 儲存格中。
3)分別選中 B4,D4,B7 儲存格,右邊屬性面板選擇「儲存格元素>格式」,設定格式為「日期型 > yyyy-MM-dd」。
4)選中 D7 儲存格,右邊屬性面板選擇「儲存格元素>格式」,設定儲存格格式為「數字 > #0.00」,保留數值小數點後兩位。
2.2.2 訂單明細表
1)按照下面表格中的說明設計「訂單明細表」樣式:
儲存格 | 設定 |
---|---|
A9~E10 | 合併 A9~E10 儲存格,寫入標題「訂單明細表」,字號12,字體置中,粗體 |
A11~E11 | 依次寫入欄位標題名:產品,單價,數量,折扣,銷售額。字體置中 |
A12~D12 | 依次將資料集 ds2 中的資料列:「產品 ID,單價,數量,折扣」 拖入到對應儲存格中。字體置中,設定 A12 儲存格的左父格為 B3 |
E12 | 插入公式B12*C12*(1-D12),計算出銷售額 |
2)設計好的「訂單明細表」樣式如下圖所示:
2.3 設定過濾
透過給 A12 儲存格新增資料過濾條件,建立起資料集 ds1 和 ds2 之間的聯絡。
雙擊 A12 儲存格,彈出資料列對話框,選擇「過濾」。給儲存格新增一個普通條件,將 ds2 的「訂單 ID」欄位與 ds1 的「訂單 ID」欄位進行綁定,實現兩個資料集之間的聯動。
條件可以設定為 ds2 的「訂單 ID」列等於「儲存格 B3」 或者等於「資料列 ds1 訂單ID」。
2.4 設定分頁
為了讓擴展出來的每個「訂單 ID」對應的「訂單統計表」和「訂單明細表」分頁展示,需要設定分頁。
因為一個「訂單 ID」可能對應幾個「產品 ID」,即訂單明細表擴展的資料可能不止一行,所以此時無法設定「行後分頁」,需要在下一頁前設定「行前分頁」。選中 A1 儲存格,右邊屬性面板選擇「儲存格屬性>其他>分頁」,勾選「行前分頁」。
2.5 效果預覽
2.5.1 PC 端
儲存報表,點選「分頁預覽」,效果如下圖所示:
2.5.2 行動端
行動端查看報表的方式請參見 App 快速預覽單張範本。
App 端和 HTML5 端均支援,效果如下圖所示:
3. 範本下載
已完成範本可參見:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\MasterReport\訂單資料主子表.cpt
點選下載範本:訂單資料主子表.cpt