Je veux faire une comparaison telle que:
if <field> == 0 then "-"
Quelqu'un peut-il me dire la syntaxe en utilisant JasperReports?
iReport (JasperReports) utilise un opérateur ternaire . Par exemple, considérons la logique suivante:
IF boolean condition THEN
execute true code
ELSE
execute false code
END IF
En utilisant un opérateur ternaire, cela devient:
boolean condition ? execute true code : execute false code
Lors de l'utilisation d'une variable avec l'expression suivante:
$F{column_value}.intValue() == 42 ? "Life, Universe, Everything" : "Naught"
La valeur de la variable serait alors "Life, Universe, Everything" si, et seulement si, la valeur entière de $F{column_value}
est égale à 42.
Les choses deviennent un peu obtuses lorsque vous devez avoir des conditions imbriquées. Pour ceux-ci, mettez les conditions imbriquées entre parenthèses et sur une ligne distincte:
condition1 ?
(condition2 ? true_code2 : false_code2) :
false_code1
Alors, quand vous devez en faire plusieurs:
condition1 ?
(condition2 ?
(condition3 ? true_code3 : false_code3) :
false_code2) :
(condition4 ? true_code4 : false_code4)
exemple d'expression dans ireport:
(
$F{foo} == 0 ?
"Planned" :
$F{foo} == 1 ?
"Reserved" :
$F{foo} == 2 ?
"Canceled" :
$F{foo} == 3 ?
"Absent" :
$F{foo} == 4 ?
"Complete" :
"Unknown"
)
Utilisez la condition if-else:
Faites attention à votre type de données de champ!
<textFieldExpression class="Java.lang.String">
<![CDATA[
$F{CustomerName} == null ? '-' : $F{CustomerName}
]]>
</textFieldExpression>