Java Reporting com JasperReports e iReport Open Source - Parte III

JasperReports é uma solução open source poderosa e flexível para geração de relatórios. O visual designer iReport, permite tirar total vantagem do poder do JasperReports sem necessidade de conhecimento profundo do formato XML nativo JasperReports

                                                                                                                     John Ferguson Smart

Adicionando Grupos
Suponhamos agora, que desejamos agrupar os empregados pelo tipo de serviço, e calcular um subtotal de salários para cada tipo de serviço. A primeira coisa a fazer é definir um grupo de relatório pelo menu "View/Report Groups" (ver Figura 12).  

fig12javareport.JPG
Figura 12. Adicionando um Novo Grupo 

O campo mais importante aqui é 'Group Expression'. Cada vez que esta expressão muda, será gerado um novo grupo. Portanto, se agruparmos os registros pelo tipo de serviço, usaremos o campo nome do serviço ("$F{serv_name}"). Como imaginado, para que isto funcione corretamente, temos que ordenar apropriadamente a consulta SQL ("order by serv_name,... "). 

Quando adicionamos um novo grupo, obtemos duas novas seções: "serviceHeader" e "serviceFooter". Estas seções são geradas, respectivamente, no começo e no fim de cada grupo de serviço. Reposicionamos os cabeçalhos de coluna estáticos na seção "serviceHeader" e colocamos o campo $F{serv_name} acima de estas colunas, para que ajam como um título de grupo.  

fig13javareport.JPG
Figura 13. Adicionando um Novo Grupo

Agora criamos uma nova variável chamada service_salary_subtotal, como ilustrado na Figura 13. Esta última variável, é semelhante à anterior, porém com duas diferenças importantes: Reset Type é 'Group', e Reset Group é 'service’, significando que a variável será zerada ao começo de cada novo grupo de serviço.  

fig14javareport.JPG 
F
igura 14. O Layoute do Relatório Agrupado 

Arrastamos esta variável para a seção "serviceFooter", para exibir o subtotal de todos os salários para cada grupo. O layoute deverá ter o aspecto da Figura 14 e o relatório gerado deverá ter o aspecto da Figura 15.  

fig15javareport.JPG
Figura 15. O Relatório Agrupado
 

Relatórios com Gráficos
No JasperReports 1.0.1 e no iReport 0.5.1, podemos projetar relatórios com gráficos. Suponhamos que desejamos adicionar um gráfico de torta, que mostra ao final do relatório, o custo relativo do salário para cada serviço. Teríamos que colocá-lo na seção Summary. Podemos precisar aumentá-la um pouco, de forma a caber um gráfico de bom tamanho. Portanto, adicionamos um novo gráfico nesta seção usando o item de menu "Edit/Insert Element/Chart" ou o ícone "Chart tool". Escolhemos o gráfico de torta.  

Clicamos em new chart e a seguir na aba 'Chart'. A seguir, clicamos no botão 'Edit Chart Properties' e então na aba 'Chart data' (ver Figura 16).  

Os parâmetros de gráfico são diferentes para cada tipo de gráfico. A aba 'Chart data' do gráfico de torta tem três zonas:  

·         Key Expression: identifica cada fatia. Informar "$F{serv_name}" para que cada fatia represente um serviço; 

·         Value Expression: informe "$V{service_salary_subtotal}" para associar ao custo de salário total de cada serviço;

·         Label Expression: é o rótulo que será exibido para cada fatia. Informar "$F{serv_name}" para exibir o nome do serviço.  

Agora rodamos o relatório. Deveremos obter um gráfico de torta ao término do mesmo (ver Figura 17).  

fig16javareport.JPG 
Figura 16. Chart Design

fig17javareport.JPG 
Figura 17. Chart Report

 

Leia todos artigos da série