iReport - Trabalhar com percentuais em Gráficos

6 respostas
PadrE

Eae povo…

Eh o seguinte…

Quem ja mexeu com iReport apra montar Gráficos (jfree) deve ter passado por essa necessidade e eu gostaria muito da ajuda de vcs… =/

Ao trabalhar com gráficos, eh necessário exibir as informações em percetual, para melhor análise e tudo mais… e para isso, precisamos fazer uma simples continnha de divisão entre o valor que vc quer passar para percentual e somatória dos valores…

O problema nisso está em ter que traxer essa somatória junto com a query, sendo uma coluna da consulta… O motivo disso está na maneira como o gráfico eh gerado e como as variáveis de somatória, contador e outras são preenchidas pelo Jasper…

Se tentar fazer $F{SUB_TOTAL} / $V{V_TOTAL} sendo a V_TOTAL uma somatória do campo SUB_TOTAL, não da muito certo, porque o V_TOTAL so trará o valor total no fim da leitura de todos os registros retornados pela sua consulta… até ai blza… se ele não fosse gerando o relatório a cada detail =/

Ou seja… eu preciso do valor total logo no primeiro registro para poder fazer as conversões de percentuais… e não da para esperar o fim da laitura… a menos que eu imprima um único Gráfico no Sumario do relatório… que não eh bom o meu caso… =/

E o problemas de trazer o total no SQL está em perfomance… perco muito disso sendo que poderia fazer na própria ferramenta… 9se eu soubesse hehe)…

Aguardo sugestões !!!

Vlw !

6 Respostas

PadrE

Nada ainda… =/

Fiz uns testes aki e ainda não saiu o que queria…

Vou dar um exemplo…

Ao montar o gráfico tenho as seguintes informações…

mes valor 01 100 02 110 03 90 04 50

Ao montar o gráfico preciso colocar com valor da expressão percentual… ou seja, pra cada linha lida, preciso ter o total antes… e fazer isso:

mes valor $V{TOTAL} 01 100 100/350 02 110 110/350 03 90 90/350 04 50 50/350

Mas qndo tento criar a variável TOTAL, não rola… porque os cálculos ficam na geração do gráfico ficam:

mes valor $V{TOTAL} 01 100 100/100 02 110 110/210 03 90 90/300 04 50 50/350
Ou seja… ele obtem o total conforme vai imprimindo, mas o gráfico eh gerado conforme as linhas são lidas… o que quero eh ter o valor total antes de começar a gerar o gráfico… =/

Vou continuar tentando… ! =]

Vlw !

PadrE

Eae galera… FELIZ ANO NOVO ! =]

Nem uma idéia ???

Eu já tentei fazer grupo de tudo que eh jeito para isso… mas nada… =/

Agora to com a versão 2.0.3 do iReport… e tentando de novo…

Ja to até vendo a possibilidade de usar os scriplet’s do próprio iReport para me ajudar nisso… =[

marcosbrandao

faz um select mais ou menos assim:

select count(column), qtd_total.a from tabela, (select count(column) as a from automovel) qtd_total group by qtd_total.a

ai vc tem o total da tabela em cada linha.

A

pare de sofrer… faça o grafico com o jfreechart fora do jasper gere um jpg, depois pegue o path dele e passe por parametro ao jasper dentro dele voce referencia ele com um image…

mais facil e rapido… pelo menos eu acho! :wink:

PadrE

marcosbrandao,

eu estou fazendo assim como vc disse… mas estou tento alguns problemas de perfomance no banco por causa disso… por isso eu queria uma forma de conseguir o total com recursos do próprio iReport.

e andrericarte,

Esse forma de gerar o gráfico, usando um IMG, não manjo muito como fazer não, e nem sei te dizer se seria mais fácil, ta certo que eu poderei fazer quantos select forem necessários e montar o gráfico do geito que precisar (ao menos eu acho ^^)… Vou procurar alguns exemplos e tutoriais de como montar um gráfico direto pelo código e usando o jfreechart… ah! o iReport usa o jfreechart 1.0 para motnar os gráficos tb…

Bom… parece que conseguir esse total direto pelo iReport não eh possível =/

Vlw ae as dicas !

marcosbrandao

PadrE,

sem dúvida fazer subselect causa uma boa perda de performance, ainda mais se retornar muitas linhas. Mas n o teu caso acho que é a unica maneira. Fazendo como o andrericarte disse provavelmente será a sua melhor opção.
Da uma olhada no site do jfreechart e procura uns exemplos no google.
No site da Koders também tem uns exemplos legais

Criado 18 de dezembro de 2007
Ultima resposta 9 de jan. de 2008
Respostas 6
Participantes 3