2

我有多条记录的报告,其中一条记录由 1-5 页组成。如何显示"page x of y"x实际记录y的页数和实际记录的总页数在哪里?我有类似下面的x变量(在新记录上重置,按页递增),但它不起作用(在每个页面上 x 有 1 个值):

<variable name="x" class="java.lang.Integer" resetType="Group" resetGroup="report_count" incrementType="Page" calculation="Count">
    <variableExpression><![CDATA[1]]></variableExpression>
    <initialValueExpression><![CDATA[new Integer(1)]]></initialValueExpression>
</variable>

<!-- group by record -->
<group name="report_count" isStartNewPage="true">
    <groupExpression><![CDATA[$V{REPORT_COUNT}]]></groupExpression>
</group>

<textField evaluationTime="Now" evaluationGroup="report_count">
    <reportElement x="141" y="5" width="156" height="20"/>
    <textElement textAlignment="Right"/>
    <textFieldExpression><![CDATA["Page "+$V{x}+" of"]]></textFieldExpression>
</textField>
4

1 回答 1

1

问题是它calculation="count"没有做你期望的事情。它返回您返回的非空值的计数variableExpression。由于您variableExpression只返回一个值,因此该变量始终设置为 1。

一个简单的解决方案是将计算类型设置为"Nothing",并将 variableExpression 设置为$V{x}+1

IE:

<variable name="x" class="java.lang.Integer" resetType="Group" resetGroup="report_count" incrementType="Page" calculation="Nothing">
    <variableExpression><![CDATA[$V{x} + 1]]></variableExpression>
    <initialValueExpression><![CDATA[new Integer(1)]]></initialValueExpression>
</variable>


编辑:替代解决方案

标签可以有group属性isResetPageNumberPAGE_NUMBER当设置为 true 时,它​​将在每个组的开头重置内置变量。由于您已经按每条记录分组,我认为这应该会给您带来您正在寻找的效果。

于 2012-06-21T15:17:32.247 回答