JasperReports版本為4.0.1。
前言
因為本文的範例,有使用到Subreport,
所以如果閣下還不清楚如何製作Subreport,
請先閱讀如何在JasperReports中製作Subreport。
本文介紹分成二部份,分別是Java程式碼和iReport設計畫面。
報表預覽
在看程式碼和iReport設計畫面時,
先來看一下預期會產生的報表長相。
Java
首先介紹Java程式碼。
進行分組加總時,不須要額外的Java程式碼,
因此本文中的程式碼,
與如何在JasperReports中製作Subreport中的程式碼大致相同,
最大的差別是為了顯示分組加總的效果,
所以變動了產生dummy records的程式碼,如下:
完整程式碼
iReport
第二部份是iReport設計畫面。
因為先前在如何在JasperReports中製作Subreport中,
已經介紹過parameter和field的設定方式,這裡就不贅述了,
直接進入分組加總的設定說明:
1. 開啟子報表
2. 開啟Report Inspector,
接著右鍵點選子報表的名稱(此例中是test_subreport)
然後點選Add Report Group,如下圖:
3. 在New group wizard中,
先輸入閣下喜歡的group name,此例中是GroupBand。
至於Group by the following report object
和Group by the following expression的差別,
在我的使用經驗裡,
如果僅依據一個欄位進行分組,
就選擇Group by the following report object,
然後在下拉式選單中挑選一個欄位;
如果須根據多個欄位進行分組,
則選擇Group by the following expression,
然後在文字方塊中輸入多個欄位的表示式,如下圖:
4. 按下一步後,請依據需求,
勾選Add the group header和Add the group footer,
在此例中,因為分組加總的結果要擺放在Detail band之後,
所以僅勾選Add the group footer,如下圖:
5. 按下完成之後,
Report Inspector中多了一個叫做GroupBand_COUNT的variable,
這個variable是用來儲存每個group的記錄筆數;
以及一個叫做GroupBand Group Footer 1的band,如下圖:
6. 接下來新增一個變數,用來儲存分組加總的值。
在Report Inspector上對Variables按右鍵,
選擇"加入 Variable",如下圖:
7. 將剛加入的variable,重新命名成F3,然後調整其屬性。
因為是加總,所以是數值,因此Variable Class請設成java.math.BigDecimal;
因為是加總,所以Calculation請設成Sum;
因為是分組加總,所以Reset type請設成Group;
接著,在Variable Expression中設定要加總的欄位。
此例是根據Field1和Field2分組,並加總Field3,
所以請填入$F{field3},如下圖:
8. 在GroupBand Group Footer 1上,加入Static Text和Text Field,
其中Text Field的Text Field Expression,
請設為$V{GroupBand_COUNT} + " / " + $V{F3},
如下圖:
9. 接著compile,如下圖:
10. 執行Java程式。
恭喜閣下已經懂了如何在JasperReports中製作分組加總的效果了!
jrxml
沒有留言:
張貼留言