Problema calculo Percentual Ireports

14 respostas
antoniopopete

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)?

14 Respostas

G

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

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

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

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

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 :frowning:

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

antoniopopete

Não consegui descobrir até hoje…

Criado 16 de abril de 2008
Ultima resposta 27 de mai. de 2008
Respostas 14
Participantes 5