Fügen Sie Ihrem SQL SOITEM."SOID"
hinzu (wir prüfen, ob dies doppelt vorhanden ist), Sie erhalten ein Feld
<field name="SOID" class="java.lang.Integer"/>
Erstellen Sie eine Gruppe auf dem SOID
<group name="SOID">
<groupExpression><![CDATA[$F{SOID}]]></groupExpression>
</group>
Erstellen Sie dann eine Variable Dieser Reset erfolgt mit der Gruppe, die das Auftreten von SOID
zählt
<variable name="SOID_Count" class="java.lang.Integer" resetType="Group" resetGroup="SOID" calculation="Count">
<variableExpression><![CDATA[$F{SOID}]]></variableExpression>
</variable>
Die Sequenz in der jrxml dieses Codes lautet
<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>
Diese Variable kann nun verwendet werden, um auszuwerten, ob Sie SOID dupliziert haben, es wird >1 sein bei Duplizierung SOID
Beispiel von textField
die 0 anzeigen, wenn SOID
dupliziert wird
<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>
An dem Tag, an dem Sie Ihren Bericht verbessern möchten, fügen Sie einfach einen groupHeader
hinzu Band in Ihrer Gruppe und fügen Sie dann die TextFields in dieses Band ein