Aritmética em ireport  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
RicardoFeliciano
Smalltalk

Membro desde: 27/04/2005 13:45:51
Mensagens: 3
Offline

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
rflprp
GUJ Ranger

Membro desde: 27/04/2005 18:52:49
Mensagens: 822
Offline

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.
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

$F{Field}.doubleValue() * 2

Former LIPE.
[ICQ]
RicardoFeliciano
Smalltalk

Membro desde: 27/04/2005 13:45:51
Mensagens: 3
Offline

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 é:
<textFieldExpression class="java.lang.Double"><![CDATA[$F{TOTAL}]]></textFieldExpression>

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()).doublevalue*2);                                                                                       <---------> 2. doublevalue cannot be resolved or is not a field                 value = (java.lang.Double)(((java.lang.Double)field_TOTAL.getOldValue()).doublevalue*2);                                                                                          <---------> 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:39     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.
rflprp
GUJ Ranger

Membro desde: 27/04/2005 18:52:49
Mensagens: 822
Offline

Ricardo, pq vc não usa o iReport ?
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

$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

Former LIPE.
[ICQ]
rflprp
GUJ Ranger

Membro desde: 27/04/2005 18:52:49
Mensagens: 822
Offline

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

Membro desde: 27/04/2005 13:45:51
Mensagens: 3
Offline

Ricardo, pq vc não usa o iReport ?


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...


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


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

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
vonlinkerstain
JavaBaby

Membro desde: 04/03/2005 12:18:51
Mensagens: 96
Offline

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|


Abraços
Dirceu Semighini Filho
[MSN] [ICQ]
rflprp
GUJ Ranger

Membro desde: 27/04/2005 18:52:49
Mensagens: 822
Offline

vonlinkerstain wrote: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|



Respondeu rápido hein uhehuehueuhe
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team