1. 概述
1.1 視頻學習
在線視頻學習請查看:主子報表 。
注:文檔與視頻中有出入的地方以文檔爲準。
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,B4,D4,B5,D5,B6~D6,B7,D7 | 合并 B3~D3 單元格,合并 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 端和 HTML5 端均支持,效果如下圖所示:
3. 模板下載
已完成模板可參見:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\MasterReport\訂單數據主子表.cpt
點擊下載模板:訂單數據主子表.cpt