我有多个记录的报告,其中一个记录是由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>发布于 2012-06-21 23:17:32
问题是calculation="count"并没有按照你的预期去做。它返回variableExpression返回的非空值的计数。由于您的variableExpression仅返回单个值,因此该变量始终设置为1。
一种简单的解决方案是将计算类型设置为"Nothing",并将variableExpression设置为$V{x}+1
即:
<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标记可以具有属性isResetPageNumber。当设置为true时,它将在每个组开始时重置内置变量PAGE_NUMBER。因为你已经按每条记录分组了,我想这应该会给你带来你想要的效果。
https://stackoverflow.com/questions/11113824
复制相似问题