quiero hacer una comparación como:hacer comparación si lo demás en JasperReports
if <field> == 0 then "-"
Puede alguien decirme la sintaxis usando JasperReports?
quiero hacer una comparación como:hacer comparación si lo demás en JasperReports
if <field> == 0 then "-"
Puede alguien decirme la sintaxis usando JasperReports?
iReport (JasperReports) utiliza un Ternary operator.
IF boolean condition THEN
execute true code
ELSE
execute false code
END IF
se convierte en:
boolean condition ? execute true code : execute false code
Por ejemplo, si se va a crear una variable con la siguiente expresión:
$F{column_value}.intValue() == 42 ? "Life, Universe, Everything" : "Naught"
A continuación, el valor de la variable sería "La vida, universo, todo "si, y solo si, el valor entero de $F{column_value}
es igual a 42.
Donde las cosas se ponen un poco obtusas cuando tienes que tener condiciones anidadas. Para estos, poner las condiciones anidadas entre paréntesis y en una línea separada:
condition1 ?
(condition2 ? true_code2 : false_code2) :
false_code1
Por eso, cuando lo que necesita hacer muchos de ellos:
condition1 ?
(condition2 ?
(condition3 ? true_code3 : false_code3) :
false_code2) :
(condition4 ? true_code4 : false_code4)
ejemplo de expresión en iReport:
(
$F{foo} == 0 ?
"Planned" :
$F{foo} == 1 ?
"Reserved" :
$F{foo} == 2 ?
"Canceled" :
$F{foo} == 3 ?
"Absent" :
$F{foo} == 4 ?
"Complete" :
"Unknown"
)
Puede usar la condición if-else como esta en el Informe Jasper: si el nombre del cliente es null write '-' (apsent) else escriba el nombre de su cliente. ¡Sea cuidadoso para su tipo de datos de campo!
<textFieldExpression class="java.lang.String"><![CDATA[$F{CustomerName} == null ? '-' : $F{CustomerName}]]></textFieldExpression>