我想创建一个Jasper模板,它提供以下输出:
2016-01-01
Category Descritpiton Income
-------- ------------ ------
A ... 1230
B ... 1000
A ... 100
C ... 2500
B ... 10
A ... 10
A ... 5
+--------------------------------------------------+
Sum
A 1355
B 1010
C 100
2016-01-02
Category Descritpiton Income
-------- ------------ ------
A ... 500
B ... 100
B ... 100
E ... 2500
B ... 10
A ... 10
A ... 5
+--------------------------------------------------+
Sum
A 515
B 210
E 2500
(more days...)
我有一个SQL数据源,带有必要列的表。我可以创建一个报告,其中按天分组的收入(我用一个组实现了这个,并在SQL select语句中实现了一个order-by)。像这样:
2016-01-01
Category Descritpiton Income
-------- ------------ ------
A ... 1230
B ... 1000
A ... 100
C ... 2500
B ... 10
A ... 10
A ... 5
2016-01-02
Category Descritpiton Income
-------- ------------ ------
A ... 500
B ... 100
B ... 100
E ... 2500
B ... 10
A ... 10
A ... 5
(more days...)
但我不能在每天结束时创造总和。有没有办法实现报告中给定的按类别划分的部分?
答案 0 :(得分:1)
在jasper报告中进行分组时,您可以访问两个新频段,groupHeader
和groupFooter
。
您需要在groupFooter
。
正常设计(重新设计报告以避免需要新的数据源,也可以对类别进行分组)
2016-01-01
Category Description Income
-------- ------------ ------
A ... 1230
A ... 100
+--------------------------------------------------+
Total sum category A 1335
B ... 1000
..........................................
Total sum all 6000
如果这不是一个选项,您将需要一个新的数据源作为总和表
解决方案1 (重新查询):
在subreport
中添加jr:table
或groupFooter
,并使用日期作为参数(类别和总和值组)重新查询数据库
解决方案2 (创建jasper报告scriplet,JRDefaultScriptlet)
创建一个扩展JRDefaultScriptlet
类的java类,它在报表填充时存储和汇总值。在解决方案1中,调用scriptlet以获取可用作数据源以填充总和表的JRBeanCollectionDataSource。