分组到多个页面时的总和不正确

时间:2016-10-04 20:59:39

标签: jasper-reports

我正在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}}的相关变量中。

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>