FacebookTwitterLineHatena

報表應用中,常常可以看到,某個報表包含了一片或者多片區域,每一片區域都針對同一個對象,但是各區域又各自展示不同的主題,像這樣的報表我們稱之為主子報表。其中每一小片區域稱為子報表,子報表構成的報表整體稱為主報表。

對於主子報表,FineReport主要有兩種實現方法,即表單式主子表嵌入式主子表

表單式主子表

單表式主子報表特點是用單個報表實現主子表的業務邏輯。一般包含多個數據集,通常由自由格式部分及列表格式部分,且為一對多,父與子的關係,如下圖上方為訂單信息,下方這個訂單的明細:
子報表

這樣的主子報表製作比較方便,且可以用於填報,因此稱之為表單式主子報表。

表單式主子表製作示例

1、 打開報表

打開報表%FR_HOME%WebReportWEB-INFreportletsdocPrimaryFreeReportFree.cpt。在該報表基礎上來實現表單式主子表。

2、 新增數據源

新增數據集ds2 ,SQL語句為SELECT * FROM [訂單明細]。

3、 表樣設計

在原報表基礎上,添加子表區域:
子報表

4、 綁定數據列

將子表欄位拖入對應單元格內,並作相應的設置。
單元格 數據集 數據列 屬性
B9 ds2 產品ID 列表,從上到下擴展,居中,左父格為:C2,其餘默認
C9 ds2 單價 從上到下擴展,居中,其餘默認
D9 ds2 數量 從左到右擴展,居中,其餘默認
E9 ds2 折扣 從左到右擴展,居中,其餘默認

單元格A9輸入公式:=&B9,左父格為B9,給B9單元格擴展出來的數據編號;

單元格F9輸入公式:=C9*D9*(1-E9),表示求產品的金額;

給每個訂單進行合計,A10單元格設置父格為C2,並在F10中輸入公式:=sum(F9)。

5、 建立主子表的關聯

主子表有著一個相同的數據列:訂單ID,可通過過濾將兩個表中的訂單ID關聯起來,雙擊B9增加過濾條件:訂單ID等於’C2’。

6、 設置分頁

此時主子表便製作好了,為了使報表可讀性更強,我們設置分頁,使得每頁顯示一個訂單信息。右擊A10單元格,選擇其他屬性>行後分頁。

保存模板。點擊設計器中的分頁預覽,效果如上。

已完成的模板,可參見%FR_HOME%WebReportWEB-INFreportletsdocAdvancedMasterReportMaster.cpt

嵌入式主子表

嵌入式主子報表特點是在單元格中嵌入獨立的報表模板,嵌入的模板稱為子報表,嵌入子報表後的整體稱為主報表。
各子報表間格式可以不對齊,子表與主表的格式也可以不對齊,子報表能夠獲取主表中的值。如下圖員工銷售一覽表:
子報表

嵌入式主子表製作示例

1 製作主報表

如下圖設計主表:
子報表

添加參數

在主表中定義一個報表參數,參數名為銷售員,通過參數查詢某一個銷售員的個人信息及訂單信息。

使用默認的參數界面,銷售員參數控制項選擇下拉框,實際值為僱員表中的僱員ID,顯示值為對應的姓名。具體可查看參數定義與參數面板製作章節。

2 添加不同參數的子報表

子報表sub_1.cpt說明

子報表1:%FR_HOME%WebReportWEB-INFreportletsdocAdvancedMasterReportsub_1.cpt。
該子表中通過參數「ID」查詢出對應銷售員的個人信息。SQL語句為:SELECT * FROM 僱員 where 僱員ID = ${ID},表樣為:
子報表

在主表中插入子表1

右擊主表B3單元格,單元格元素>插入子報表,彈出編輯子報表對話框,選擇子表1所在路徑;

添加參數ID(子表中的參數名稱),值使用公式$銷售員,將主表的銷售員參數值傳遞給子表1的ID參數。

3 添加相同參數的子報表

子報表sub_2.cpt說明

子報表2:%FR_HOME%WebReportWEB-INFreportletsdocAdvancedMasterReportsub_2.cpt。

該子表中通過參數「銷售員」查詢出對應銷售員的訂單信息。SQL語句為:SELECT * FROM 訂單 where 僱員ID = ${銷售員},表樣為:
子報表

在主表中插入子表2

右擊主報表D5單元格,單元格元素>插入子報表,彈出編輯子報表對話框,選擇子表2所在路徑;

由於子表2的參數名與主表中的參數名相同,這時可以不設置傳遞參數,直接選擇繼承報表的參數。

保存模板,點擊設計器中的分頁預覽。

已完成模板,可參考:%FR_HOME%WebReportWEB-INFreportletsdocAdvancedMasterReportsuper.cpt。

喜歡這篇文章嗎?歡迎分享按讚,給予我們支持和鼓勵!

熱門文章推薦

立即試用,可獲取更多 報表範本和案例

免費試用