ireport 4.5初級教程之子報表的實現,介紹ireport中子報表的具體實現方法
工具/原料
ireport
方法/步驟
打開ireport後,首先設置數據源,這裡對數據源進行命名為JDBCCONN,設置好之後點擊test可以測試連接是否正確,若是不正確可能有以下幾種原因,
Ø url地址錯誤
Ø 用戶名或者密碼錯誤
Ø 沒有引入連接數據庫所需要的jar包
新建報表後對該報表綁定數據集,如下圖所示,選擇你所需要在報表中顯示的數據所對應的數據庫表。然後選出所需要顯示的表數據。
將通過步驟二所得到的數據添加到報表中來,此時數據會顯示在Fields中。這裡可以根據自己的需要將這些Field拖動到報表中來,根據自己所需要的格式來佈局。
設計字表,在組件面板中找到subreport,將子報表拖到父表中來,
若是子報表存在則選擇該表所存在的位置,若不存在則新建子報表,如圖所示:
為字表顯示數據綁定所需的數據集
將查詢出來的數據添加到字表中的fields中
此處的分組可以設置可不設置,在設計好子表後也可以對所需的數據進行分組操作
設置子報表的名稱,這裡可以看到子表所存在的相對路徑和絕對路徑
子表和父表
子表中新增一個參數,這裡設置為sid,該變量的含義是父表示通過一個參數來查詢所對應的子表。這裡的sid的類型必須和父表中查詢所對應的字段類型相同,不然會出現類型不匹配錯誤。
父表中選中字表,查看子表的屬性,查找parameters選項。新建一個parameter,該參數是和子表交互所傳的參數。上面說過子表中建立的sid參數的數據類型必須和父表中參數的數據類型一樣,主要體現在這裡
設計好子表,點擊preview後首先彈出的是如下圖所示的對話框,這裡就是通過附表索要傳遞的參數,這裡可以通過手動輸入來查看
現在點擊父表的preview,查看如下圖所示,證明參數已經傳遞到了字表中
子報表的設計以及參數的傳遞已經正確執行。
同為比較常用的java報表生成工具,FineReport對子報表的解決方案和實現方法與ireport有所不同,具體實現思路和步驟如下,供ireport使用者借鑑:
對於主子報表,FineReport主要有兩種實現方法:
表單式主子表
1. 描述
單表式主子報表特點是用單個報表實現主子表的業務邏輯。一般包含多個數據集,通常由自由格式部分及列表格式部分,且為一對多,父與子的關係,如下圖上方為訂單信息,下方這個訂單的明細:
這樣的主子報表製作比較方便,且可以用於填報,因此稱之為表單式主子報表。
2. 示例
2.1 打開報表
打開報表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\FreeReport\Free.cpt。在該報表基礎上來實現表單式主子表。
2.2 新增數據源
新增數據集ds2 ,SQL語句為SELECT * FROM [訂單明細]。
2.3 表樣設計
在原報表基礎上,添加子表區域:
2.4 綁定數據列
將子表字段拖入對應單元格內,並作相應的設置。
單元格A9輸入公式:=&B9,左父格為B9,給B9單元格擴展出來的數據編號;
單元格F9輸入公式:=C9*D9*(1-E9),表示求產品的金額;
給每個訂單進行合計,A10單元格設置父格為C2,並在F10中輸入公式:=sum(F9)。
2.5 建立主子表的關聯
主子表有著一個相同的數據列:訂單ID,可通過過濾將兩個表中的訂單ID關聯起來,雙擊B9增加過濾條件:訂單ID等於'C2':
2.6 設置分頁
此時主子表便製作好了,為了使報表可讀性更強,我們設置分頁,使得每頁顯示一個訂單信息。右擊A10單元格,選擇其他屬性>行後分頁。
3. 保存與預覽
保存模板。點擊設計器中的分頁預覽,效果如上。
嵌入式主子表
1. 描述
嵌入式主子報表特點是在單元格中嵌入獨立的報表模板,嵌入的模板稱為子報表,嵌入子報表後的整體稱為主報表。
各子報表間格式可以不對齊,子表與主表的格式也可以不對齊,子報表能夠獲取主表中的值。如下圖員工銷售一覽表:
2. 示例
2.1 製作主報表
如下圖設計主表:
添加參數
在主表中定義一個報表參數,參數名為銷售員,通過參數查詢某一個銷售員的個人信息及訂單信息。
使用默認的參數界面,銷售員參數控件選擇下拉框,實際值為僱員表中的僱員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},表樣為:
在主表中插入子表1
右擊主表B3單元格,單元格元素>插入子報表,彈出編輯子報表對話框,選擇子表1所在路徑;
添加參數ID(子表中的參數名稱),值使用公式$銷售員,將主表的銷售員參數值傳遞給子表1的ID參數,如下圖設置:
2.3 添加相同參數的子報表
子報表sub_2.cpt說明
子報表2:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\MasterReport\sub_2.cpt。
該子表中通過參數“銷售員”查詢出對應銷售員的訂單信息。SQL語句為:SELECT * FROM 訂單 where 僱員ID = ${銷售員},表樣為:
在主表中插入子表2
右擊主報表D5單元格,單元格元素>插入子報表,彈出編輯子報表對話框,選擇子表2所在路徑;
由於子表2的參數名與主表中的參數名相同,這時可以不設置傳遞參數,直接選擇繼承報表的參數。
3. 保存與預覽
保存模板,點擊設計器中的分頁預覽,效果如上。