ireport教程之子報表的實現?

ireport教程之子報表的實現,介紹ireport中子報表的具體實現方法

工具/原料

ireport

方法/步驟

1. 打開ireport後,首先設置數據源,這裡對數據源進行命名為JDBCCONN,設置好之後點擊test可以測試連接是否正確,若是不正確可能有以下幾種原因,

Ø url地址錯誤

Ø 用戶名或者密碼錯誤

Ø 沒有引入連接數據庫所需要的jar包

ireport教程之子報表的實現

2. 新建報表後對該報表綁定數據集,如下圖所示,選擇你所需要在報表中顯示的數據所對應的數據庫表。然後選出所需要顯示的表數據。

ireport教程之子報表的實現

3. 將通過步驟二所得到的數據添加到報表中來,此時數據會顯示在Fields中。這裡可以根據自己的需要將這些Field拖動到報表中來,根據自己所需要的格式來佈局。

ireport教程之子報表的實現

4. 設計字表,在組件面板中找到subreport,將子報表拖到父表中來,

ireport教程之子報表的實現

5. 若是子報表存在則選擇該表所存在的位置,若不存在則新建子報表,如圖所示:

ireport教程之子報表的實現

6. 為字表顯示數據綁定所需的數據集

ireport教程之子報表的實現

7. 將查詢出來的數據添加到字表中的fields中。

ireport教程之子報表的實現

8. 此處的分組可以設置可不設置,在設計好子表後也可以對所需的數據進行分組操作。

ireport教程之子報表的實現

9. 設置子報表的名稱,這裡可以看到子表所存在的相對路徑和絕對路徑。

ireport教程之子報表的實現

10. 子表和父表

ireport教程之子報表的實現

11. 子表中新增一個參數,這裡設置為sid,該變量的含義是父表示通過一個參數來查詢所對應的子表。這裡的sid的類型必須和父表中查詢所對應的字段類型相同,不然會出現類型不匹配錯誤。

ireport教程之子報表的實現

12. 父表中選中字表,查看子表的屬性,查找parameters選項。新建一個parameter,該參數是和子表交互所傳的參數。上面說過子表中建立的sid參數的數據類型必須和父表中參數的數據類型一樣,主要體現在這裡。

ireport教程之子報表的實現

13. 設計好子表,點擊preview後首先彈出的是如下圖所示的對話框,這裡就是通過附表索要傳遞的參數,這裡可以通過手動輸入來查看。

ireport教程之子報表的實現

14. 現在點擊父表的preview,查看如下圖所示,證明參數已經傳遞到了字表中。

子報表的設計以及參數的傳遞已經正確執行。

ireport教程之子報表的實現

同為比較常用的java報表生成工具,FineReport對子報表的解決方案和實現方法與ireport有所不同,具體實現思路和步驟如下,供ireport使用者借鑑:

表單式主子表

1. 描述

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

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

ireport教程之子報表的實現

2. 示例

2.1 打開報表

打開報表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\FreeReport\Free.cpt。在該報表基礎上來實現表單式主子表。

2.2 新增數據源

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

2.3 表樣設計

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

ireport教程之子報表的實現

2.4 綁定數據列

將子表字段拖入對應單元格內,並作相應的設置。

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

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

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

ireport教程之子報表的實現

2.5 建立主子表的關聯

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

ireport教程之子報表的實現

2.6 設置分頁

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

3. 保存與預覽

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

嵌入式主子表

1. 描述

嵌入式主子報表特點是在單元格中嵌入獨立的報表模板,嵌入的模板稱為子報表,嵌入子報表後的整體稱為主報表。

各子報表間格式可以不對齊,子表與主表的格式也可以不對齊,子報表能夠獲取主表中的值。如下圖員工銷售一覽表:

ireport教程之子報表的實現

2. 示例

2.1 製作主報表

如下圖設計主表:

ireport教程之子報表的實現

添加參數

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

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

2.2 添加不同參數的子報表

子報表sub_1.cpt說明

子報表1:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\MasterReport\sub_1.cpt。

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

ireport教程之子報表的實現

在主表中插入子表1

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

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

ireport教程之子報表的實現

2.3 添加相同參數的子報表

子報表sub_2.cpt說明

子報表2:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\MasterReport\sub_2.cpt。

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

ireport教程之子報表的實現

在主表中插入子表2

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

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

ireport教程之子報表的實現

3. 保存與預覽

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

相關問題答案