Java Magazine Edição 47
Esse artigo faz parte da revista Java Magazine Edição 47. Clique aqui para ler todos os artigos desta edição

Relatórios com Tabulação Cruzada

Usando o componente Crosstab no JasperReports e iReport

Crie relatórios avançados e dinâmicos com agrupamentos e sumarização detalhada, usando o conjunto de ferramentas open source mais usado para a criação de relatórios em Java

Na construção de aplicações corporativas, é comum encontrar requisitos que envolvem a implementação de relatórios de tabulação cruzada. São relatórios na forma de uma tabela, que podem crescer dinamicamente e terem agrupamentos tanto por linhas quanto por colunas, com sumarizações nas duas direções. Veja a estrutura básica de um desses relatórios na Figura 1.

 

imagem

Figura 1. Layout genérico de um relatório do tipo tabulação cruzada

Desde sua versão 1.1.0, o framework JasperReports possibilita a criação de relatórios “crosstab”, (como muitas vezes são chamados), através do componente JRCrosstab ou Crosstab. O componente também é suportado pelo designer de relatórios iReport, permitindo a criação interativa de relatórios de tabulação cruzada.

Este artigo apresentará um caso de exemplo e as etapas envolvidas na criação e geração de um relatório crosstab. Supõe-se que o leitor já possua conhecimentos básicos sobre o iReport/JasperReports. Para o exemplo, será utilizado o banco de dados relacional MySQL, mas qualquer outro SGBD com driver JDBC atualizado pode ser utilizado.

Sobre o exemplo

O exemplo será conceitualmente simples: queremos implementar um relatório que mostra a quantidade de vendas das publicações de uma editora, por edição (mês/ano) em cada região do país, além de sua totalização. Um protótipo do resultado final pode ser visto na Figura 2.

 

imagem

Figura 2. Protótipo do relatório de exemplo

Construção do relatório

Podemos criar o relatório de exemplo usando um assistente (wizard) ou de forma “manual”. Neste artigo será dada preferência à forma direta. Assim poderemos apresentar melhor os conceitos, propriedades e ações envolvidas na elaboração de um relatório com tabulação cruzada. Além disso, criando o relatório manualmente veremos como um relatório gerado através do assistente pode ser posteriormente alterado.

Para os que depois optarem pelo uso do assistente, o quadro “Assistente Crosstab” descreve os passos necessários.

As edições 13, 21, 37 e 38 da Java Magazine já abordaram a implementação de relatórios a partir do JasperReports e iReport, tanto em aspectos teóricos como nas mais variadas possibilidades de implementação de relatórios, básicos e avançados.

Iniciando o relatório

O primeiro passo é criar um novo relatório em branco. Para melhor visualização do resultado, mude a orientação para paisagem: acesse o comando de menu Edit|Report Properties e no item Orientation escolha a opção Landscape. Você precisará também preparar a base de dados e a conexão; separamos estes passos no quadro “Configurando o acesso a dados”.

Com o acesso a dados configurado, defina a fonte de dados do relatório usando o comando Data|Report Query e acrescentando a seguinte consulta SQL:

 

select pub.idPublicacao, pub.nomePublicacao,

    reg.siglaRegiao, v.qtdVenda, v.mesReferencia

from publicacao as pub

  inner join vendas as v

  on (pub.idPublicacao = v.idPublicacao)

  inner join regiao as reg

...

Quer ler esse conteúdo completo? Tenha acesso completo