Java Reporting com JasperReports e iReport Open Source - Parte I

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

 

O JasperReports é um poderoso e flexível gerador de relatórios open source. É fácil de ser integrado a aplicações Java empresariais, mas carece de um editor de relatórios visual integrado. Portanto, se quiser usar diretamente o JasperReports, precisará manipular sua estrutura de relatórios XML — uma atividade relativamente técnica, com uma curva de aprendizagem alta, para dizer o mínimo.

 

Na realidade, escrever do começo um JasperReport completo usando só o formato XML representa uma tarefa longa, dolorosa e pouco compensadora.

Afortunadamente, existem algumas alternativas disponíveis que são muito mais fáceis de usar. A melhor de todas, é o uso de um editor visual para projetar, compilar e testar os relatórios.

Um dos editores visuais mais úteis que podemos usar é o iReport. Este artigo demonstra como usar o iReport para aproveitar todo o poder do JasperReports, sem se emaranhar em complexidades do formato XML nativo do JasperReports.

Começando

A primeira coisa a fazer, é carregar e instalar o iReport. Esta é uma aplicação Java, portanto, precisaremos de um JDK na máquina (JDK 1.4 ou maior - este tutorial usa o JDK 1.5.0):

 

Fazer o download do iReport no ireport.sourceforge.net.

Descomprimir o arquivo iReport.

Rodar o startup script  (bin\startup.bat ou. / bin/startup.sh).

O download do iReport vem com o seu próprio pacote JasperReports (a versão mais atual - a 0.5.1 - suporta o JasperReports 1.0.1 recentemente liberado).

Uma vez que o iReport esteja rodando, podemos começar a projetar os relatórios!

O Banco de dados

Este tutorial usa um banco de dados muito simples para efeitos de demonstração (ver Figura 1). Para segui-lo passo a passo, poderemos tanto carregar os scripts para preparar este banco de dados com o MySQL e montá-lo na sua máquina, ou então, usar um banco de dados similar e traduzir as técnicas para a sua situação particular.


21-04-19-21-pic1.JPG

Figura 1. O Schema do Tutorial Employee Database

 

Adicionando uma Nova Conexão de Banco de dados

Primeiramente, adicione uma nova conexão ao seu banco de dados. Use o menu "Datasource -> Connections/Datasources" para montar uma nova conexão de banco de dados (ver Figura 2). Se selecionar o driver JDBC da lista (no exemplo escolhemos o MySQL), entre com o endereço do servidor e o nome do banco de dados, e clique no botão 'Wizard'. O iReport deverá fornecer uma URL JDBC correta para o seu banco de dados particular.

 

Agora que temos um datasource, está na hora de fazer alguma coisa com ele.

 

21-04-19-21-pic2.JPG

Figura 2. Adicionando uma Nova Conexão de Banco de Dados

 

             

Criando um Relatório Simples

 

21-04-19-21-pic3.JPG    

Figura 3. Um Novo Relatório JasperReports

 

Crie um novo documento JasperReports usando o item de menu "File/New Document". Podemos ignorar todas as demais opções por enquanto. Apenas daremos um nome ao relatório. Teremos assim um relatório vazio, como mostrado na Figura 3.

Um relatório JasperReport é dividido nas seções de exibição mostradas na tela iReport,:  

 

1. Title: como o nome o indica, esta seção contém o título do relatório;

2. Page Header: esta seção aparece no topo de cada página (como esperado). É um bom lugar para colocar datas, numeração de páginas, etc.;

3. Column Header: esta seção aparece no topo de cada coluna;

4. Detail: nesta área serão colocadas as informações para cada item de registro. O JasperReports gera uma seção de detalhe para todo e cada registro processado;

5. Column Footer: esta seção aparece ao final de cada coluna;

6. Page Footer: esta seção aparece ao final de cada página;

7. Last Page Footer: esta seção aparece ao final da última página;

8. Summary: esta seção aparece ao término do relatório, logo após o último registro.

 

Para começar, especificamos uma consulta SQL apropriada para o relatório, utilizando o menu Datasource/Report Query (ver Figura 4). A consulta recuperará uma lista de todos os empregados no banco de dados:  

 

select * from employee e, service s

where e.serv_id = s.serv_id

order by s.serv_name, e.emp_surname, e.emp_firstname

 

21-04-19-21-pic4.JPG 

Figura 4. O Report Query

Report Fields

Cada relatório JasperReports tem uma lista de campos que são usados para colocar no layout do relatório, os dados dos registros recuperados pela consulta ao banco de dados

Podemos visualizar a lista de campos utilizando o menu "View/Report Fields" (ver Figura 5).  

 

21-04-19-21-pic5.JPG  

Figura 5 Report Fields

 

 

21-04-19-21-pic6.JPG  

Figura 6. Inserindo os Report Fields

 

Quando criamos uma consulta SQL, esta lista é automaticamente atualizada com os campos que a consulta retorna. Para os casos nos quais usamos outros tipos de datasources, podemos ter que definir os campos manualmente.

 

A partir da janela campos de relatório (report fields window), podemos arrastar e soltar campos no relatório. Os campos geralmente entram na seção Detail, como mostrado na Figura 6. Colocamos três campos na seção Detail, junto com os títulos de coluna apropriados na seção Column Header (Cabeçalho de Colunas). Os títulos de coluna são itens de texto estáticos que podemos inserir usando o ícone "T" ou o item de menu "Insert Element/Static Text". Experimente as opções de formatação e de layout para familiarizar-se com que iReport têm a oferecer nesta área.  

 

Para visualizarmos a saída do relatório, rodamos o mesmo utilizando o item de menu "Build/Execute Report” (usando active conn). Deveremos obter um relatório como o da Figura 7.

 

21-04-19-21-pic7.JPG  

Figura 7. Pré-visualização dos Resultados do Relatório

 

Daremos continuidade à discussão sobre o Java Reporting no próximo artigo.

Até lá!

Leia todos artigos da série