wake-up-neo.com

vergleiche wenn sonst in JasperReports

Ich möchte einen Vergleich durchführen wie: 

if <field> == 0 then "-"

Kann mir jemand die Syntax mit JasperReports mitteilen?

21
Chi

iReport (JasperReports) verwendet einen Ternären Operator . Betrachten Sie zum Beispiel die folgende Logik:

IF boolean condition THEN
  execute true code
ELSE
  execute false code
END IF

Mit einem ternären Operator wird dies zu:

boolean condition ? execute true code : execute false code

Bei Verwendung einer Variablen mit dem folgenden Ausdruck:

$F{column_value}.intValue() == 42 ? "Life, Universe, Everything" : "Naught"

Der Wert der Variablen wäre dann "Life, Universe, Everything", und nur dann, wenn der ganzzahlige Wert von $F{column_value} gleich 42 ist.

Wo Dinge ein wenig stumpf werden, ist, wenn Sie verschachtelte Bedingungen haben müssen. Setzen Sie für diese die verschachtelten Bedingungen in Klammern und in einer separaten Zeile:

condition1 ?
  (condition2 ? true_code2 : false_code2) :
  false_code1

Wenn Sie also viele davon machen müssen:

condition1 ?
  (condition2 ?
    (condition3 ? true_code3 : false_code3) :
    false_code2) :
  (condition4 ? true_code4 : false_code4)
35
Dave Jarvis

beispiel für den Ausdruck in ireport:

(
    $F{foo} == 0 ?
    "Planned" :
    $F{foo} == 1 ?
    "Reserved" :
    $F{foo} == 2 ?
    "Canceled" :
    $F{foo} == 3 ?
    "Absent" :
    $F{foo} == 4 ?
    "Complete" :
    "Unknown"
)
21
Michel

Verwenden Sie die if-else-Bedingung:

  1. wenn der Kundenname leer ist, schreiben Sie '-' (nicht vorhanden), andernfalls geben Sie den Kundennamen ein.

Seien Sie vorsichtig mit Ihrem Felddatentyp! 

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