我是JasperReports的新手,但我觉得我得到了它。毕竟它只是另一种标记语言。
我的方案是我有一个数据表,包含日期和其他一些文本列,我想根据日期显示每个数据部分的小计。我期待在表格中有零,一个或多个日期。
我有一个定义的变量来计算行的总和,但我想将每个子组的总和重置为零,是否可能?
这是我的变量声明:
<variable name="G_COUNT" class="java.lang.Integer" calculation="Sum">
<variableExpression><![CDATA[(($F{ROW_NUMBER}.intValue() != 9)?$F{ITEM_COUNT}:new Integer(0))]]></variableExpression>
<initialValueExpression><![CDATA[new Integer(0)]]></initialValueExpression>
有没有办法可以使用这个变量,当找到新的日期时重置为0,或者我使用错误的类型来做我想做的事情?
作为一个警告,我在文本编辑器中编辑.jrxml文件,而不是iReport。
答案 0 :(得分:0)
我从阅读dtd中得出的结论是,群组可以触发重置事件。
<variable name="G_COUNT" class="java.lang.Integer" calculation="Sum" resetType="Group" resetGroup="SubCalc">
<variableExpression><![CDATA[(($F{ROW_ORDINAL}.intValue() != 9)?$F{ITEM_COUNT}:new Integer(0))]]></variableExpression>
<initialValueExpression><![CDATA[new Integer(0)]]></initialValueExpression>
<group name="SubCalc">
<groupExpression><![CDATA[$F{ROW_ORDINAL} == 1]]></groupExpression>
</group>
所以当ROW_ORDINAL == 1时会触发一个重置事件,它将G_COUNT的值设置为initialValueExpression