Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Defina um valor de repetição para 0, deixando o primeiro valor sozinho


Adicione ao seu sql SOITEM."SOID" (verificamos se isso está duplicado), você obtém um campo
<field name="SOID" class="java.lang.Integer"/>

Crie um grupo no SOID
<group name="SOID">
    <groupExpression><![CDATA[$F{SOID}]]></groupExpression>
</group>

Em seguida, crie uma variável esse reset é com o grupo contando a ocorrência de SOID
<variable name="SOID_Count" class="java.lang.Integer" resetType="Group" resetGroup="SOID" calculation="Count">
    <variableExpression><![CDATA[$F{SOID}]]></variableExpression>
</variable>

A sequência no jrxml deste código será
<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>

Esta variável agora pode ser usada para avaliar se você tem SOID duplicado, será >1 quando duplicado SOID

Exemplo de textField que exibem 0 se SOID duplicado
<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>

No dia em que você quiser melhorar seu relatório, basta adicionar um groupHeader band no seu grupo e depois coloque os textField's nesta banda