Problemas com if no iReport

36 respostas
K

Olá galera, estou tendo dificuldades com o iReport.
Eu criei um relatório onde quero que exiba no campo Crédito somente se o Credito for maior que 0. (deu para entender? rsrsrs)
O campo Crédito está como Currency.

Exemplo:

if ($F{fn_movim_finan_credito} > 0 ){ Exibe o valor else if { fica em branco sem o R$ }

Algém consegue me ajudar a criar esse comando?
Obrigado!

36 Respostas

L

Olá mortex!

Tenta assim:

$F{fn_movim_finan_credito} > 0 ? “Exibe o valor” : null

Aí para ficar em branco no relatório você deve marcar a opção Blank When Null do elemento.

Espero ter ajudado!

R

kid_mortex:
Olá galera, estou tendo dificuldades com o iReport.
Eu criei um relatório onde quero que exiba no campo Crédito somente se o Credito for maior que 0. (deu para entender? rsrsrs)
O campo Crédito está como Currency.

Exemplo:

if ($F{fn_movim_finan_credito} > 0 ){

Exibe o valor

else if {

fica em branco sem o R$

}

Algém consegue me ajudar a criar esse comando?
Obrigado!

Cara se eu fosse vc estudava um pouco mais, sobre os comandos de relatórios, não é if, else, igual no código na aplicação…

K

Bom dia laudecir_hasckel, obrigado por me ajudar…só que ainda não é o que eu preciso. Eu acho que expliquei errado.

Preciso que fique como nas imagens abaixo:

J

Então pelo que entendi esta certo com este codigo do laudecir_hasckel ele vai jogar null neste campo, ai agora vc vai em propriedades do field e seta a opção branco quando null, acho que é isso que vc quer, se não for isso, posta ai q a gente tenta de novo…

L

kid_mortex:
Bom dia laudecir_hasckel, obrigado por me ajudar…só que ainda não é o que eu preciso. Eu acho que expliquei errado.

Preciso que fique como nas imagens abaixo:

Então deixa eu te explicar mais detalhado…

Sabe a Field que mostra o valor do Crédito?

Então, dê um F2 nela e cole estão condição $F{fn_movim_finan_credito} > 0 ? $F{VALOR_CREDITO} : null

Entre nas propriedades do elemento adicionado no relatório e marque a opção Blank When Null e teste!

K

Entçao…fiiz estes procedimentos e ficou tudo assim:
http://img825.imageshack.us/img825/89/29373200.jpg

O ruim é que eu não conheço a sintaxe.
teria que ficar ± assim : $F{fn_movim_finan_credito} == 0.0 ? null : $F{fn_movim_finan_credito}

L

kid_mortex:
Entçao…fiiz estes procedimentos e ficou tudo assim:
http://img825.imageshack.us/img825/89/29373200.jpg

Bom, você disse que o campo Crédito está como Currency, mas como você definiu isto?
Foi pelo Pattern das propriedades???

K

Isso, foi em Field Pattern.

L

kid_mortex:
Entçao…fiiz estes procedimentos e ficou tudo assim:
http://img825.imageshack.us/img825/89/29373200.jpg

O ruim é que eu não conheço a sintaxe.
teria que ficar ± assim : $F{fn_movim_finan_credito} == 0.0 ? null : $F{fn_movim_finan_credito}

Qual o tipo da sua Field???

K

O Field Pattern é Currency.
Field Class: java.math.BigDecimal
Lá no banco o Credito está como tipo decimal

L

kid_mortex:
O Field Pattern é Currency.
Field Class: java.math.BigDecimal
Lá no banco o Credito está como tipo Real

BigDecimal se compara de forma diferente dos demais tipos numéricos…

Muda a condição da sua Field para:
$F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 1 ? $F{fn_movim_finan_credito} : null

Tenta aew!

L

laudecir_hasckel:
kid_mortex:
O Field Pattern é Currency.
Field Class: java.math.BigDecimal
Lá no banco o Credito está como tipo Real

BigDecimal se compara de forma diferente dos demais tipos numéricos…

Muda a condição da sua Field para:
$F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 1 ? $F{fn_movim_finan_credito} : null

Tenta aew!

Ops…quer dizer:

$F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 0 ? $F{fn_movim_finan_credito} : null

K

ainda não…ficou na mesma coisa que a imagem anterior. Só aparece os R$…
Te ajuda se eu enviar o .jrxml ?

L

kid_mortex:
ainda não…ficou na mesma coisa que a imagem anterior. Só aparece os R$…
Te ajuda se eu enviar o .jrxml ?

Concerteza!

Mande aew!

J

Me parece estar ocorrenso isso por causa da mascara, agora não sei se tem com alterar a mascara dinamicamente…imagino que voce vai conseguir fazer isso so se vc retirar a mascara e incluir na mao essa mascara com concat ou alguma coisa assim…ai essa regra do if vai funcionar…

J

Me parece estar ocorrenso isso por causa da mascara, agora não sei se tem com alterar a mascara dinamicamente…imagino que voce vai conseguir fazer isso so se vc retirar a mascara e incluir na mao essa mascara com concat ou alguma coisa assim…ai essa regra do if vai funcionar…

V

Por favor, não marque tópicos com o óbvio, como [AJUDA] ou [DÚVIDA].

Além disso, use a tag code. Para saber como postar adequadamente, leia:
http://www.guj.com.br/java/287484-gujnautas-how-to

K

ta na mão http://www.4shared.com/file/mCfyvESZ/Credito.html?

L

Analisei seu jrxml e acredito que ajustando uma coisa ali talvez funcione!

Troca a Expression Class na propriedade da Field adicionado no relatório para java.math.BigDecimal para ver…

Ahhh, na condição dessa Field tem que ser $F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 0 ? $F{fn_movim_finan_credito} : null
e não $F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 0.00 ? $F{fn_movim_finan_credito} : null

K

Amigo, está na mesma… e agora?

J

Me parece estar ocorrenso isso por causa da mascara, agora não sei se tem com alterar a mascara dinamicamente…imagino que voce vai conseguir fazer isso so se vc retirar a mascara e incluir na mao essa mascara com concat ou alguma coisa assim…ai essa regra do if vai funcionar…

K

vixi junior, e tem tutorial disso aqui no fórum? fiz uma busca rápida e não achei

J

o campo ja vem formatado com virgulas e tudo ou vc usa a mascara para formatar?

K

Junior, eu não entendi muito bem oque você quis dizer…
Assim ó… no banco de dados os valores estão em decimal (exemplo: 15.99, 0.00) daí no iReport para formata-los em Currency eu clico com o botão direito em cima do field > Field pattern > Currency e pronto.
Alterei o Expression Class do field para java.math.BigDecimal e dentro de Text field expression eu coloquei $F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 0 ? $F{fn_movim_finan_credito} : null.

se quiser dar uma olhada no meu relatorio aqui está o link : http://www.4shared.com/file/mCfyvESZ/Credito.html?

L

[quote=kid_mortex]Junior, eu não entendi muito bem oque você quis dizer…
Assim ó… no banco de dados os valores estão em decimal (exemplo: 15.99, 0.00) daí no iReport para formata-los em Currency eu clico com o botão direito em cima do field > Field pattern > Currency e pronto.
Alterei o Expression Class do field para java.math.BigDecimal e dentro de Text field expression eu coloquei $F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 0 ? $F{fn_movim_finan_credito} : null.

se quiser dar uma olhada no meu relatorio aqui está o link : http://www.4shared.com/file/mCfyvESZ/Credito.html?[/quote]

Vamos fazer diferente então!

Deixa no Text field Expression apenas $F{fn_movim_finan_credito}

E nas propriedades da Field adicionada no relatório você vai encontrar a opção Print When Expression, aí você adiciona a expressão $F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 0

Teste lá pra ver!

J

Cara eu fiz o teste aki e deu certo joga essa expressao ai

$F{fn_movim_finan_credito}.toString().equalsIgnoreCase(“0.0”)?null:$F{fn_movim_finan_credito}

Eu acho que vale a pena tentar…

K

juniorsml:
Cara eu fiz o teste aki e deu certo joga essa expressao ai

$F{fn_movim_finan_credito}.toString().equalsIgnoreCase(“0.0”)?null:$F{fn_movim_finan_credito}

Eu acho que vale a pena tentar…

Não deu…
testei o field com java.lang.String e java.lang.BigDecimal.

K

[quote=laudecir_hasckel]

kid_mortex:
Junior, eu não entendi muito bem oque você quis dizer…
Assim ó… no banco de dados os valores estão em decimal (exemplo: 15.99, 0.00) daí no iReport para formata-los em Currency eu clico com o botão direito em cima do field > Field pattern > Currency e pronto.
Alterei o Expression Class do field para java.math.BigDecimal e dentro de Text field expression eu coloquei $F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 0 ? $F{fn_movim_finan_credito} : null.

se quiser dar uma olhada no meu relatorio aqui está o link : http://www.4shared.com/file/mCfyvESZ/Credito.html?[/quote]

Vamos fazer diferente então!

Deixa no Text field Expression apenas $F{fn_movim_finan_credito}

E nas propriedades da Field adicionada no relatório você vai encontrar a opção Print When Expression, aí você adiciona a expressão $F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 0

Teste lá pra ver!

Testei e também não deu, agora ele nem imprimiu nada, ficou a tela em branco…

L

[quote=kid_mortex]

laudecir_hasckel:
kid_mortex:
Junior, eu não entendi muito bem oque você quis dizer…
Assim ó… no banco de dados os valores estão em decimal (exemplo: 15.99, 0.00) daí no iReport para formata-los em Currency eu clico com o botão direito em cima do field > Field pattern > Currency e pronto.
Alterei o Expression Class do field para java.math.BigDecimal e dentro de Text field expression eu coloquei $F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 0 ? $F{fn_movim_finan_credito} : null.

se quiser dar uma olhada no meu relatorio aqui está o link : http://www.4shared.com/file/mCfyvESZ/Credito.html?[/quote]

Vamos fazer diferente então!

Deixa no Text field Expression apenas $F{fn_movim_finan_credito}

E nas propriedades da Field adicionada no relatório você vai encontrar a opção Print When Expression, aí você adiciona a expressão $F{fn_movim_finan_credito}.compareTo(BigDecimal.ZERO) != 0

Teste lá pra ver!

Testei e também não deu, agora ele nem imprimiu nada, ficou a tela em branco…

O que ficou em branco, o campo Crédito ou a página inteira???

Manda a imagem de como está agora…

K

Agora não aparece nada mesmo.
http://img202.imageshack.us/img202/4784/64731369.jpg

L

kid_mortex:
Agora não aparece nada mesmo.
http://img202.imageshack.us/img202/4784/64731369.jpg

Me explique onde você alterou porque não era para acontecer isso! :S

Qual a versão do seu iReport???

K

laudecir_hasckel:
kid_mortex:
Agora não aparece nada mesmo.
http://img202.imageshack.us/img202/4784/64731369.jpg

Me explique onde você alterou porque não era para acontecer isso! :S

Qual a versão do seu iReport???

É o 4.1.3, mudei só oque você explicou.
e a Expression Class está java.math.BigDecimal.

L

kid_mortex:
laudecir_hasckel:
kid_mortex:
Agora não aparece nada mesmo.
http://img202.imageshack.us/img202/4784/64731369.jpg

Me explique onde você alterou porque não era para acontecer isso! :S

Qual a versão do seu iReport???

É o 4.1.3, mudei só oque você explicou.
e a Expression Class está java.math.BigDecimal.

Então manda novamente o seu jrxml para mim analisar.

K

Novo jrxml http://www.4shared.com/file/7dkXAcY0/Credito.html?

L

É muito estranho estar dando esse problema porque está tudo certo!

Faz um seguinte… passe todas as Expression Class das Fields adicionadas no relatório para o mesmo tipo da Field que você gerou… acredito que não resolva tal problema mas serve como uma dica…

K

O meu querido, ainda não funcionou…
vou fazer uns testes aqui e qualquer coisa posto a dúvida de novo aqui no fórum.
muito obrigado pela tua dedicação em tentar resolver meu problema. Sucesso!

Criado 8 de fevereiro de 2013
Ultima resposta 9 de fev. de 2013
Respostas 36
Participantes 5