Thêm vào sql SOITEM."SOID"
(chúng tôi kiểm tra xem điều này có bị trùng lặp không), bạn sẽ có một trường
<field name="SOID" class="java.lang.Integer"/>
Tạo nhóm trên SOID
<group name="SOID">
<groupExpression><![CDATA[$F{SOID}]]></groupExpression>
</group>
Sau đó, tạo biến thiết lập lại đó với nhóm đếm sự xuất hiện của SOID
<variable name="SOID_Count" class="java.lang.Integer" resetType="Group" resetGroup="SOID" calculation="Count">
<variableExpression><![CDATA[$F{SOID}]]></variableExpression>
</variable>
Trình tự trong jrxml của mã này sẽ là
<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>
Biến này hiện có thể được sử dụng để đánh giá xem bạn có SOID trùng lặp hay không, biến này sẽ là > 1 khi trùng lặp SOID
Ví dụ trong tổng số textField
hiển thị 0 nếu SOID
trùng lặp
<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>
Ngày bạn muốn cải thiện báo cáo của mình, chỉ cần thêm groupHeader
nhóm của bạn và sau đó đặt textField's vào nhóm này