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