Como retornar NULL caso o valor do campo seja = 100?

8 respostas
ireport
I

Preciso de ajuda no IReport, tenho essa condição aqui:

$F{TOTAL}.multiply($F{TOTALMETA})

e preciso que retorne NULL quando o valor do campo $F{TOTALMETA} for = 100.

Tem como fazer isso?

8 Respostas

D

Cara, primeiro que isso não deveria ser tratado no relatório, mas, enfim.
O iReport trabalha com operadores ternários, logo:

$F{TOTALMETA} == 100 ? "NULL" : $F{TOTALMETA}

Deve ser algo assim

I

Bom dia, retorna esse erro:

Errors were encountered when compiling report expressions class file:

  1. Incompatible operand types BigDecimal and int
    value = (java.lang.String)(((java.math.BigDecimal)field_TOTALMETA.getValue()) == 100 ? “NULL” : ((java.math.BigDecimal)field_TOTALMETA.getValue())); //$JR_EXPR_ID=30$

  2. Incompatible operand types BigDecimal and int
    value = (java.lang.String)(((java.math.BigDecimal)field_TOTALMETA.getOldValue()) == 100 ? “NULL” : ((java.math.BigDecimal)field_TOTALMETA.getOldValue())); //$JR_EXPR_ID=30$

  3. Incompatible operand types BigDecimal and int
    value = (java.lang.String)(((java.math.BigDecimal)field_TOTALMETA.getValue()) == 100 ? “NULL” : ((java.math.BigDecimal)field_TOTALMETA.getValue())); //$JR_EXPR_ID=30$

3 errors

Código: CORE_E02510

L

E porque não retornar 0 (zero)?

A sua expressão deve ter apenas um tipo de retorno (ou String ou numérico) e ali você está indicando dois tipos. Ou retorna "NULL" (é considerado como String por estar dentro de aspas) ou retorna um valor numérico qualquer. Por isso, o erro está acontecendo.

D

Cara, você vai precisar fazer o cast explícito e, a partir disso, vai precisar invocar o método intValue da variável, que é BigDecimal

I

Pode ser 0 tbm, não tem problema.

I

Resolvi de outra forma rapaziada. Obrigado pela ajuda…

R

Como resolveu?

J

Coloque a solução que você encontrou, para que outros possam encontrar também.

Criado 2 de março de 2020
Ultima resposta 4 de mar. de 2020
Respostas 8
Participantes 5