Como eu faço soma entre dois campos no ireport?
esse tipo de soma só pode ser feito na query , ou poderia criar uma variable e lá fazer a soma dos campos ?
VERSÃO 1.2.3
COMO SERIA FEITO?
Download - VERSÃO 1.2.3
http://sourceforge.net/project/showfiles.php?group_id=64348&package_id=64215&release_id=421969
DOWLOAD PARA VERSAO 1.2.5
http://sourceforge.net/project/showfiles.php?group_id=64348&package_id=64215&release_id=431462
$F{campo1} + $F{campo2} ?
Tu também podes criar uma variável e utilizar funções de cálculo (count, sum, …)
Creio que seja só criar a variable do tipo BigDecimal e colocar em “variable expression” (ou “initial value expression”, não me lembro direito) a soma dos campos da mesma forma que se faria via programação Java.
Mas eu ainda não entendi direito o que tu deseja… seria só apresentar o valor da soma de 2 campos que vem do datasource, certo? Se for somente isto, tu pode criar um “Text Field” no teu report e colocar em “Text field expression” a soma dos campos. Só tem que lembrar de selecionar a classe correta para a saída do campo… o default é String.
eU FIZ DO JEITO QUE VC ME DISSE E GERA ESSE ERRO
Errors compiling .\r_pedido.jasper!
it.businesslogic.ireport.ReportClassLoader@1fb2122 net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file: 1. The operator + is undefined for the argument type(s) java.math.BigDecimal, java.math.BigDecimal value = (java.math.BigDecimal)(((java.math.BigDecimal)field_VL_UNITARIO.getValue()) + ((java.math.BigDecimal)field_VL_DESCONTO.getValue())); <-----------------------------------------------------------------------------------------------------------> 2. The operator + is undefined for the argument type(s) java.math.BigDecimal, java.math.BigDecimal value = (java.math.BigDecimal)(((java.math.BigDecimal)field_VL_UNITARIO.getOldValue()) + ((java.math.BigDecimal)field_VL_DESCONTO.getOldValue())); <-----------------------------------------------------------------------------------------------------------------> 3. The operator + is undefined for the argument type(s) java.math.BigDecimal, java.math.BigDecimal value = (java.math.BigDecimal)(((java.math.BigDecimal)field_VL_UNITARIO.getValue()) + ((java.math.BigDecimal)field_VL_DESCONTO.getValue()));
Não costumo trabalhar com BigDecimal, ele não deve permitir somar desta forma, somente com os métodos…
VL_UNITARIO e VL_DESCONTO são campos que vem de uma consulta do banco de dados ou são um objeto de BigDecimal?
Se forem campos String usa algo assim:
new BigDecimal($F{VL_UNITARIO}).add(new BigDecimal($F{VL_DESCONTO}))
Senão pode usar o método add diretamente com os fields.
VL_UNITARIO E VL_DESCONTO
SAO CAMPOS QUE VEM DE UMA CONSULTA AO BD
NAO CONSEGUI AINDA FAZER A SOMA
Esses fields estão declarados como Integer?
O que eu quero dizer é que a questão passa a ser de programação java… o que tu tem que fazer é colocar em “field expression” algo que também funcionaria num programa java… se os campos estão declarados como Integer o construtor do BigDecimal vai gritar, ao passo que se for String irá funcionar.
Consegui resolver assim
para *, / , - ,+ … campos
$F{nomedocampo}.tipodocampoValue() * $F{nomedocampo}.tipodocampoValue()
Valeu pessoal
Como ja lhe falei via mp, faça a soma na sua query exemplo…
SELECT (CAMPO1 + CAMPO2) AS SOMA FROM TABELA1
Pode sim ser feita no IReport, mais a perfomance de fazer isso com poucos campos (que não vao se repetir é claro) seria melhor fazer em sql…
No IReport é possivel sim, fazer somas de variaveis sem vc digitar nenhuma linha de codigo…
Qual versão do IReport…?
Calma que vou baixar essa versão e logo te explico como fazer.
Se possivel gostaria q vc procurase pra mim um link pra download, pois no meu trampo a internet e travada, so e liberado dpois de meio dia e travada novamente as 13. Não vo perder tempo procurando o down, ache coloque aqui o link que na hora do almoço eu baixo e te explico como fazer…
Att,