2010-12-14 17 views

Respuesta

33

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) 
17

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" 
) 
0

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>

Cuestiones relacionadas