it-swarm-eu.dev

faire une comparaison si autre dans JasperReports

Je veux faire une comparaison telle que: 

if <field> == 0 then "-"

Quelqu'un peut-il me dire la syntaxe en utilisant JasperReports?

21
Chi

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)
35
Dave Jarvis

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"
)
21
Michel

Utilisez la condition if-else:

  1. si le nom du client est null, écrivez '-' (absent), sinon écrivez le nom du client.

Faites attention à votre type de données de champ! 

<textFieldExpression class="Java.lang.String">
  <![CDATA[
    $F{CustomerName} == null ? '-' : $F{CustomerName}
  ]]>
</textFieldExpression>
0
harun ugur