2

複数のレコードを含むレポートがあります。1つのレコードは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

すなわち:

<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_NUMBERtrueに設定すると、すべてのグループの開始時に組み込み変数がリセットされます。すでにレコードごとにグループ化しているので、探している効果が得られると思います。

于 2012-06-21T15:17:32.247 に答える