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)…
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… =/
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…
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 =/
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