Eu tenho um relatório onde eu faço um agrupamento por Estado.E dentro de cada estado existe uma exibição de quantidade/percentual de uma determinada propriedade.
E tenho duas variáveis.
total
total_geral.
Ai eu criei outra variável, percentual por estado com a seguinte expressão:
new Double(($V{total_abertos}.doubleValue()
/$V{total_geral}.doubleValue())* 100d)
Só que o primeiro estado, ele sempre calcula errado, ele faz o somatório de todos percentuais individuais e não calcula pela expressão, diferente do segundo em diante.
ALguém sabe por que desse comportamento no Ireports (2.0.4)?
ola amigo a principio a formula da sua variavel está errada
eh ao contrario… tipow… total_aberto*100 / total_geral dai assim vc vai encontrar o valor correto
verifique se assim funciona
vlws
antoniopopete
Certo, o a fórmula está errada, blz?Mas deveria estar errada para todas, concorda??
O problema é que o comportamento é apenas para o primeiro registro do agrupamento, os outros ficam normais, entende?
G
gzofera
oks, entendi sim, estranho heim, mais os outros resultados fikam certos?
antoniopopete
Eu postei errado o calculo.
Mas sim, os resultados trazem certo, apenas o primeiro que traz errado.
Um colega falou que o IReports tem uma merda de cálculo e que pdoeria ser isso ,mas não vejo sentido para ele errar logo no primeiro,deve existir alguma propriedade que não estou usando adequadamente.
A
AdrianoPalm
hmmmm
Esse problema tá dando toda a pinta de estar relacionado com o EVAL. TIME da elemento…
Tenta colocar o eval.time do elemento que exibe o percentual para REPORT.
antoniopopete
Eval.time?
E por que só não no primeiro?
Mas eval.time de quem?
A
AdrianoPalm
Foi só um chute sem olhar sua fórmula…
Geralmente, quando não funciona para o 1o e para os subsequentes funciona… o problema é no eval. time(evaluation time) do elemento (no IREPORT).
No seu caso, esta propriedade deve ser tratada no field que você exibe o resultado dessa fórmula.
Não sei o nome da propriedade em português pois uso o ireport em inglês.
antoniopopete
Em relação a fórmula eu acho que está correta, não?
Se eu tenho 150 no total e recuperei 20
20/150 = 0,13
0,13 * 100 = 13%
e está correto, pois 10% de 150 = 15
1% = 1,5
1,5 * 3 = 4,5
15+4,5 = 19,5 ~= 20
Ou estou errado?
antoniopopete
Tentei mudar o eval.time da propriedade totalGeral, pois achei ela é usada no calculo do percentual e se por um acaso o ireport fizer isso a medida que incrementa o grupo, isso passa um resultado impreciso,
mas mesmo assim não adiantou.
Alguma outra sugestão, além do eval.time?
P
pecosta
Cara, tive problemas de valores totalmente errados com minhas fórmulas.
Consegui resolver o problema da seguinte maneira:
na propriedade do campo (field) existe uma opção chamada “Tempo de Execução”, selecione a opção de acordo com a sua necessidade.
exemplo: se optar por página, o calculo será feito a cada página gerada.
Abraço!
antoniopopete
Acho que foi isso que o colega quis dizer com "eval.time"
tentei e não resolveu
antoniopopete
AdrianoPalm:
hmmmm
Esse problema tá dando toda a pinta de estar relacionado com o EVAL. TIME da elemento…
Tenta colocar o eval.time do elemento que exibe o percentual para REPORT.
Eval.time como Report ele pega o valor do útlimo calculado e não me atende.
COmo group, continua vindo o primeiro errado.
Não sei o que falta para ajustar isso…
Diego_Marinho
Tbm estou com esta mesma dúvida que vc antoniopopete, só que no meu caso é uma porcentagem mostrada no gráfico!!! e dá a “gota” e o 1º registro mostra sempre 100.0 (float) e dá erro no restante dos regostros do meio e o último me retorna o resultado correto!!! o que será isso? valeu