Lägg till SOITEM."SOID"
i din sql (vi kollar om detta är duplicerat), du får ett fält
<field name="SOID" class="java.lang.Integer"/>
Skapa en grupp på SOID
<group name="SOID">
<groupExpression><![CDATA[$F{SOID}]]></groupExpression>
</group>
Skapa sedan en variabel den återställningen är med gruppen som räknar förekomsten av SOID
<variable name="SOID_Count" class="java.lang.Integer" resetType="Group" resetGroup="SOID" calculation="Count">
<variableExpression><![CDATA[$F{SOID}]]></variableExpression>
</variable>
Sekvensen i jrxml för denna kod kommer att vara
<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>
Denna variabel kan nu användas för att utvärdera om du har duplicerat SOID, det blir >1 när duplicerad SOID
Exempel av textField
som visar 0 om duplicerad SOID
<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>
Den dag du vill förbättra din rapport lägger du bara till en groupHeader
band i din grupp och lägg sedan textfälten i detta band