6 de maio de 2011

JasperReports 4.0.1: Conhecendo o iReport 4.0.1

O JasperReports é uma poderosa biblioteca para criação de relatórios, e o iReport é uma poderosa ferramenta para a utlização do Jasper. É importante saber que que os dois devem ser utilizados na mesma versão, o que isso quer dizer? se um relatório é compilado pelo iReport 4.0.1, na hora de utilizá-lo em um projeto, este deve conter as bibliotecas do JasperReports 4.0.1, caso contrário pode haver incompatibilidade.
Para o JasperReport 4.0.1, eu vou disponibilizar as bibliotecas, pois tive que tirar algumas pois davam muito erro de deploy em um projeto executado no GlassFish: Clique aqui para acessar e baixar
Baixar o iReport 4.0.1: Clique para acessar e baixar
Caso tenha baixado o iReport não-instalável, o executável para iniciar o programa se encontra na pasta bin. Depois de ter aberto o programa, vamos criar um novo relatório...

Criando um novo relatório
Para começar vamos criar um novo relatório, para a felicidade de alguns o iReport já trás alguns modelos prontos, para isso, vamos em Arquivo → New …



Selecione qual o modelo que deseja utilizar, para este exemplo vou pegar o modelo Blank A4, depois clique no botão Open this template. Assim aparecerá a tela para informar o nome e o local onde o mesmo será armazenado.

Ao clicar em próximo, aparece uma página de Congratulations...


Basta clicar em Finalizar, assim será criado um arquivo com a extensão .jrxml .

Entendendo as bands
As bands são responsáveis por estruturar nosso relatório, por exemplo, definir o que deve ser o cabeçalho ou rodapé (entre outras) de todas as páginas do relatório. Quando se cria um relatório vazio, as bands padrão são: Title, Page Header, Column Header, Detail 1, Column Footer, Page Footer e Summary, agora vamos entendê-las.



Title: o que é colocado dentro desta band, só aparece na primeira página de um relatório, ou seja, é o titulo do relatório.
Page Header: é o cabeçalho do relatório, tudo o que fica nesta band, se repete no inicio de cada página.
Column Header: geralmente é utilizada para definir quais são as colunas do nosso relatório.
Detail 1: em um relatório acredito que essa seja a band principal, pois é nela que os dados são listados, como se essa band fizesse um laço de repetição, e os dados fossem listados.
Column Footer: utilizada para mostrar o final da listagem da band detail 1.
Page Footer: é o rodapé da página, tudo o que é definido nesta band se repete como rodapé por todas as páginas.
Summary: geralmente esta band é usada para mostrar cálculos de relatórios que tenham valores numéricos, por exemplo mostrar um total geral. Em um relatório ela é mostrada logo após que acaba a listagem do Detail 1.
Caso não deseje utilizar todas as bands, há como removê-las, do lado esquerdo do iReport, tem um Report Inspector, veja que nele tem as bands, para remover alguma delas, basta clicar com o botão direito na qual desejar, e clicar em Delete band, mas ela aparecerá como desativada no Inspector, caso deseje adicioná-la novamente, clique com o botão direito nela e vá em Add band.

Conhecendo alguns reports elements
No lado direito do iReport deve conter uma paleta com elementos, caso esta não esteja visível, basta ir em Janela → Paleta que ela irá aparecer, ou então dar um CTRL + SHIFT + 8. Vamos começar a conhecer os elementos que eu considero mais importantes, por ordem alfabética.
Break: utilizado para quebrar uma página ou coluna.
Barcode: gera código de barras.
Chart: usado para criar gráficos.
Ellipse: serve para criar circulos no relatório (enfeite).
Image: utilizado para colocar imagens.
Line: traça uma linha no relatório (enfeite).
Rectangle: cria um retângulo (enfeite).
Round rectangle: cria retângulos com cantos arrendondados (enfeite).
Static text: serve para definir textos estáticos (para quem conhece JSF, corresponderia ao h:outputText), para editá-lo dê um clique duplo no elemento, ou utilize as propriedades que ficam no lado direito da tela do iReport. 
Subreport: esse vai ficar para uma outra postagem...
Text field: estes equivalem ao h:inputText do JSF, é neles que devem ser definidos os Fields, ou seja os campos.
Para adicioná-los ao relatório basta arrastá-los para a band que desejar, mas tem detalhe importante: esses elementos não podem ficar em cima de alguma linha da band ou fora da margem... mas caso isso aconteça, o iReport contorna o elemento com uma linha vermelha e coloca uma exclamação ao lado do elemento.

Definindo os elementos do relatórios
Veja na imagem abaixo como ficou meu relatório:


Vamos ver o que tem em cada band...
Title: um static text, que seu value foi alterado para “Empresa modelo =)”.
Page header: um line que vai de uma margem a outra.
Column header: defini três static text, com os values: CODIGO, NOME e VALOR.
Detail 1: deixei vazio, precisamos de mais algumas informações para fazer essa band funcionar, mas seriam definidos aqui três text field: uma para cada static text do Column header, mas isso é na próxima postagem...
Column footer: neste eu copiei o mesmo line do Page header.
Page footer: nesta band, eu coloquei a contagem das páginas, para fazer isso na Paleta de elementos tem uma parte que é chamada de tools, nela tem um elemento Page X of Y, somente arrastei o mesmo para esta band.
Summary: aqui por enquanto só tem um static text com o value VALOR TOTAL, na próxima postagem ele será a soma dos valores da coluna VALOR lá do Column header.
Na barra de formatação de texto, encontramos três botões: Designer, XML e Preview, veja que a que estamos utilizando e a Designer, clique em Preview para ter uma visão de como seu relatório vai ficar...



Por agora ficamos por aqui mesmo, este post é apenas para ter uma base de como usar o iReport, os próximo serão mais úteis...

Até a próxima =)

4 comentários:

  1. Ola bom dia, primeiramente parabéns pelo blog, excelente, só queria pedir uma ajuda de como faço para criar um subrelatorio.....
    Se for possivel dar uma dica, ja criei o subrelatorio e coloquei na banda Detail, mas nem no preview do ireport aparece.

    ResponderExcluir
  2. Olá Siri! Obrigada :) acredito que este post pode te ajudar: http://javasemcafe.blogspot.com/2011/06/jasperreports-401-utilizando-subreports.html

    ResponderExcluir
  3. Muito bom o post!
    Bem claro e objetivo. Obrigado!

    ResponderExcluir
  4. Boa tarde.
    Muito bom o post.
    Gostaria de tirar uma dúvida, na minha paleta não aparece direito os itens do Report Elements, eles aparecem assim: break.irpitem, frame.irpitem e não deixa eu utiliza-los;

    Como faço para corrigir isso?

    ResponderExcluir

Deixe seu comentário... ;)