我正在使用Jaspersoft Studio 5.6.2,并且有一个报告,其中列显示两个日期之间经过的天数。
如果日期范围小于24小时,我想显示至少一天,所以我创建了一个变量来转换字段值来表示。我也想避免负值:
Name: day_rounded
Class: java.lang.Integer
Calculation: No Calculation
Expression: $F{days}==0?1:$F{days}<0?0:$F{days}
Increment: None
Reset: Report
这是我创建的变量总和:
Name: totals
Class: java.lang.Integer
Calculation: Sum
Expression: $V{day_rounded}
Increment: None
Reset: Report
$ F {days}是查询中两个日期之间的差异。
...
DATEDIFF(dd,irr.xxxstart_dt, ISNULL(irr.xxxend_dt,$P{end_dt})) AS days
...
我使用$ F {days}值和$ V {day_rounded}值运行报告,看起来没问题。
当我将$ V {totals}放入Summary条带(它也在Page Header中)时,该值不包括最后一行的值。例如,如果我使用计算器并总结列出的所有日期,我得到1494.报告显示1485,最后一行的天值为9 - 所以我可以看到它不包括那一个。我为其他日期范围运行了报告,总数正好是最后一行中的值小于它应该的值。
据我所知,变量被正确声明。知道为什么我错过总和中的最后一行值吗?
答案 0 :(得分:1)
这是我用来解决这个问题的jrxml:
<variable name="page_total" class="java.lang.Integer" resetType="Page" calculation="Sum">
<variableExpression><![CDATA[$V{day_rounded}]]></variableExpression>
</variable>
<variable name="paged_summed" class="java.lang.Integer" incrementType="Page" calculation="Sum">
<variableExpression><![CDATA[$V{page_total}]]></variableExpression>
</variable>
我总计了每页的天数值,并将RESET设置为该变量的“页面”。我总结了它们并将INCREMENT设置为'另一个变量的页面。
现在我的总数都在增加。谢谢@ tobi6 !!