Artigo Java Magazine 38 - Mais relatórios Passo a Passo
Artigo publicado pela Java Magazine 38.
Clique aqui para ler todos os artigos desta edição
Mais relatórios Passo a Passo
Totalizações e gráficos com iReport e JasperReports
Aprenda como definir agrupamento e calcular totais em vários níveis em um relatório mestre-detalhe, e veja como criar um gráfico de resumo no final do relatório
No artigo “Relatórios na Web Passo a Passo”, na edição anterior, apresentamos o JasperReports e o iReport e mostramos como criar um relatório mestre-detalhe completo, que lista detalhes dos pedidos de clientes. Neste artigo, vamos incrementar o relatório definindo grupos e acrescentando diversas totalizações. Também vamos mostrar como criar e configurar gráficos no relatório
Sobre o projeto de exemplo
O projeto utilizado neste artigo permite a execução de um relatório a partir de uma aplicação web. Ele é baseado em quatro entidades principais: pedidos, itens de pedido, clientes e produtos. Os dados do relatório são obtidos a partir de um banco MySQL, e o modelo de dados é mostrado na Figura 1.
Figura 1. Modelo de dados do projeto de exemplo.
A Figura 2 representa o resultado final desse relatório. O quadro “Como criar o relatório inicial” resume os passos para a criação. O projeto completo, com todas as classes necessárias, os templates de relatório .jrxml e o script para criação do banco de dados, está disponível no site da Java Magazine. Os leitores que não acompanharam o artigo na edição anterior poderão obter esse exemplo pronto, e partir dele para realizar as mudanças detalhadas aqui. Será disponibilizado no download tanto o projeto inicial, como o projeto final, resultado das alterações feitas neste artigo.
RelatorioPedidos.jrxml
RelatorioItens.jrxml
Figura 2. Relatório e sub-relatório iniciais (como criados na edição anterior), e resultado da execução do relatório
Agrupando pedidos por cliente
Repare na Figura 2 que, quando um cliente tem diversos pedidos, os dados do cliente (no caso, o nome) aparecem repetidos para cada pedido. Vamos melhorar o relatório, agrupando todos os pedidos de um cliente e imprimindo somente uma vez os seus dados. Para isso precismos definir um grupo para fazer quebra de pedidos por cliente.
Quando um grupo é criado no JasperReports, automaticamente são criadas duas novas bandas: nomegrupoHeader e nomegrupoFooter (por exemplo, clienteHeader e clienteFooter para um grupo com nome cliente). Colocamos nestas bandas as informações associadas ao grupo, que neste caso são o nome do cliente e o valor total do cliente; já os dados de cada item do grupo permanecem na banda detail, que são os pedidos e itens de pedido do cliente.
Também é preciso definir uma expressão de agrupamento utilizada pelo JasperReports para fazer a quebra do grupo. Usamos o nome do cliente. Para que os grupos sejam apresentados da maneira esperada, é preciso que a fonte de dados também esteja ordenada corretamente, ou seja, a consulta SQL deve ter a cláusula “order by” (ou se for usado um datasource de JavaBeans, deve-se passar uma coleção com os objetos já ordenados de forma compatível com os grupos desejados, neste caso o nome do cliente)."
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo