SQLにSOITEM."SOID"
を追加します (これが重複しているかどうかを確認します)、フィールドを取得します
<field name="SOID" class="java.lang.Integer"/>
グループを作成する SOID
で
<group name="SOID">
<groupExpression><![CDATA[$F{SOID}]]></groupExpression>
</group>
次に、変数を作成します そのリセットは、グループがSOID
の発生をカウントすることで行われます
<variable name="SOID_Count" class="java.lang.Integer" resetType="Group" resetGroup="SOID" calculation="Count">
<variableExpression><![CDATA[$F{SOID}]]></variableExpression>
</variable>
このコードのjrxmlのシーケンスは次のようになります
<field name="SOID" class="java.lang.Integer"/>
<variable name="SOID_Count" class="java.lang.Integer" resetType="Group" resetGroup="SOID" calculation="Count">
<variableExpression><![CDATA[$F{SOID}]]></variableExpression>
</variable>
<group name="SOID">
<groupExpression><![CDATA[$F{SOID}]]></groupExpression>
</group>
この変数を使用して、SOIDが複製されているかどうかを評価できるようになりました。これは、> 1になります。 重複した場合SOID
例 textField
の SOID
が重複している場合は0が表示されます
<textField pattern="###0">
<reportElement x="143" y="0" width="105" height="20" uuid="a0e2ae10-906e-4d0f-aebd-30fc0c694aca">
</reportElement>
<textElement textAlignment="Right" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{SOID_Count}<=1?$F{SOITEM_UNITPRICE}:0]]></textFieldExpression>
</textField>
レポートを改善したい日は、groupHeader
を追加するだけです。 グループにバンドを入れてから、textFieldをこのバンドに入れます