Aritmética em ireport

Boas,

Estou a elaborar um report usando o Jasper ireports. Já tenho os reports feitos só que agora preciso formatar alguns resultados.

Tenho um field no report que é um double, e preciso formatar ele.

Se fizer apenas no textfield $F{Variavel}, ele surge sem problemas.
Agora se eu quiser multiplicar o field por um valor? Como é que eu faço? É que tudo onde tente precher acaba por dar erros de compilação, e o valor sem formatação não diz nada.

Obrigado
Ricardo

Cara, a única forma que eu consegui evitar esse problema foi trazendo o resultado da conta já no select.
Também gostaria de saber como se faz operações no mardito. :lol:

$F{Field}.doubleValue() * 2

epah…isto não funcionou…

Isso é suposto fazer onde?

Vou tentar detalhar mais um pouco…
Estou a usar o jasper ireport 0.4.1.

Tenho um textfield no report, onde no separador text field, em textfield expression tem o field TOTAL referenciado : $F{TOTAL} que é do tipo double.

Isto está a funcionar, só que este valor total assume valores do tipo 0,0045327384638 por exemplo, e eu preciso de o formatar. Preciso de o multiplicar etc.

Se eu fizer edit -> edit xml source, a linha referente a este objecto é:

se eu no objecto alterar o valor
$F{TOTAL}

por

$F{Total}.doubleValue()*2 obtenho os seguintes erros de compilação:

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 1. doublevalue cannot be resolved or is not a field value = (java.lang.Double)(((java.lang.Double)field_TOTAL.getValue()).doublevalue2); <---------> 2. doublevalue cannot be resolved or is not a field value = (java.lang.Double)(((java.lang.Double)field_TOTAL.getOldValue()).doublevalue2); <---------> 3. doublevalue cannot be resolved or is not a field value = (java.lang.Double)(((java.lang.Double)field_TOTAL.getValue()).doublevalue*2); <---------> 3 errors at net.sf.jasperreports.engine.design.JRJdtCompiler.compileReport(JRJdtCompiler.java:156) at net.sf.jasperreports.engine.design.JRDefaultCompiler.compileReport(JRDefaultCompiler.java:149) at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:171) at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:153) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:398) at java.lang.Thread.run(Unknown Source)

Não queria ser chato, mas infelizmente ainda não percebo muito disto e agradeço a vossa ajuda.

Ricardo, pq vc não usa o iReport ?

$F{TOTAL}.doubleValue() * 2
é diferente de
$F{TOTAL}.doubleValue * 2

E, se você precisa de totais, crie uma variável e, no tipo de conta, coloque ‘sum’ e indique o campo a ser somado :smiley:

por exemplo: preço(double) x quantidade(int)
$F{PRECO}.doubleValue() * $F{QTD}.intValue()
Assim ???

Na verdade é o que eu estou a usar. Só mostrei o código porque já reparei que aqui a malta aqui martela no xml…eu até nem percebo muito (a minha programação ficou no VB…tenho que me actualizar nas tecnologias java) mas quem percebe podia ajudar, e como o ireport permite aceder ao codigo xml…

[quote]
$F{TOTAL}.doubleValue() * 2
é diferente de
$F{TOTAL}.doubleValue * 2 [/quote]

Na verdade antes de responder aqui que não funciona, tentei as duas, daí ter pensado que estaria a trabalhar no sítio errado.
Também já tentei manipular variaveis. Mas devo ter problemas com a sintaxe. Eu preciso que a variavel assuma o valor do field “TOTAL” para depois o trabalhar…mas ainda não consegui :frowning:

Vou fazer mais umas tentativas…

PS: Este relatório tem subreports lógicamente com passagem de parâmetros. Um desses parametros é uma data…eu achei que passar a data deu trabalho…dassssss

O problema é que o seu ireport nao esta usando o jdk1.5 que tem o autoboxing. Por isso ele da erro, tenta modificar o seu compilador para o compilador do java 1.5, existe esta opcao lá em options>opcoes |Compilador|

[quote=vonlinkerstain]O problema é que o seu ireport nao esta usando o jdk1.5 que tem o autoboxing. Por isso ele da erro, tenta modificar o seu compilador para o compilador do java 1.5, existe esta opcao lá em options>opcoes |Compilador|

[/quote]

Respondeu rápido hein uhehuehueuhe :lol: