iReport - Variável com IF

1 resposta
Frank

Seguinte:
Eu estou criando um relatório no iReport. Fiz uma query no banco e os campos que ele me retornou que eu irei validá-los é um string e um double. Este double transformei ele para long (apenas modifiquei o seu tipo) e ele é um count no banco. Eu criei uma variável chamada “lngEmEstoque” e nele eu coloquei os seguintes parâmetros:

Tipo: Long
Calculation type: System
Reset type: None
Resete group: em branco
Expression: if ($F{CODIGO_DA_ENTIDADE}.equals("00001")) { $F{TOTAL} }
Initial value expression: new Long(0)

O campo Codigo da Entidade é String e o Total era double e transformei em long, como disse em cima.
Esta variável eu irei colocá-la no ColunmFooter.
Quando eu compilei deu o seguinte erro:

dori.jasper.engine.JRException: Errors were encountered when compiling report design:
C:Analitico.java:172: illegal start of expression

                value = (java.lang.Long)(if (((java.lang.String)field_CODIGO_DA_ENTIDADE.getValue()).equals("00001")) { ((java.lang.Long)field_TOTAL.getValue()) });
                                         ^
C:Analitico.java:172: ')' expected

                value = (java.lang.Long)(if (((java.lang.String)field_CODIGO_DA_ENTIDADE.getValue()).equals("00001")) { ((java.lang.Long)field_TOTAL.getValue()) });
                                                                                                                                                                 ^
C:Analitico.java:270: illegal start of expression

                value = (java.lang.Long)(if (((java.lang.String)field_CODIGO_DA_ENTIDADE.getOldValue()).equals("00001")) { ((java.lang.Long)field_TOTAL.getOldValue()) });
                                         ^
C:Analitico.java:270: ')' expected

                value = (java.lang.Long)(if (((java.lang.String)field_CODIGO_DA_ENTIDADE.getOldValue()).equals("00001")) { ((java.lang.Long)field_TOTAL.getOldValue()) });
                                                                                                                                                                         ^
C:Analitico.java:368: illegal start of expression

                value = (java.lang.Long)(if (((java.lang.String)field_CODIGO_DA_ENTIDADE.getValue()).equals("00001")) { ((java.lang.Long)field_TOTAL.getValue()) });

                                         ^

C:Analitico.java:368: ')' expected

value = (java.lang.Long)(if (((java.lang.String)field_CODIGO_DA_ENTIDADE.getValue()).equals("00001")) { ((java.lang.Long)field_TOTAL.getValue()) });
                                                                                                                                                                 ^
6 errors

at dori.jasper.engine.design.JRCompiler.compileReport(JRCompiler.java:150)

at dori.jasper.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:129)

at dori.jasper.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:117)

at IReportCompiler.main(IReportCompiler.java:119)

Abnormal termination!

Alguém pode me ajudar a solucionar este caso ?
Ou dar alguma dica se já teve que fazer alguma coisa parecida com o iReport ?

1 Resposta

Frank

Pessoal eu consegui resolver o meu problema!
Criei uma variável e no “Expression” da variável coloquei o seguinte:

($F{CODIGO}.equals("00001")) ? $F{TOTAL} : Long.valueOf("0")

Tem que ter duas condições, se sim entra no field Total, se não vai em outro resultado que no meu caso é zero.
E não coloquei o if, utilizei o ? e : para diferenciar cada resultado.

Falow…

Criado 23 de junho de 2003
Ultima resposta 24 de jun. de 2003
Respostas 1
Participantes 1