e ai galera tudo blz? fiz alguns relatorios usando ireport, mas encontrei alguns problemas…
Tenho q fazer um teste dentro do relatorio. mas estou usando if else. e não está dando certo… vou explicar o q estou tentando fazer… existem alguns campos no banco q são boolean. eu precisa fazer o teste c a mesma era true. caso seja eu teria q retornar uma variavel do tipo int…
alguem tem alguma dica de como posso fazer isso… e c alguem pudesse postar o codigo ajudaria mais ainda…
[quote=andrertd]e ai galera tudo blz? fiz alguns relatorios usando ireport, mas encontrei alguns problemas…
Tenho q fazer um teste dentro do relatorio. mas estou usando if else. e não está dando certo… vou explicar o q estou tentando fazer… existem alguns campos no banco q são boolean. eu precisa fazer o teste c a mesma era true. caso seja eu teria q retornar uma variavel do tipo int…
alguem tem alguma dica de como posso fazer isso… e c alguem pudesse postar o codigo ajudaria mais ainda…
abraços [/quote]
Bom dia,
Tenta fazer algo desse tipo, usando o texteditor do iReport
(new Integer($V{suaVariavel}.equals(“true”)?seuInteiro:$V{suaVariavel}.equals(“false”)?seuOutroInteiro)
Compiling to file… .\pedido_produto.jasper -> E:\pc junior\d\sql e ireport\iReport\iReport-1.2.7\classic.java
Errors compiling .\pedido_produto.jasper!
it.businesslogic.ireport.ReportClassLoader@1455cf4 net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 1. Incompatible conditional operand types int and Integer value = (java.lang.Integer)((new Integer(((java.lang.Boolean)field_cobrar_ipi.getValue()).booleanValue() == true?4:new Integer(((java.lang.Boolean)field_cobrar_ipi.getValue()).booleanValue() == false?0:0)))); <-----------------------------------------------------------------------------------------------------------------------------------------------------------------> 2. Incompatible conditional operand types int and Integer value = (java.lang.Integer)((new Integer(((java.lang.Boolean)field_cobrar_ipi.getOldValue()).booleanValue() == true?4:new Integer(((java.lang.Boolean)field_cobrar_ipi.getOldValue()).booleanValue() == false?0:0)))); <-----------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3. Incompatible conditional operand types int and Integer value = (java.lang.Integer)((new Integer(((java.lang.Boolean)field_cobrar_ipi.getValue()).booleanValue() == true?4:new Integer(((java.lang.Boolean)field_cobrar_ipi.getValue()).booleanValue() == false?0:0)))); <-----------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 errors at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:193) at net.sf.jasperreports.engine.design.JRDefaultCompiler.compileReport(JRDefaultCompiler.java:105) at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:127) at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:109) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:507) at java.lang.Thread.run(Unknown Source)
Compilation running time : 1250
vou tentar explçicar o q estou fazendo… é um relatorio de pedido… então. existem produtos q é cobrado 4% de ipi e exstem produtos q não é cobrado nada… do banco vem outro dado a quantidade de peças e o valor unitario… onde vou gerar mais 2 campos… o campo valor unitario com ipi… e o valor total. q é a multiplicação da quantiade com o valor unitario com ipi… caso tenha q ser cobrado o ipi eu coloco um boolean informando a cobrança ou não… não seria viavel pra mim muda o tipo do dado pq teria q mudar toda o logica do sistema onde eu perderia muito tempo… e to sem tempo…
já tentei varias coisas… naquela formula q vc me passo… fiz uns cast… inseri alguns metodos java… mas nada…
tu nao vai consegui fazer essa comparação que vc quer quando vc faz o new Integer vc ta pegando aqui e transformando pra inteiro , e ele não ta reconhecendo aquele true , false , vc vai ter que comparar o inteiro com o 4 e o 0 , vai te que faze uns mexe ae na tua aplicação …
só se alguem aqui souber , mas eu não consigo ver outra solução
então consegui resolver aquele problema. mas nada pelo ireport. mudei minha aplicação mesmo e o tipo de dado do banco… mas agora tenho outro problema c alguem puder me ajudar…
estou tendo problemas com arredondamento de double no ireport… quando eu faço uma conta de porcentagem ele gera muitas casas depois da virgula. por exemplo… 3,8561 ai eu arrednondo para duas casas e ele fica como 3,86, mas quando eu faço um multiplicação por 2 por exemplo ele gera 7,71 do q 7,72 q é esperado… o q eu posso fazer para resolver isso??