Condição if no ireport

Galera boa tarde, existe algum meio de colocar uma condição if dentro de um campo field do ireport,
faço uma busca na base e jogo esse valor no campo, dentro dele uso um if para ver se o valor que vem da base é igual “valor a ser comparado”.

Até onde eu sei não é possível usar o loop condicional if dentro do iReport. Porém, é possível usar o operador ternário (inclusive vários aninhados) e fazer uma alusão ao if. Seria mais ou menos assim:

($F{CampoHora}==null?"00:00:00":new SimpleDateFormat ("HH:mm:ss").format($F{CampoHora}))

Você pode até criar uma variável no iReports e jogar isso dentro dela e depois só mandar apresentar a variável. Esse código fazer o seguinte. Ele compara o CampoHora e verifica se ele é igual à null se for igual à null ele mostra a hora como sendo “00:00:00” senão ele formata a data e apresenta apenas a hora real da data passa pelo campo. O operador ternário é assim:

condição ? se verdade : se falso

Até!

2 curtidas

Ahhh, agora que vi, outra pessoa já deu a mesma resposta em outra área do forum. Nem vi, esquece então!

Mas mesmo assim valeu pela dica… Grande abraço!

e ai pessoal

eu tentei fazer como no exeplo acima e nao deu certo.

tentei fazer dessa forma:


$F{ckl_110doc} == true ? "Verdadeiro" : "Falso"

sendo que o campo $F{ckl_110_doc} no banco é do tipo boolean.

ai tah dando esse erro:

pelo amor de Deus, será que vcs poderiam me ajudar?

já tentei fazer de td…nda dá certo!

desde já agradeço a atenção de vcs.

flws

Sabendo que Boolean != boolean, então o que podes fazer é:
-Ou pegar o valor do objeto e comparar com o tipo primitivo;
-Ou pegar o primitivo e transformar em objeto e depois comparar os valores internos.

Boa sorte aí!

desculpe a minha ignorância mas…

como eu faço isso?

eu tentei da seguinte maneira:

(String)$F{ckl_110doc} == “true” ? “Verdadeiro” : “Falso”

e também não deu certo.

diz que não é possível converter Boolean para String.

Não costumo colocar código pronto, mas aí vai:

$F{ckl_110doc}.booleanValue() == true ? "Verdadeiro" : "Falso"

Teste aí e conte o resultado!

amigo, não tenho nem palavras pra te agradecer.

deu certinho!

tu não sabes de qta importância foi sua ajuda.

mto abrigado.

flws

Beleza então!

Quer saber o porque disso? Em quando tu compilas o jasper, ele transforma $F{ckl_110doc} em algo do tipo: public Boolean ckl_110doc = new Boolean("valor que você inicializou");

Então como você já tem um objeto do tipo Boolean, quando fazes a comparação, fica: ckl_110doc.booleanValue() == true ? "verdadeiro" : "falso"

Todos os Campos, Parâmetros e Variáveis no JasperReports viram objetos correspondentes ao tipo, e com isso, trazem todos os métodos relativos.

Até!

Olá, bom dia

tentei utilizar essa expressao no ireports 3.7.3 dessa forma,

$F{funcionamento}.booleanValue() == false ? "Não" : "Sim"

e me retornou esse erro:

Cannot cast from String to Boolean

Alguem pode me ajudar???

Flws.

Descobri. Tinha que mudar o tipo da variável de Boolean para String.

Valeu.

Bom dia galera, ja usava o IF “aninhado” no ireport, mas agora me deparei com uma coisa aqui:

if($F{genero}==0) “Masculino”;
if($F{genero}==1) “Feminino”;
if($F{genero}==2) “Infantil”;

há como fazer uma condição dessas num text field?

grato

Resolvi fazendo

$F{genero} == 0 ? "MAS" : $F{genero} == 1 ? "FEM" : $F{genero}==2 ? "INF" : ""

antes de descobrir isso, tinha usado na própria query

CASE WHEN genero=0 THEN 'MAS' WHEN genero=1 THEN 'FEM' ELSE 'INF' END genero

bom dia … nao estou conseguindo fazer essa expressao . aguem consegue me dizer pq?

$F{RESPOSTA} == 'T' ? "Sim" && $V{SOMASIM} : "Não" && $V{SOMANAO}

se eu tira o && $V{SOMASIM} e o && $V{SOMANAO}
funciona normalmente… mas preciso deles pra contar para fzer a porcentagem de sim e e nao