我正在JasperSoft Studio上创建一个包含组的报告,我正在尝试为每个组获取两列值的总和。我能够成功生成报告并获得大多数正确的值,但我注意到,当且仅当组中的所有值都在同一页面上时,每个组的总和都是准确的,否则,我会得到错误的和。
这是.jrxml中定义组的部分:
<group name="customer-tree">
<groupFooter>
<band height="30">
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
<frame>
<textField>
<reportElement x="1407" y="0" width="66" height="30" uuid="cd6ad251-ee00-480a-bab7-04e1b094448b"/>
<textElement textAlignment="Right">
<font isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$V{customer-tree_billing-total}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="1473" y="0" width="72" height="30" uuid="d2424c64-8449-4c75-aca8-69244b990d44"/>
<textElement textAlignment="Right" verticalAlignment="Top">
<font isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$V{customer-tree_total}]]></textFieldExpression>
</textField>
</frame>
</band>
</groupFooter>
</group>
这些是用于求和的变量的定义:
<variable name="customer-tree_total" class="java.lang.Long" resetType="Group" resetGroup="customer-tree" incrementType="Column" calculation="Sum">
<variableExpression><![CDATA[$V{customer-tree_total} + $F{total_calls}]]></variableExpression>
<initialValueExpression><![CDATA[0L]]></initialValueExpression>
</variable>
<variable name="customer-tree_billing-total" class="java.lang.Long" resetType="Group" resetGroup="customer-tree" incrementType="Column" calculation="Sum">
<variableExpression><![CDATA[$V{customer-tree_billing-total} + $F{billing_days}]]></variableExpression>
<initialValueExpression><![CDATA[0L]]></initialValueExpression>
</variable>
我已经尝试过的事情:
<property name="net.sf.jasperreports.page.break.no.pagination" value="apply"/>
添加到一个页面上查看所有结果来确认这一点资源。在这种情况下,所有组的总和都是准确的。java.lang.Integer
(而不是java.lang.Long
),以查看<variableExpression>
表达式是否会受到影响。java.lang.Long
并将其添加到Long
的{{1}}的相关变量中。答案 0 :(得分:1)
删除incrementType =“Column”并在变量表达式中只留下$ F {..}:
<variable name="customer-tree_total" class="java.lang.Long" resetType="Group" resetGroup="customer-tree" calculation="Sum">
<variableExpression><![CDATA[$F{total_calls}]]></variableExpression>
<initialValueExpression><![CDATA[0L]]></initialValueExpression>
</variable>
<variable name="customer-tree_billing-total" class="java.lang.Long" resetType="Group" resetGroup="customer-tree" calculation="Sum">
<variableExpression><![CDATA[$F{billing_days}]]></variableExpression>
<initialValueExpression><![CDATA[0L]]></initialValueExpression>
</variable>