Você está na página 1de 109

Edson Gonalves

em

on

st

ra

Desenvolvendo Relatrios
Profissionais com iReport
para NetBeans IDE

Este livro dedicado ao Samuel,


filho do ngelo e de sua esposa Erica,

em

on

st

ra

grandes amigos e agora pais.

AGRADECIMENTOS
Primeiramente quero agradecer a minha famlia, pelo apoio e compreenso da minha ausncia.
Agradeo o apoio da Editora Cincia Moderna, em especial ao editor Paulo Andr P. Marques, pelo incentivo e crdito em mais este livro.

em

on

st

ra

Um agradecimento especial ao JUG Leader e Founding Java Champion,


Daniel deOliveira, pelo apoio que uma comunidade de grande peso como o
DFJUG tem sobre meu trabalho.

PREFCIO
Nem bem havia feito um ano que meu primeiro livro sobre relatrios JasperReports usando iReport havia sido iniciado e, acompanhando o site oficial da ferramenta, recebo uma excelente notcia: o iReport ir rodar sobre o NetBeans IDE.
Na prtica, isso significa que voc, como desenvolvedor, poder criar, testar e
utilizar seus relatrios diretamente na IDE, sem a necessidade de abrir outro aplicativo. De fato, isso um grande salto para as ferramentas gratuitas, que anos atrs,
no tinham essa caracterstica.

Embora o iReport permanea com sua estrutura, praticamente inalterada, houveram mudanas visuais para que o mesmo se incorporasse ao NetBeans.

em

on

st

ra

Espero que gostem deste livro tanto quanto gostei de reescrev-lo.

INTRODUO AO DESENVOLVIMENTO DE
RELATRIOS COM IREPORT
Em 2001, nasceu o JasperReports, criado por Teodor Danciu, quando teve a tarefa de avaliar ferramentas de relatrios para um projeto que estava trabalhando.
As solues existentes eram muito caras para o oramento do projeto e, em uma
situao comum no mundo do desenvolvimento, ele decidiu escrever sua prpria
ferramenta de relatrios, que ao liber-la para a comunidade, ficou imensamente
popular em pouco tempo.

O JasperReports uma biblioteca escrita em Java, de cdigo fonte open source,


projetada para ajudar o desenvolvedor com a tarefa de criar relatrios para aplicaes, tanto Desktop como Web, fornecendo uma API que facilita sua gerao.

on

st

ra

Embora o JasperReports tenha simplificado o desenvolvimento de relatrios, o


desenvolvedor, alm da necessidade de conhecer seu formato XML, utilizado para
criar os relatrios, tambm dependia de clculos para determinar a posio de cada
componente no relatrio de forma harmnica.

em

Em 09 de outubro de 2002, o italiano Giulio Toffoli lanou, de forma independente, uma ferramenta para gerar relatrios visuais, chamando-a de iReport. Sua
caracterstica era de desenvolver relatrios gerando o formato XML no padro JasperReports. Isso tornou mais acessvel e intuitivo o uso dos relatrios escritos em
JasperReports.
Em 2005, com a popularidade do iReport, a JasperSoft (empresa mantenedora
do JasperReports) tornou esta ferramenta oficial na construo de relatrios para o
JasperReports.
Com seis anos de existncia, o iReport reescrito para trabalhar dentro do NetBeans IDE, aps o seu criador ter visto uma palestra no JavaOne 2007 a respeito
de um desenvolvedor que estava criando tal ferramenta para gerar relatrios JasperReports.

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Este livro a mais que uma orientao, um guia que o ensinar a utilizar o iReport para NetBeans para construir relatrios JasperReports, criando desde os mais
simples relatrio at os mais sofisticados, utilizando desde uma linguagem SQL at
as mais sofisticadas linguagens orientadas a objetos como HQL do Hibernate e EJB
QL (Enterprise JavaBeans Query Language), passando por sub-relatrios, relatrios
com grficos, crosstab, passagem de parmetros e outros.
Tambm ser visto a exportao para diversos formatos suportados pelo JasperReports, como PDF, MS Excel, RTF, ODF, entre outros.

em

on

st

ra

O leitor tambm aprender a chamar seus relatrios atravs de aplicaes


desktop e Web criadas unicamente no NetBeans.

Introduo

XI

QUEM DEVE LER ESTE LIVRO?


Este livro foi escrito para desenvolvedores com experincia na linguagem Java,
que possuem pouca ou nenhuma familiaridade com a construo de relatrios, seja
em JasperReports com iReport ou com outra ferramenta qualquer neste sentido.

tambm desejvel que o leitor esteja bem familiarizado tanto com o desenvolvimento desktop Java Swing, como em aplicaes Web envolvendo Servlets, JSP
e JavaServer Faces. O conhecimento de frameworks Java ORM, como o Hibernate
e TopLink, de EJB 3 e IoC, como o Spring, importante para um melhor aproveitamento dos exemplos.

ra

ANTES DE COMEAR

em

on

st

Em algumas partes deste livro, voc encontrar apenas o trecho do cdigo produzido, focado no assunto em questo, possuindo uma simbologia indicativa de
que o restante no est sendo mostrado. Este smbolo mostrado a seguir:

... Indica que acima ou abaixo contm mais cdigo, mas que no est sendo exibido, sendo necessrio recorrer ao exemplo completo, para visualiz-lo na ntegra,
que pode ser baixado gratuitamente no site do autor.

OS SOFTWARES REQUERIDOS
Os aplicativos criados nesse livro no exigem software proprietrio. Portanto ao
longo dos captulos voc no s aprender a us-los, como tambm onde encontrlos na Internet, caso precise de uma atualizao.
Esse livro no est focado especialmente em um sistema operacional, portanto
a sua escolha livre neste sentido.

XII

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

HARDWARE REQUERIDO
Uma boa configurao de hardware se faz necessrio para trabalhar com aplicaes escritas em Java. Um computador para rodar bem o iReport para NetBeans
deve ter as seguintes configuraes para uma confortvel utilizao, segundo o
autor:
Processador: Pentium 4 (similar) ou superior
Memria: 512 MB de RAM mnimo (recomendo 2 GB de RAM no uso do NetBeans IDE completo)

ra

Monitor: 17 polegadas ou superior

HD: 100 MB de espao livre (1GB caso esteja utilizando o NetBeans IDE)

st

CDIGOS DOS EXEMPLOS CRIADOS NO LIVRO

on

Todos os cdigos dos exemplos criados se encontram no site do autor: http://


www.integrator.com.br.

em

Caso no encontre algum exemplo entre em contato pelo e-mail edson@integrator.


com.br.

Introduo

XIII

VISO GERAL DOS CAPTULOS


Embora este livro esteja completamente focado na utilizao do iReport para
NetBeans, ainda assim, voc ter ao longo desta obra alguns cdigos para desenvolver. Em grande parte, o cdigo est sendo mostrado apenas no trecho que importa,
focado para funcionar em aplicativos. Os exemplos completos esto no SITE do
AUTOR, que possui a separao por captulo, para sua melhor orientao.

O livro completamente ilustrado, possuindo dezenas de figuras espalhadas ao


longo de todos os seus captulos, incluindo sempre o foco em detalhes, para que
voc no se perca. Dicas tambm so dadas para que o leitor possa ter uma melhor
compreenso do que est sendo desenvolvido, incluindo os passos para executar
cada exemplo.

st

ra

A seguir, voc tem uma sinopse de cada um dos captulos do livro, incluindo
tambm o apndice:

on

CAPTULO 1 - CONHECENDO O IREPORT PARA NETBEANS IDE

em

O iReport para NetBeans IDE um programa Open Source, capaz de criar visualmente os mais complexos relatrios para aplicaes Java no formato da biblioteca
JasperReports.
Atravs de uma interface grfica intuitiva, o desenvolvedor capaz de criar qualquer tipo de relatrio de forma simples e rpida. Mesmo sabendo que o iReport
desenvolve um formato XML usado pelo JasperReports, o que no difcil de manipular, h uma vantagem em usar esta ferramenta. Se o desenvolvedor um usurio iniciante no formato XML do JasperReports, o iReport supre suas necessidades
evitando que seja necessrio fazer modificaes no cdigo fonte. Caso seja experiente neste formato, o iReport minimiza o tempo na criao dos mais complexos
relatrios.
Neste captulo voc aprender onde obter, os requerimentos necessrios para
executar, como instalar e entender sobre algumas das mais importantes caractersticas do iReport.

XIV

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

CAPTULO 2 - INICIANDO NO IREPORT PARA NETBEANS


O iReport uma ferramenta que est preparada para construir visualmente os
mais complexos relatrios dentro dos limites do JasperReports.
Embora o primordial de iReport seja de desenhar relatrios, existem tambm
suas caractersticas para configuraes.

Este captulo o introduzir ao desenvolvimento bsico de relatrios usando o


iReport para NetBeans, partindo de sua execuo inicial e suas configuraes bsicas.

CAPTULO 3 - ESTRUTURA DE UM RELATRIO E SEU

ra

DESENVOLVIMENTO

em

on

st

Um relatrio uma maneira agradvel de apresentar as informaes vindas de


alguma base de dados com sua aparncia formatada. Na maioria das vezes, relatrios so usados para agrupar as informaes vindas de um conjunto de dados, relacionados entre si, oriundos de diversas tabelas. Como resultado voc tem apenas os
campos determinados na construo do seu relatrio e exposto como tal de forma
a simplificar a compreenso das informaes. Vindo em um formato padronizado
para imprimir, como um texto feito em um editor de textos, voc s precisa mandar
para a impresso ou export-los para outro formato de uso maior.
Neste captulo voc ir conhecer a estrutura de um relatrio JasperReports na
ferramenta iReport para NetBeans e suas propriedades.

CAPTULO 4 - CRIANDO UM RELATRIO SEM O USO DE


ASSISTENTES
Para uma maior compreenso dos diversos elementos que compem um relatrio no JasperReports, atravs do iReport para NetBeans, importante a um desenvolvedor aprender a desenh-lo manualmente, isto , sem o uso de assistentes.

Introduo

XV

Neste captulo voc ir aprender a criar um relatrio manualmente, adicionando


diversos elementos, configurando-os e trabalhando com banco de dados.

CAPTULO 5 - GERANDO RELATRIOS COM GRUPOS E


PASSAGEM DE PARMETROS

Os relatrios mais utilizados em aplicaes, com toda certeza, so os dinmicos. Aqueles relatrios que transmitimos uma determinada informao e este nos
trazem determinados dados.

st

ra

Neste captulo voc aprender a criar um relatrio mais complexo, utilizando


mais de uma entidade (tabela) no desenvolvimento, agrupando informaes e filtrando-as atravs de parmetros.

on

CAPTULO 6 - CHAMANDO O RELATRIO POR UMA


APLICAO DESKTOP

em

Assim como criar um relatrio, muito fcil cham-lo por uma aplicao. Este
captulo utilizar uma aplicao desktop simples, com interface grfica Swing, criada no NetBeans IDE, apenas com o intuito de ensin-lo a chamar sua aplicao.

CAPTULO 7 - SUB-RELATRIOS
Os sub-relatrios so relatrios dentro de outros, tambm conhecidos como
relatrios do tipo mestre-detalhe.
A idia bsica para a criao de um relatrio mestre-detalhe ter duas entidades
relacionadas.
Estes relatrios, embora possam parecer complexos, so simples de desenvolver
em JasperReports.

XVI

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Neste captulo voc aprender a criar sub-relatrios em seus relatrios usando


o iReport para NetBeans e acesso a dados, conhecer a band noData na prtica e
depois o chamar atravs de uma aplicao Web com JSP e Servlets.

CAPTULO 8 - RELATRIOS COM HIBERNATE


Criar relatrios com o uso do Hibernate como camada de acesso a banco de
dados um caso comum no desenvolvimento de aplicaes Web.

O Hibernate hoje o mais popular projeto de gerenciamento de dados persistentes em Java e tambm o que possui uma gama de solues para problemas
comuns.

st

ra

Neste captulo voc aprender a desenvolver seus relatrios utilizando o Hibernate para acessar os dados, incluindo um exemplo com sub-relatrio.

on

CAPTULO 9 - RELATRIOS USANDO EJB QL

em

O uso de Java Persistence API se tornou muito intenso, e como no poderia


deixar de ser, o JasperReports possui suporte a esta especificao atravs de EJB QL.
Esta linguagem de queries possui uma semelhana HQL do Hibernate e tambm a
tradicional instruo SQL.
Com a especificao do EJB3, na introduo da JPA, Java Persistence API, ficou
muito popular o uso de JPQL, Java Persistence Query Language, que uma uma
extenso da EJB QL (Enterprise JavaBeans Query Language).
Neste captulo voc vai aprender a configurar um arquivo de persistncia e criar
um relatrio com sub-relatrio utilizando a EJB QL.

Introduo

XVII

CAPTULO 10 - GERANDO RELATRIOS COM OUTRAS


FONTES DE DADOS
O JasperReports rico no fornecimento de outras fontes de dados acessveis
para que possamos gerar relatrios.
Muitos sistemas costumam exportar diversos tipos de dados, sendo os mais
comuns o formato CSV e XML.

Este captulo tratar de outras formas de acesso que no utilizam um banco de


dados diretamente.

st

ra

CAPTULO 11 - SIMPLIFICANDO RELATRIOS COM


GROOVY

em

on

Groovy uma linguagem dinmica escrita para a plataforma Java, inspirada em


linguagens como Ruby, Python e Smalltalk. Embora seja simples de manipular e muito similar as linguagens de scripting, Groovy um pouco mais complexo. Aplicaes
com Groovy podem ser pr-compiladas em bytecodes Java, para ser integrada suas
aplicaes Java.

Graas a um Java Specification Request (JSR-241), Groovy se tornou a segunda


linguagem oficial padro do Java Virtual Machine (JVM), depois de Java, claro.
Desde a verso 0.6.6 do JasperReports, h suporte a linguagem Groovy. Com
isso, quem ganha o desenvolvedor, que tem em suas mos uma maior simplicidade no desenvolvimento de expresses em seus relatrios.
Neste captulo voc vai construir um relatrio utilizando Groovy, trabalhando
com expresses e aprender como rodar o relatrio criado em suas aplicaes tambm usando Groovy.

XVIII

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

CAPTULO 12 - CRIANDO GRFICOS E SUBDATASET EM


SEUS RELATRIOS
Como todo bom relatrio, no poderia faltar os grficos. Simples e eficazes, os
grficos exibem uma situao visualmente impactante, possibilitando um entendimento muito maior, mais rico, do que apenas nmeros e textos.
O JasperReports possui suporte a gerao de grficos, facilitando o desenvolvimento do relatrio, atravs da biblioteca JFreeChart.

ra

Neste captulo ser apresentado como criar grficos em um relatrio JasperReports usando o iReport para NetBeans, alm de aprender a trabalhar com consultas
diferentes no mesmo relatrio, o que chamamos de Subdataset.

st

CAPTULO 13 - INTERNACIONALIZANDO RELATRIOS

em

on

Aplicaes internacionalizadas so muito comuns no mundo do desenvolvimento. No seria diferente no caso dos relatrios. O JasperReports introduziu esta caracterstica na verso 0.6.2 e desde ento seu suporte foi acrescentado ao iReport,
facilitando mais ainda seu desenvolvimento.

Neste captulo ser criada uma aplicao Java desktop simples, pelo NetBeans,
para ser usada com um relatrio internacionalizado gerado pelo iReport.

CAPTULO 14 - CROSSTABS
Crosstabs (cross-tabulation), no JasperReports, so tabelas cruzadas, comuns no
desenvolvimento de relatrios com a utilizao de planilhas eletrnicas, tambm
conhecidas por tabelas dinmicas ou tabelas de referncias cruzada.
Diferente dos demais relatrios criados at o momento no livro, um relatrio
crosstab possui uma tabela contendo um nmero de linhas e colunas que no se
conhece em tempo de design.

Introduo

XIX

Graas ao iReport, voc pode contar com o uso de um assistente, tornando esta
tarefa no muito complicada.
Neste captulo voc aprender a criar crosstabs no iReport, modificar, formatar
e usar tambm subdatasets para relatrios mais complexos.

CAPTULO 15 - OUTRAS CARACTERSTICAS DA GERAO


DE RELATRIOS

st

ra

Neste captulo voc conhecer outras caractersticas da ferramenta iReport, alm


do JasperReports, que no foram apresentadas at o momento, sendo passadas em
formato de dicas, como adicionar um trecho da query em um relatrio, minimizar o
consumo de memria, imagem de fundo no relatrio e outras.

on

CAPTULO 16 - SCRIPTLET

em

Um scriptlet uma classe Java desenvolvida unicamente para executar durante


a gerao da impresso do relatrio na tela. O scriptlet possui mtodos que so
invocados na gerao de relatrios possibilitando manipul-los, como a ocorrncia
da criao de uma nova pgina ou o acesso a um determinado parmetro.

Neste captulo ser visto como escrever um simples scriptlet, qual a sua utilidade e como us-lo em seu relatrio.

CAPTULO 17 - DESENVOLVENDO SEUS PRPRIOS


TEMPLATES
Quando usamos um assistente de criao de relatrios, na ltima etapa fazemos
uso de templates. Algumas vezes pode ser til criar um ou vrios templates para
usar no assistente.
Neste captulo voc vai aprender a criar seus prprios templates e utiliz-los no
iReport.

XX

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

APNDICE A - EXPORTANDO PARA OUTROS FORMATOS


Este apndice uma referncia sobre a API do JasperReports na exportao para
outros formatos atravs de sua aplicao, seja desktop ou Web.
Os formatos discutidos aqui so os mais utilizados para exportao pelo JasperReports: RTF, XLS, CSV, HTML e ODF.

PARA DOWNLOAD: APNDICES B, C, D E E

ra

Para Download, veja CDIGOS DOS EXEMPLOS CRIADOS NO LIVRO, alm dos
arquivos referentes aos exemplos contidos no livro, h tambm os seguintes apndices:

on

st

APNDICE B O MYSQL

em

APNDICE C CONTEXTO DE DESENVOLVIMENTO WEB


EM JAVA
APNDICE D TRABALHANDO COM DATAS EM JAVA
APNDICE E O TOMCAT

SUMRIO

st

ra

Captulo 1 - Conhecendo o iReport para NetBeans IDE ........................................... 1


Antes de utilizar o iReport para NetBeans IDE .............................................. 3
Obtendo e instalando o Java SE .................................................................... 3
A instalao no Windows .............................................................................. 4
Em Windows verso 9x ................................................................................. 5
A instalao no Linux .................................................................................... 5
Obtendo e instalando o iReport para NetBeans IDE ..................................... 7
Algumas caractersticas do iReport para NetBeans IDE................................. 8
Instalando o iReport .................................................................................... 9
No Windows com instalador ......................................................................... 9
No Windows e Linux sem instalador ........................................................... 10
Como instalar o plug-in iReport for NetBeans............................................. 10
Compilando o fonte do iReport para NetBeans .......................................... 11

em

on

Captulo 2 - Iniciando no iReport para NetBeans ................................................... 13


Abrindo o iReport para NetBeans pela primeira vez......................................... 15
Um relatrio com iReport para NetBeans ......................................................... 16
O banco de dados usado ............................................................................. 16
O primeiro relatrio no iReport para NetBeans na verso Standalone ....... 17
Visualizando o primeiro relatrio ............................................................... 21
Configurando o iReport para NetBeans ............................................................ 21
A compilao do iReport para NetBeans no preview ........................................ 22
A verso do iReport para NetBeans como plug-in ............................................ 22
O arquivo de propriedades do iReport como plug-in.................................. 23
Abrindo um relatrio no iReport para NetBeans ......................................... 23
iReport para NetBeans em ingls ................................................................ 24
Captulo 3 - Estrutura de um relatrio e seu desenvolvimento.............................. 25
A estrutura do relatrio .................................................................................... 27
Title ............................................................................................................. 29
Page Header ................................................................................................ 29
Column Header ........................................................................................... 30
Detail ........................................................................................................... 30

XXII

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Column Footer ............................................................................................ 31


Page Footer ................................................................................................. 31
Last Page Footer .......................................................................................... 32
Summary ..................................................................................................... 32
Background ................................................................................................. 33
noData ......................................................................................................... 33
Compreendendo as propriedades de um relatrio ........................................... 33
Dimenses de um relatrio ......................................................................... 34

em

on

st

ra

Captulo 4 - Criando um relatrio sem o uso de assistentes .................................. 45


Iniciando um relatrio manualmente .......................................................... 47
A janela Palette ............................................................................................ 47
Adicionando uma conexo a um relatrio vazio ......................................... 49
Criando a query do relatrio ....................................................................... 51
Os elementos da query registrados no JasperReports ................................ 55
Desenhando o relatrio............................................................................... 56
Os smbolos para exibir o formato de nmeros .......................................... 63
Conhecendo melhor o Text Field ................................................................ 64
Criando o efeito zebra em seu relatrio ..................................................... 65
Estilos no JasperReports .............................................................................. 67
Exibindo imagens em seu relatrio ............................................................. 68
Um pouco mais sobre o elemento image .................................................... 69
Adicionando links em elementos ................................................................ 74
Contando registros e exibindo na band Summary ...................................... 77
Salvando em outros formatos ..................................................................... 78
Captulo 5 - Relatrios com grupos e passagem de parmetros ............................ 79
O relatrio que ser desenvolvido .............................................................. 81
Gerando o relatrio ..................................................................................... 81
Criando a query do relatrio ....................................................................... 83
Criando o grupo .......................................................................................... 85
No arquivo JasperReports ............................................................................ 86
Adicionando os elementos na band PedidoGroupHeader ........................... 87
Padres para datas ...................................................................................... 88
Criando variveis com clculos .................................................................. 89
Adicionando os elementos na band detail ................................................. 90

Sumrio

XXIII

Totalizando por pedido .............................................................................. 92


Finalizando a aparncia do relatrio ........................................................... 93
Adicionando parmetros ao relatrio ......................................................... 94

Captulo 6 - Chamando o relatrio por uma aplicao desktop ............................. 97


A aparncia final do aplicativo .................................................................... 99
As bibliotecas necessrias para obter o relatrio...................................... 100
A biblioteca JDBC para a conexo com o banco de dados ........................ 100
O projeto no NetBeans IDE para executar o relatrio ............................... 101
Executando o relatrio .............................................................................. 103
Executando o projeto ................................................................................ 111

em

on

st

ra

Captulo 7 - Sub-relatrios.................................................................................... 113


O relatrio mestre-detalhe que ser desenvolvido ................................... 115
Criando e configurando o relatrio principal ............................................ 116
Gerando a query ........................................................................................ 117
Definindo a posio dos campos............................................................... 118
O formato para a exibio do nmero de pginas .................................... 120
Adicionando contedo na band noData .................................................... 120
Gerando o sub-relatrio ............................................................................ 121
Configurando a aparncia do sub-relatrio ............................................... 121
Modificando a query do sub-relatrio....................................................... 123
Adicionando o sub-relatrio ao relatrio .................................................. 124
No arquivo JasperReports .......................................................................... 125
Alterando as propriedades do sub-relatrio ............................................. 127
Retornando valores do sub-relatrio ......................................................... 128
Chamando o relatrio por uma aplicao web ........................................ 131
Criando marcadores para o relatrio em PDF ........................................... 137
Captulo 8 - Relatrios com Hibernate ................................................................. 141
O Hibernate ............................................................................................... 143
Criando um projeto usando Hibernate no NetBeans IDE .......................... 144
As bibliotecas do JasperReports e MySQL JDBC ........................................ 145
Criando as entidades ................................................................................. 145
Mapeando as tabelas ................................................................................. 147
Configurando o Hibernate......................................................................... 151

XXIV

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Compilando o projeto ............................................................................... 154


Sobre Hibernate Annotations no iReport .................................................. 154
Configurando o Hibernate no iReport para NetBeans ............................... 154
Criando a conexo com o Hibernate no iReport para NetBeans ............... 155
Desenvolvendo o relatrio ........................................................................ 156
Criando um relatrio com sub-relatrio usando Hibernate ...................... 157
A aplicao usando o Hibernate ................................................................ 161
Finalizando o projeto no NetBeans com Hibernate e o relatrio criado .. 162
Relatrio usando o Hibernate atravs do Spring ...................................... 167

em

on

st

ra

Captulo 9 - Relatrios usando EJB QL .................................................................. 169


O conceito da API de persistncia ............................................................. 171
Sobre Java Annotations ............................................................................. 172
Criando as entidades ................................................................................. 173
O relacionamento ...................................................................................... 178
Onde encontrar o TopLink......................................................................... 182
Criando a conexo EJBQL no iReport ........................................................ 182
Desenvolvendo o relatrio ........................................................................ 183
O sub-relatrio .......................................................................................... 186
Adicionando o sub-relatrio ao relatrio mestre ...................................... 188
Adicionando o parmetro especial para manter a sesso ......................... 188
Selecionando apenas alguns objetos com EJB QL ..................................... 190
Como visualizar um relatrio com EJB QL no seu aplicativo ..................... 191
Alterando o relatrio para utilizar no projeto do NetBeans IDE ............... 192
Finalizando o projeto no NetBeans IDE .................................................... 192
Captulo 10 - Gerando relatrios com outras fontes de dados ............................ 197
Usando XML para criar relatrios .............................................................. 199
Criando um relatrio com XML ................................................................. 199
Relatrios com XML remoto ...................................................................... 204
Usando CSV para criar relatrios............................................................... 204
Registrando os campos de um arquivo CSV .............................................. 206
Relatrios sem fonte de dados .................................................................. 207
Relatrios usando JavaBeans como fonte de dados .................................. 208
Relatrios usando uma fonte de dados personalizada.............................. 213

Sumrio

XXV

Captulo 11 - Simplificando relatrios com Groovy.............................................. 219


Criando um relatrio usando Groovy ........................................................ 221
Iniciando o desenvolvimento do relatrio ................................................ 221
O design do relatrio ................................................................................ 223
Resultado final do relatrio com Groovy ................................................... 226
Chamando seu relatrio com Groovy ........................................................ 226
Criando um projeto no NetBeans com Groovy ......................................... 226

ra

Captulo 12 - Criando grficos e subdataset em seus relatrios .......................... 231


Criando um grfico simples ....................................................................... 233
Links em seu grfico .................................................................................. 238
Subdatasets ............................................................................................... 238
Utilizando Subdatasets em seu grfico ..................................................... 241
Grficos de linhas ...................................................................................... 244
Utilizando Grficos em um relatrio com Hibernate ................................ 248

on

st

Captulo 13 - Internacionalizando relatrios ........................................................ 249


Criando seu relatrio internacionalizado .................................................. 251

em

Captulo 14 - Crosstabs......................................................................................... 257


Criando seu primeiro relatrio Crosstab ................................................... 259
No JasperReports ....................................................................................... 263
Compreendendo a disposio da Crosstab ............................................... 263
Modificando uma clula na Crosstab ........................................................ 264
Adicionando grupos de linhas e colunas ................................................... 265
Compreendendo as Measures ................................................................... 268
Criando uma Crosstab com Subdataset..................................................... 269
Captulo 15 - Outras caractersticas da gerao de relatrios .............................. 275
Tratando relatrios grandes ...................................................................... 277
Trechos SQL no relatrio ........................................................................... 279
Adicionando uma imagem de fundo ......................................................... 280
Exibindo somente um grupo por pgina ................................................... 281
Reiniciando o nmero de pginas ............................................................. 281
Alinhamento de objetos no design do relatrio ....................................... 281
Formatao entre textos no seu relatrio ................................................. 281

XXVI

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Data atual no relatrio .............................................................................. 284


Stored Procedures e Functions.................................................................. 284
Erros na compilao .................................................................................. 284

on

st

ra

Captulo 16 - Scriptlet .......................................................................................... 287


A classe JRAbstractScriptlet ....................................................................... 289
Um exemplo da utilizao de Scriptlets .................................................... 292
A classe Scriptlet ....................................................................................... 293
O projeto no NetBeans para usar Scriptlet em um relatrio ..................... 295
Desenvolvendo o relatrio ........................................................................ 296
A conexo com o arquivo CSV................................................................... 296
Adicionando o scriptlet ao relatrio ......................................................... 297
Criando as variveis do relatrio ............................................................... 298
Editando a query do relatrio ................................................................... 299
Criando o design do relatrio ................................................................... 299
Como evitar valores repetidos em um relatrio........................................ 301
Forando o valor a aparecer ao menos uma vez em cada pgina ............. 301
Criando mtodos personalizados com Scriptlets ...................................... 302

em

Captulo 17 - Desenvolvendo seus prprios Templates........................................ 303


Criando um relatrio modelo .................................................................... 305
Configurando o template criado no iReport ............................................. 307
O uso do template no assistente do iReport ............................................. 308
Imagem de preview do template no assistente......................................... 308
Apndice - Exportando para outros formatos................................................. 311
Exportando para o formato RTF ................................................................ 313
Exportando para o formato Excel .............................................................. 313
Exportando para HTML ............................................................................. 314
Exportando para CSV ................................................................................ 314
Exportando para ODF ................................................................................ 315

Sumrio

XXVII

em

on

st

ra

Bibliografia ...................................................................................................... 317


Livros Nacionais .............................................................................................. 319
Livros Internacionais ....................................................................................... 319
Sites ................................................................................................................ 319
Acesso para pesquisa ...................................................................................... 320
Tutoriais .......................................................................................................... 320

1
D

em

on

st

ra

CONHECENDO O IREPORT PARA


NETBEANS IDE

Comear j metade de toda a ao.


provrbio grego

Captulo 1

O iReport para NetBeans IDE um programa Open Source, capaz de criar visualmente os mais complexos relatrios para aplicaes Java no formato da biblioteca
JasperReports.

Atravs de uma interface grfica intuitiva, o desenvolvedor capaz de criar qualquer tipo de relatrio de forma simples e rpida. Mesmo sabendo que o iReport
desenvolve um formato XML usado pelo JasperReports, o que no difcil de manipular, h uma vantagem em usar esta ferramenta. Se o desenvolvedor um usurio iniciante no formato XML do JasperReports, o iReport supre suas necessidades
evitando que seja necessrio fazer modificaes no cdigo fonte. Caso seja experiente neste formato, o iReport minimiza o tempo na criao dos mais complexos
relatrios.

st

ra

Neste captulo voc aprender onde obter, os requerimentos necessrios para


executar, como instalar e entender sobre algumas das mais importantes caractersticas do iReport.

on

ANTES DE UTILIZAR O IREPORT PARA NETBEANS IDE

em

O iReport para NetBeans IDE, por ser uma ferramenta Java, precisa do Sun Java
2 SDK 1.5 instalado em sua mquina, ou superior. Perceba que no apenas a JVM
(Java Virtual Machine) que deve estar instalada. Isso porque, para compilar os arquivos jasper, necessria a instalao da distribuio do Java SE, sendo impossvel
somente com a JRE (Java Runtime Environment).

OBTENDO E INSTALANDO O JAVA SE

Atualmente, o JDK (Java SE Development Kit) est em sua verso 6 e possui


suporte para as seguintes plataformas:
Microsoft Windows
Linux
Sun Solaris
Mac Os
Entre outros

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

A pgina Web oficial sobre a linguagem Java da Sun se encontra no endereo


http://java.sun.com.
A Sun publica periodicamente releases do JDK e costuma numer-los atravs do
que chamam atualmente de updates.
Para obter o Kit de Desenvolvimento Java, que at o momento em que este livro
escrito est na verso 6 update 6 (JDK 6u6), conhecido como Java SE 6.0, acesse o
endereo: http://java.sun.com/javase/downloads/index.jsp.

Na pgina de download do Java SE 6.0, existem vrios produtos para download.


Logo a seguir h uma descrio de alguns dos produtos do qual voc encontra para
download:

ra

JDK 6 Update 6 Este o kit de desenvolvimento Java. Este kit consiste em


um compilador (javac), uma ferramenta de execuo (java), uma ferramenta para
gerao de documentao (javadoc), um conjunto de bibliotecas prontas para o uso
e etc.

st

Java Runtime Environment (JRE) 6 Update 6 Este o ambiente runtime do


Java, usado apenas para executar os programas feitos em Java.

on

Java SE 6 Documentation A documentao do J2SE. Esta documentao


contm as informaes sobre todas as bibliotecas do Java.

em

Clique no boto-link Download. Para efetuar o download do JDK, voc deve


aceitar os termos de uso do Java SE, clicando na opo Accept. Aps a pgina
recarregar, haver a possibilidade de baixar a verso que voc precisa para a sua plataforma. Observe que na pgina de Downloads existem diversos Java SE. Existe Java
SE para a plataforma Windows, Linux, Solaris SPARC, Solaris x86 e Linux AMD64.
Efetue o download do Java SE para o seu sistema operacional clicando sobre o link
do produto que utilizar para instalao.

A INSTALAO NO WINDOWS
Tendo em vista que o Windows no qual ser descrito est na verso XP ou superior, inicie o assistente com um duplo clique sobre o arquivo executvel, que como
tantos outros desta plataforma, basta avanar at concluir.
Para configurar qualquer varivel de ambiente em um sistema Windows na verso NT, voc deve entrar no Painel de Controle, Sistema e na guia Avanado clique no
boto Variveis de Ambiente.

Captulo 1

As variveis de ambiente so seqncias de caracteres que contm informaes


como unidade, caminho ou nome de arquivo. As variveis de ambiente controlam
o comportamento de vrios programas. Como exemplo de variveis de ambiente:
PATH, CLASSPATH, USER, TEMP, JAVA_HOME e etc.
Estas variveis de ambiente so utilizadas por muitos programas, para definir
um espao em memria principal (RAM), onde alguns processamentos sero executados
Em Variveis do sistema, clique em Nova. Adicione o nome da varivel como
JAVA_HOME e no valor o caminho onde voc instalou o JDK.

A varivel JRE_HOME similar a anterior, mudando apenas para o valor onde se


encontra a mquina virtual Java.

ra

Na varivel PATH, voc tem que adicionar a varivel JAVA_HOME, acrescida do


caminho para os binrios. Aps o ltimo valor, coloque um ponto-e-vrgula (;) e
adicione %JAVA_HOME%\bin.

em

java -version

on

st

Ao confirmar as caixas de dilogo, teste se o Java est funcionando na sua mquina em um prompt de comando, como mostrado a seguir:

EM WINDOWS VERSO 9X

Voc deve editar o arquivo autoexec.bat, encontrado em C:\autoexec.bat e adicionar as variveis como o exemplo a seguir:
set JAVA_HOME= C:\jdk1.6.0_06

Onde o local indicado no exemplo, onde voc tem instalado o JDK.

A INSTALAO NO LINUX
No momento em que este livro est sendo escrito, a verso baixada para o sistema operacional Linux a jdk-6u6-linux-i586.bin.

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Entre no terminal do seu Linux, aps baixar o arquivo, e mude para o usurio
Root ou administrativo do sistema e altere a permisso do arquivo para executvel,
assim voc poder instal-lo:
shell# chmod +x jdk-6u6-linux-i586.bin

Execute o arquivo:
shell# ./jdk-6u6-linux-i586.bin

Assim como ocorre em sistemas operacionais Windows, voc ter um assistente


para instalao, s que com a diferena de no ser grfico.

Entre no arquivo profile em /etc/profile e adicione as linhas em seu final:

st

ra

JAVA_HOME=/jdk1.6.0_06
JRE_HOME=/jdk1.6.0_06/jre
export JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/lib
export MANPATH=$MANPATH:$JAVA_HOME/man

on

As variveis usadas so explicadas rapidamente a seguir, dando a voc noo do


que cada uma faz:

em

JAVA_HOME - Diretrio onde a JDK est instalada


JRE_HOME - Diretrio onde a mquina virtual est instalada
PATH - Diretrio dos executveis, onde inclui o do Java

CLASSPATH - Diretrio das libs


MANPATH - Diretrio do manual, acessvel por man javac.

Faa logout no sistema e logon e execute no terminal o seguinte comando:


java -version

Surgindo as informaes mostradas a seguir, a instalao foi feita com sucesso.


java version 1.6.0_06
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)

Captulo 1

Figura 1.1 Verificando a verso de instalao do Java no Linux

OBTENDO E INSTALANDO O IREPORT PARA NETBEANS IDE

st

ra

Para baixar o iReport para NetBeans IDE, entre no endereo oficial http://www.
jasperforge.org/ireport ou http://ireport.sourceforge.net/. At o momento em que
este livro escrito a verso atual do iReport para NetBeans IDE est em 3.1.2. Esta
verso tem suporte completo ao JasperReports 3.1.2.

em

on

Clique no link Download iReport para ser redirecionado ao SourceForge.net,


onde est alocado para baixar. Clique no item iReport-nb-3.1.2 e confirme no boto
Browse Package. Copie o link existente em Location e o cole na barra de endereos.

Se voc estiver usando o sistema operacional Microsoft Windows, baixe a verso


iReport-nb-3.1.2-windows-installer.exe, ao qual inclui um instalador, ou o arquivo
iReport-nb-3.1.2.zip, sem instalador. Para os demais sistemas operacionais, incluindo Linux, baixe a verso iReport-nb-3.1.2.tar.gz. O cdigo fonte pode ser encontrado baixando-se o arquivo iReport-nb-3.1.2-src.zip.
Se estiver utilizando o NetBeans e desejar apenas incluir o plug-in, selecione
iReport Plugin for NetBeans e baixe o arquivo iReport-nb-3.1.2-plugin.zip.

Ateno: As explicaes neste tpico esto atreladas a verso atual do site, no


momento em que este livro escrito.

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

ALGUMAS CARACTERSTICAS DO IREPORT PARA NETBEANS IDE


O iReport possui diversas caractersticas que o tornam uma ferramenta de desenvolvimento de relatrios profissional, no mesmo padro de outros do mesmo
tipo consagrados pelo mundo do desenvolvimento. A seguir voc tem algumas de
suas principais caractersticas que fazem deste programa visual o Oficial para desenvolvimento de relatrios JasperReports:
Suporte a 100% das tags XML do JasperReports;

Editor WYSIWYG para criao de relatrios, possuindo ferramentas que incluem desenhos de retngulos, linhas, elipses, caixas de texto, rtulos, grficos, sub-relatrios, cdigos de barras e etc.;
Um editor para escrever as expresses incluindo destaques (highlights) nas
sintaxes;

ra

Suporte para Unicode e lnguas no latinas como: Russo, Chins, Japons,


Coreano entre outras;

st

Integrao para compilar e exportar;

on

Suporte para todos os bancos de dados acessveis pela ponte JDBC;


Suporte virtual para todos os tipos de DataSources;

em

Assistentes para criar relatrios rapidamente;


Suporte para sub-relatrios;

Backup para o cdigo fonte;


Suporte para modelos de documentos (templates);
Suporte para fontes TrueType;
Extenso atravs de plug-ins;
Suporte integrado para scriptlets;
Suporte a grficos;
Gerenciamento de bibliotecas de objetos padro tais como numerao de
pginas;
Arrastar e Soltar (Dragn Drop);
Ilimitados Desfazer e Refazer;
Biblioteca de estilos e etc.

Captulo 1

INSTALANDO O IREPORT
Como h mais de uma forma de instalar o iReport para NetBeans, voc ver todas aqui. A primeira forma de instalao que ser mostrada no sistema operacional Windows com o assistente. A segunda forma ser sem o uso de assistente, neste
caso tanto no sistema operacional Windows como no Linux ser mostrada.
A ltima forma ser no NetBeans IDE, em forma de plug-in.

NO WINDOWS COM INSTALADOR

ra

O assistente para instalar o iReport para NetBeans no Windows similar aos


demais utilizados em outros programas neste sistema operacional. D um duplo
clique no arquivo iReport-nb-3.1.2-windows-installer.exe para iniciar o processo de
instalao pelo assistente.

st

1. Na primeira etapa voc tem a tela inicial do iReport nb-3.1.2. Clique no boto
Next para prosseguir.

on

2. Na segunda etapa do assistente voc deve aceitar a licena de uso do iReport


nb-3.1.2. Caso voc no conhea a licena GNU (General Public License), recomendo l-la antes de prosseguir. Clique no boto I Agree para continuar.

em

3. Na terceira etapa voc define os componentes que sero instalados. Como no


caso h apenas um, clique no boto Next para prosseguir.

4. A quarta etapa o local onde ser instalado o iReport. Por padro ele definido dentro do diretrio JasperSoft\iReport-nb-3.1.2 em Arquivos de programas do seu sistema operacional Windows. Caso precise mudar, clique no
boto Browse e selecione o novo local em que deseja instalar. Para prosseguir,
clique no boto Next.
5. No quinto passo voc define o local de acesso no menu Iniciar do Windows.
Caso concorde com a atual configurao, basta clicar no boto Install para
iniciar o processo de instalao. Caso deseje alterar o acesso, basta digitar no
local selecionado, em JasperSoft\iReport-nb-3.1.2.
6. Aps a instalao, a opo Run iReport nb-3.1.2 estar selecionada. Clicando
no boto Finish, abrir imediatamente o iReport para trabalhar. O instalador
tambm criar um atalho na rea de trabalho para acesso rpido ao programa,
atravs do arquivo iReport.exe.

10

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Ateno: O instalador cria, alm do arquivo ireport.exe, um arquivo chamado ireport_w.exe, que inicializa o iReport para NetBeans com o prompt de comando.

NO WINDOWS E LINUX SEM INSTALADOR


Caso voc prefira a verso sem instalador, existem os dois arquivos compactados iReport-nb-3.1.2.zip (recomendvel para o sistema operacional Windows) ou
iReport-nb-3.1.2.tar.gz (para o sistema operacional Linux). Descompacte o de sua
preferncia em um local desejado.

No Linux, voc deve executar antes o comando para descompactao:


shell# tar xpvzf iReport-nb-3.1.2.tar.gz

st

shell# cd iReport-nb-3.1.2/
shell# chmod +x ireport

ra

Ao descompactar o iReport, entre no diretrio e execute a permisso de execuo:

em

on

Para o Windows existem os arquivos ireport.exe e ireport_w.exe para inicializar,


bastando um duplo clique. No sistema operacional Linux, basta entrar no terminal
e executar o Shell, como mostrado a seguir:

shell# ./ireport

COMO INSTALAR O PLUG-IN IREPORT FOR NETBEANS

Caso j exista o NetBeans IDE instalado em sua mquina, no h a necessidade


de instalao separada do iReport.
O plug-in do iReport se integra a ferramenta, suavizando o trabalho com seus
aplicativos sem necessitar abrir outra IDE para criar relatrios.
Baixe o arquivo iReport-nb-3.1.2.nbms.zip para obter apenas o plug-in e descompacte-o.
Para o exemplo, ser instalado o plug-in no NetBeans IDE 6.5 beta, a verso mais
atual no momento em que este livro escrito.

Captulo 1

11

1. No seu NetBeans IDE, v ao menu Tools>Plugins e clique na guia Downloaded.

st

ra

2. Clique no boto Add Plugins e selecione todos os arquivos encontrados na


descompactao do iReport-nb-3.1.2.nbms.zip.

on

Figura 1.2 Selecionando os arquivos do plug-in iReport for NetBeans

em

3. Clique no boto Install para iniciar a instalao do plug-in na ferramenta.

4. Ao surgir a caixa de dilogo NetBeans IDE Installer clique em Next. Aceite os


termos de licena em I accept the terms in all of the license agreements e
confirme no boto Install.
Se a caixa de dilogo Verify Certificate surgir, apenas clique em Continue para
prosseguir com a instalao do plug-in.
Aps a instalao, voc encontra o plug-in ireport-designer, na guia Installed.

COMPILANDO O FONTE DO IREPORT PARA NETBEANS


O projeto do iReport para NetBeans foi criado na verso 6.0 da ferramenta NetBeans IDE. Isso significa que voc deve baixar esta verso para abrir o projeto e,
somente ento, compil-lo.

12

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

A verso do NetBeans utilizado est no arquivo platform.properties, expandindo iReport>Important Files, dando um duplo clique em NetBeans Platform Config.
A ltima linha, mais especificamente em nbplatform.active, antes de compilar, deve
ter o valor substitudo para default.

em

on

st

ra

Para compilar, clique com o direito do mouse sobre iReport, na janela Projects,
e selecione Build ZIP Distribution, no menu de contexto. No source do iReport,
surgir um arquivo zipado dentro do diretrio dist.

Figura 1.3 Projeto do iReport aberto no NetBeans IDE 6.0

2
D

em

on

st

ra

INICIANDO NO IREPORT PARA


NETBEANS

Especialize-se em um setor determinado e procure


conhecer mais sobre ele que qualquer outra pessoa.
Joseph Murphy

Captulo 2

15

O iReport uma ferramenta que est preparada para construir visualmente os


mais complexos relatrios dentro dos limites de JasperReports.
Embora o primordial de iReport seja de desenhar relatrios, existem tambm
suas caractersticas para configuraes.
Este captulo o introduzir ao desenvolvimento bsico de relatrios usando o iReport para NetBeans, partindo de sua execuo inicial e suas configuraes bsicas.

ABRINDO O IREPORT PARA NETBEANS PELA PRIMEIRA VEZ

em

on

st

ra

Quando o iReport executa pela primeira vez ele carrega informaes de configuraes regionais de seu sistema operacional e cria um diretrio chamado de
.ireport no diretrio do usurio em home no Linux, em Document and Settings de
seu Windows XP ou AppData\Roaming no seu usurio em Windows Vista. Neste
diretrio voc encontra diversos arquivos.

Figura 2.1 Smbolo do iReport

Suas configuraes pessoais e as configuraes do programa esto gravados


neste diretrio, em seu arquivo ireport.properties, dentro de .ireport/dev/config/
Preferences/com/jaspersoft.
Ateno: Se no for criado o diretrio .ireport, alguns problemas indesejveis
podem ocorrer na execuo do programa, alm da impossibilidade de gravao
das configuraes personalizadas.

16

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

UM RELATRIO COM IREPORT PARA NETBEANS


Antes de continuar nas configuraes do iReport, voc vai se ambientar na ferramenta, criando um primeiro relatrio. Isso possibilitar uma melhor compreenso
da gerao de relatrios JasperReports.
Para a gerao deste relatrio, voc vai utilizar o assistente de relatrios existente na ferramenta. Isso facilitar na velocidade do desenvolvimento.

O BANCO DE DADOS USADO

O MySQL 5 ser o gerenciador de banco de dados usado neste livro para a execuo dos exemplos de relatrios. Apesar de ser o MySQL, os exemplos mostrados
podero ser feitos em Oracle, SQL Server, PostgreSQL e etc.

em

on

st

ra

O banco de dados chamado de relatorios ser usado em todos os captulos ao longo do livro, sendo as tabelas que o compe so apresentadas na Figura 2.2 a seguir.

Figura 2.2 Diagramao do banco de dados usado no livro

Captulo 2

17

Observao: As tabelas foram baseadas no banco de dados de exemplo Northwind, encontrado no MS Office Access e no banco de dados MS SQL Server
, ambos da Microsoft (MS).

Ateno: O arquivo relatorios.sql contendo o banco de dados relatorios e suas tabelas devidamente populadas se encontra no site do autor, citado no incio deste
livro, em Cdigos dos exemplos criados no livro.

O PRIMEIRO RELATRIO NO IREPORT PARA NETBEANS NA VERSO


STANDALONE

ra

O banco de dados a ser criado composto por cinco entidades, sendo quatro
delas principais para o cenrio proposto. Para o exemplo, voc vai criar o primeiro
relatrio usando apenas a tabela de produtos.

em

on

st

V ao menu File do iReport para NetBeans e selecione no menu o item Report


Wizard.

Figura 2.3 Selecionando o item de menu Report Wizard

Ao surgir caixa de dilogo do assistente, chamada de New Report, voc dever


seguir os seguintes passos para criar seu relatrio:
1. Para a primeira etapa, coloque o nome do seu relatrio em Report name.
Chame de PrimeiroRelatorio se quiser ter um nome similar ao do livro. No boto
Browse voc pode alterar a localizao de onde ser salvo o relatrio. Clique no
boto Next para prosseguir.
2. A segunda etapa necessita da criao de uma conexo com o banco de dados.
Como ainda no fora feito nenhuma, clique no boto New, ao lado do campo Connections/Data Sources.

18

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

a. Na caixa de dilogo de Datasource selecione o item Database JDBC connection. Clique no boto Next para prosseguir.
b. Como o driver JDBC usado do MySQL, por padro, a segunda etapa das propriedades de conexo surgir com esta opo selecionada no campo JDBC Driver,
contendo com.mysql.jdbc.Driver. No h necessidade, neste caso, de se adicionar
a biblioteca JDBC na sua aplicao.

em

on

st

ra

c. No campo Name digite relatorios. No campo JDBC URL complete deixando


jdbc:mysql://localhost/relatorios. Coloque o nome de usurio no campo User Name
e sua respectiva senha em Password. Marque a opo Save password.

Figura 2.4 Definindo as propriedades de conexo

d. Clique no boto Test para verificar se a conexo foi estabelecida com sucesso.
Caso aparea a mensagem Connection test successful!, significa que voc configurou tudo corretamente e que agora h uma comunicao com o banco de dados.
e. Salve as informaes de conexo com o banco de dados atravs do boto Save
da caixa de dilogo.

Captulo 2

19

Onde o iReport armazena minha conexo?


O iReport guarda as informaes da configurao da conexo no diretrio .ireport/
dev/config/Preferences/com/jaspersoft, dentro do arquivo ireport.properties.
Neste arquivo h a propriedade connection seguida por um ponto e um nmero, que indica a conexo, onde a primeira zero, a segunda um e assim por diante. A string que existe como valor possui um XML, contendo uma compatibilidade
com a verso do iReport que no est sobre a plataforma NetBeans.

em

on

st

SELECT * FROM produtos

ra

f. Retornando ao assistente de relatrio, na segunda etapa, concluda a conexo,


voc s precisa definir a tabela e dados que sero exibidos. No campo Query (SQL)
digite a instruo SQL, a seguir, que selecionar somente a tabela de produtos e, em
seguida, clique no boto Next para prosseguir:

Figura 2.5 Criando a consulta SQL na segunda etapa do assistente

3. Na terceira etapa do assistente, em Fields, adicione todos os campos exceto


CategoriaID (utilizando o boto >) e clique no boto Next.

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

ra

20

st

Figura 2.6 Seleo de campos para a gerao do relatrio

on

4. Na quarta etapa simplesmente avance clicando no boto Next.

em

5. Na quinta etapa, voc vai selecionar o layout que deseja utilizar em seu relatrio. Mantenha na opo Columnar layout e clique no boto Next.
6. Na ltima etapa, clique simplesmente no boto Finish para concluir o assistente.

Ao final voc ter um relatrio gerado com os campos selecionados em formato


tabular, contendo sua visualizao apenas estrutural.

Figura 2.7 - Estrutura do relatrio gerado pelo assistente

Captulo 2

21

Observao: O driver JDBC do MySQL j vem com o iReport, no diretrio ide8/


modules/ext de sua instalao. Caso voc deseje utilizar outro banco de dados ou
atualizar a verso JDBC da biblioteca do MySQL, que se encontra na verso mysqlconnector-java-5.0.7-bin.jar, adicione neste diretrio.

VISUALIZANDO O PRIMEIRO RELATRIO


Antes de iniciar qualquer alterao, voc vai visualizar o relatrio da forma bruta
como foi criado.

Clique em Preview (ou pelo menu View>Editors>Preview) e aguarde a renderizao do relatrio.

st

ra

O visualizador de relatrios para o formato JasperReports est embutido no


iReport para NetBeans, diferente do que acontecia em verses que no utilizam a
plataforma NetBeans.

on

CONFIGURANDO O IREPORT PARA NETBEANS

em

Agora com a criao de um relatrio bsico, voc est preparado para configurar
o iReport para NetBeans em algumas de suas caractersticas.
V ao menu Tools e clique no item Options.

Ao surgir caixa de dilogo Options, as configuraes iniciais so do iReport.


Como principais itens de configurao voc tem:

Na guia General:
Default unit Indica a unidade utilizada para o trabalho com os relatrios.
Podem ser: mm, cm, pixels e polegadas.
Limit the number of records Quando selecionado, voc pode definir o nmero
mximo de relatrios que podem ser exibidos, alterando em Max number of reports.
Report locale Define a localizao atual da sua mquina, exibindo de forma
correta certos padres numricos como nmeros, moedas e datas.
Report timezone Define a timezone da regio, pegando automaticamente a
configurao do sistema operacional.

22

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Ignore pagination Ignora a paginao de dados na gerao dos relatrios.


Use virtualizer Ser visto mais adiante, em outro captulo.
Report defaults
o Language A linguagem utilizada como padro para os relatrios. Por padro Java, mas podemos usar nesta verso Groovy e JavaScript.
o Chart theme Tema para o grfico. Ser visto mais adiante, em outro captulo.

Em Classpath voc pode adicionar bibliotecas e classes no disponveis pelo iReport


para compilar relatrios com acesso a dados de forma especfica. Essa guia ser utilizada mais adiante quando utilizar outras formas de conexo com o banco de dados.

st

ra

Na guia Viewers voc pode selecionar cada um dos programas que deseja utilizar como visualizadores quando compilar e exportar o relatrio em um determinado formato. Depois, para visualizar no formato desejado, dentro do programa
selecionado, voc seleciona no menu Preview.

on

Adicione um programa que deseja utilizar para cada tipo de arquivo, principalmente o PDF que ser muito utilizado ao longo do livro.

em

A COMPILAO DO IREPORT PARA NETBEANS NO


PREVIEW

Por padro, o iReport utiliza o seu diretrio corrente do arquivo .jrxml, aberto
do seu relatrio, para guardar os arquivos compilados.
Se determinar outro programa como preview, ele exibir tanto internamente
como abrir o programa configurado para exibir o formato desejado.

A VERSO DO IREPORT PARA NETBEANS COMO PLUG-IN


Diferente do que acontece com a verso Standalone, o plug-in iReport for NetBeans exige a criao de um projeto, seja Web ou Desktop, para que seja possvel criar um relatrio.
Primeiro, antes de criar o relatrio, selecione um diretrio ou pacote onde vai
cri-lo. Ao criar um novo arquivo, New File, voc seleciona em Categories o item
Report e, em File Types, novamente Report para o assistente de relatrios.

Captulo 2

23

Ao avanar, voc define o nome do relatrio, s que desta vez deve manter a
extenso, como por exemplo: PrimeiroRelatorio.jrxml.
Na etapa de conexes siga os mesmos procedimentos feitos no passo nmero
2 da verso Standalone. Como extra, voc pode selecionar uma conexo ativa j
existente do NetBeans IDE, com a opo NetBeans Database JDBC connection.

O ARQUIVO DE PROPRIEDADES DO IREPORT COMO PLUG-IN

ra

Diferente da verso Standalone, a verso plug-in armazena o arquivo ireport.properties no diretrio de configuraes do NetBeans IDE. Neste caso, ele costuma se encontrar no diretrio de usurio da sua mquina com o nome de .netbeans. O caminho
para o arquivo /.netbeans/dev/config/Preferences/com/jaspersoft/ireport.properties.

ABRINDO UM RELATRIO NO IREPORT PARA NETBEANS

em

on

st

Um relatrio criado em nosso idioma possui muitos acentos em rtulos, devido


a nossa lngua. Entretanto, no NetBeans, ainda na verso utilizada pelo iReport e
no corrigida at o momento que este livro escrito, h o problema com a codificao de caracteres no sistema operacional Windows, que inicializa trabalhando com
o padro iso-8859-1.

Como o tipo aceito pelo iReport UTF-8, o programa precisa criar arquivos
neste padro. Se isso no ocorrer, quando abrir um relatrio com a codificao
diferente de UTF-8, ver o erro mostrado na Figura 2.8.

Figura 2.8 Erro ao ler um relatrio criado com acentos

24

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Para corrigir este problema, basta alterar o atalho que inicializa o programa,
transmitindo o seguinte parmetro: -J-Dfile.encoding=UTF-8.
Voc pode resolver este problema simplesmente criando um arquivo .bat, no
diretrio bin da instalao do iReport, da seguinte forma:
ireport.exe -J-Dfile.encoding=UTF-8

Porm, pode ser que voc acredite que esta soluo seja muito ruim e quer algo
mais profissional. Neste caso, basta alterar o arquivo de configuraes chamado que o mesmo do NetBeans (netbeans.conf), porm, com outro nome.

Altere no arquivo, que se encontra no diretrio etc, no local da instalao do seu


iReport, na seguinte linha:

ra

default_options=-J-Xms24m -J-Xmx64m -J-Dfile.encoding=UTF-8

on

st

Ao inicializar o iReport, ele carregar estas configuraes, encontradas nesta


linha, e inicializar os arquivos com essa codificao.

IREPORT PARA

NETBEANS EM INGLS

em

O suporte para o idioma nativo encontrado no sistema operacional automtico


no NetBeans em que o iReport foi desenvolvido. Se desejar t-lo somente em ingls,
adicione as seguintes informaes no arquivo ireport.conf, em default_options,
junto aos demais parmetros:
default_options=-J-Duser.language=en -J-Duser.country=US

ESTRUTURA DE UM RELATRIO E SEU

em

on

st

ra

DESENVOLVIMENTO

A nica hora que voc no pode falhar na ltima


vez que tentar.
Charles Kettering

Captulo 3

27

Um relatrio uma maneira agradvel de apresentar as informaes vindas de


alguma base de dados com sua aparncia formatada. Na maioria das vezes, relatrios so usados para agrupar as informaes vindas de um conjunto de dados, relacionados entre si, oriundos de diversas tabelas. Como resultado voc tem apenas os
campos determinados na construo do seu relatrio e exposto como tal de forma
a simplificar a compreenso das informaes. Vindo em um formato padronizado
para impresso, como um texto feito em um editor de textos, voc s precisa mandar para a impresso ou export-los para outro formato de uso maior.

Neste captulo voc ir conhecer a estrutura de um relatrio JasperReports na


ferramenta iReport para NetBeans e suas propriedades.

A ESTRUTURA DO RELATRIO

ra

Um relatrio no JasperReports possui diversas sees, separadas por linhas horizontais ao qual so chamadas de Bands (bandas).

em

on

st

O comportamento de cada Band depende da funcionalidade para a qual est preparada. Quando o relatrio se junta aos dados para rodar a impresso, estas sees
so impressas na tela de diferentes maneiras, com diferentes tempos. Por exemplo,
o cabealho da pgina (pageHeader) repetido em todas as pginas, uma vez em
cada pgina, enquanto que os detalhes onde sero exibidos os dados (detail),
gerado em uma seqncia elaborada de acordo com os dados existentes (query ou
datasource), repetindo-se uma vez para cada registro, incorporando-se ao desenho
do relatrio.
As bands de um relatrio JasperReports dividido em dez sees pr-definidas
para que novos grupos possam ser adicionados.

Captulo 3

39

Summary on a new page - esta opo similar a anterior (Title on a new


page), mas com a diferena de ser a banda summary que ser impressa como
a ltima pgina.

Floating column footer - as bandas columnFooter so impressas por padro


no fim das pginas. Se na impresso do relatrio no houver dados suficientes
para preencher uma pgina, um espao em branco aparecer entre a coluna e
o rodap da coluna (columnFooter). Se voc quer que o texto encontrado na
banda columnFooter seja impresso logo aps a impresso da coluna, marque a
opo Floating column footer. Esta opo permite forar a impresso da banda
columnFooter imediatamente aps a ltima interao da banda detail e no do
trmino de todas as colunas. Esta opo geralmente usada quando voc quer
criar tabelas usando os elementos de relatrios.

st

ra

Ignore pagination - ignora a paginao ao preencher o relatrio, impossibilitando a visualizao das demais pginas caso haja mais que uma. Quando
ativa, esta opo implica at mesmo na visualizao correta dos dados caso
haja mais de uma coluna.

em

on

Print order - a ordem de impresso determina como os dados impressos na pgina sero organizados em mais de uma coluna. O padro para a ordem de impresso Vertical. Com a ordem Vertical, primeiro os dados so impressos um embaixo do outro, passando para uma nova coluna somente quando a coluna est
totalmente preenchida no final da pgina. Na ordem Horizontal os dados so
preenchidos em linha. Os dados passam por todas as colunas, adicionando uma
nova linha somente quando a ltima coluna da pgina foi preenchida naquela
determinada linha. A Figura 3.5 a seguir ilustra as duas ordens de impresso.

Figura 3.5 Ordem de impresso na Vertical e na Horizontal

CRIANDO UM RELATRIO SEM O USO DE

em

on

st

ra

ASSISTENTES

A imaginao mais poderosa que o conhecimento. Ela


alarga a viso, estimula a inteligncia, desafia o impossvel. Sem a imaginao, o pensamento estagnar.
Albert Einstein

Captulo 4

47

Para uma maior compreenso dos diversos elementos que compem um relatrio no JasperReports, atravs do iReport para NetBeans, importante a um desenvolvedor aprender a desenh-lo manualmente, isto , sem o uso de assistentes.
No captulo anterior foram apresentadas as bandas e as configuraes iniciais
de um relatrio em branco atravs de suas propriedades. Neste captulo voc ir
aprender a criar um relatrio manualmente, adicionando diversos elementos, configurando-os e trabalhando com banco de dados.

INICIANDO UM RELATRIO MANUALMENTE

ra

Para iniciar, crie um novo relatrio. Na propriedade do relatrio (selecione report name na janela Report Inspector) d um nome para o seu relatrio. Os tamanhos predefinidos sero mantidos.

on

st

Dica: Caso queira visualizar o Grid para desenhar o relatrio, v ao menu


View>Report Designer Grid e clique em Show Grid.

em

A JANELA PALETTE

O iReport para NetBeans na lateral direita a janela Palette. Esta janela contm
doze elementos que so muito usados na construo de um relatrio. Estes ditos
elementos so objetos grficos que podem compor um relatrio, como uma linha,
rtulo ou uma elipse.
A Figura 4.1 apresenta as principais ferramentas que podem ser usadas tanto
para a criao de elementos, como tambm para sua manipulao, em um relatrio
JasperReports.

Figura 4.1 - Ferramentas para a criao de elementos no relatrio

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

1. Break Quebra a pgina a partir dele.


2. Ellipse Desenha elipses no relatrio.
3. Line Em um relatrio JasperReports uma linha definida por um elemento
retangular com uma linha diagonal. A linha pode ser desenhada em uma reta
perfeita, na horizontal, vertical ou em ngulo se pressionada a tecla <Shift>
antes de arrastar. A linha segue o grid.
4. Static Text Utilizado para criar rtulos de relatrios.
5. Chart Gera um grfico atravs de valores determinados transmitidos. Mais
adiante haver um captulo exclusivamente para grficos.

6. Frame Cria quadros que podem conter outros elementos em seu interior,
com bordas ao seu redor.

st

ra

7. Rectangle Usado para desenhar retngulos ao redor de outros elementos,


criando destaques como uma formatao de pargrafo de um programa de
edio de textos, este elemento pode tambm conter retngulos com cantos
arredondados.

on

8. Subreport Cria um relatrio dentro de outro, o que chamamos de mestre-detalhe. Mais adiante haver um captulo abordando exclusivamente este assunto.

em

9. Crosstab Desenvolve o que chamamos em programas de planilhas eletrnicas de tabela dinmica (referncia cruzada), muito utilizado em relatrios
gerenciais (Business Intelligence). Mais adiante tambm haver um captulo
abordando exclusivamente este assunto.

48

10. Image Utilizado para exibir imagens em seu relatrio. Podem ser imagens
dinmicas (preenchidas por um banco de dados, por exemplo) ou estticas.
11. Round Rectangle Gera o elemento rectangle, porm, com a propriedade
Radius j pr-definida com um valor.
12. Text Field Utilizado para criar os campos dinmicos dos relatrios. neste
elemento que voc se conecta a um determinado campo do banco de dados
para exibir suas informaes, por exemplo.

Captulo 4

57

Figura 4.9 Barra de ferramentas Formatao de Texto

1. Font Altera a fonte do texto encontrado no elemento.


2. Font Size Altera o tamanho da fonte do texto encontrado no elemento, em
uma seleo numrica ou digitada (pressione <ENTER> para confirmar).

3. Increase Font Size Altera o tamanho da fonte do texto encontrado no elemento aumentando sempre em dois pontos (2pt).

ra

4. Decrease Font Size Altera o tamanho da fonte do texto encontrado no elemento diminuindo sempre em dois pontos (2pt).
5. Bold Aplica negrito ao texto encontrado no elemento.

st

6. Italic Aplica itlico ao texto encontrado no elemento.

on

7. Underlined Sublinha o texto encontrado no elemento.

em

8. Strikethrough Desenha uma linha no meio do texto encontrado no elemento (tachado).


9. Align Left Alinha o texto esquerda em relao rea do elemento.

10. Align Justify Alinha o texto s margens esquerda e direita da rea do elemento.
11. Align Center Alinha o texto ao centro em relao rea do elemento.
12. Align Right Alinha o texto direita em relao rea do elemento.
13. Align Top Alinha o texto na parte superior vertical em relao rea do
elemento.
14. Align Vertical Axis Alinha o texto no centro vertical em relao rea do
elemento.
15. Align Bottom Alinha o texto parte inferior vertical em relao rea do
elemento.

58

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Adicionando os textos estticos

Antes de iniciar a criao do desenho, voc tem na Figura 4.10 como ser o
resultado final.

ra

Figura 4.10 Design final do relatrio

Para criar a aparncia vista na Figura 4.10, os seguintes passos sero feitos:

on

st

1. Na janela Palette, clique na ferramenta Static Text e arraste um tamanho qualquer na band pageHeader.

em

2. D um duplo clique neste elemento desenhado e digite: Produtos Cadastrados.


Na barra de ferramentas formatao altere em Font Size para 24 e clique no
boto Bold. Textos estticos so representados pelo elemento JasperReports
<staticText />. Alguns sub-elementos so comuns a todos, porm no sero
apresentados aqui.
<staticText>
...
<textElement>
<font
size=24
isBold=true />
</textElement>
<text><![CDATA[Produtos Cadastrados]]></text>
</staticText>

O sub-elemento <textElement />, de <staticText />, determina as configuraes da fonte. Todas estas configuraes de fonte so feitas em <font />. Este
elemento, por sua vez, possui alguns atributos que determinam o comportamento

Captulo 4

65

CRIANDO O EFEITO ZEBRA EM SEU RELATRIO

st

ra

Embora o relatrio esteja funcionando, temos um problema esttico. Compare


seu atual relatrio com o da Figura 4.15 mostrado a seguir. Veja que bem mais
simples de visualizar as vrias linhas encontradas no relatrio quando este possui o
efeito de cores alternadas.

on

Figura 4.15 Relatrio com o efeito zebra

em

A exibio de cores de linhas alternadas, conhecido como efeito zebra, a melhor maneira de exibir um relatrio tabular como o criado. Ajuda na rpida identificao de linhas, alm do design agradvel.

Na janela Report Inspector, em Styles, clique com o direito do mouse e selecione no menu de contexto o item Add Style.
Com o estilo criado e selecionado, v at a janela Properties e digite Zebra em
Name.
Retornando a janela Report Inspector, clique com o direito do mouse sobre o estilo Zebra e selecione no menu de contexto o item Add Conditional Style. Selecione
o item que surgir (<No condition set>) e digite a expresso mostrada a seguir, em
Condition Expression:
new Boolean( $V{REPORT_COUNT}.intValue() % 2 == 0 )

68

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

EXIBINDO IMAGENS EM SEU RELATRIO

st

ra

A ltima modificao que ser feita em seu relatrio manual da adio de imagens. Seu relatrio ficar similar a Figura 4.17 mostrada a seguir.

on

Figura 4.17 Imagens no relatrio com dados da tabela

em

Para essa alterao, salve (Save As) com outro nome, por exemplo: RelatorioManualComImagem. Perceba que foi retirado o elemento Frame deste exemplo.
Porm, no seu, no ser necessrio, caso deseje.

Apague o Text Field da imagem e o substitua pelo elemento Image. Ajuste a


imagem para que ela tenha a Height (Altura) de 70 e a Width (Largura) de 85, em
Properties. Ainda na janela Properties, em Image, clique no boto com trs pontos
da propriedade Image Expression.

Na caixa de dilogo Image Expression, coloque entre aspas o caminho para o diretrio onde se encontram as imagens que deseja exibir. Depois, concatene (em Java
o sinal de +) com o campo imagem do banco de dados, que j est com o nome
de cada produto armazenado. Por exemplo, no caso do livro, as imagens estaro em
um diretrio chamado de imagens, onde voc dever ter a seguinte expresso:
imagens/+$F{Imagem}

RELATRIOS COM GRUPOS E PASSAGEM

em

on

st

ra

DE PARMETROS

Tudo que uma pessoa pode imaginar, outras podem tornar real.
Jlio Verne

Captulo 5

81

Os relatrios mais utilizados em aplicaes, com toda certeza, so os dinmicos. Aqueles relatrios que transmitimos uma determinada informao e este nos
trazem determinados dados.
Neste captulo voc aprender a criar um relatrio mais complexo, utilizando
mais de uma entidade (tabela) no desenvolvimento, agrupando informaes e filtrando-as atravs de parmetros.

O RELATRIO QUE SER DESENVOLVIDO

em

on

st

ra

O relatrio final ser composto por quatro tabelas, resultando em um grupo


formado por pedidos efetuados com seus respectivos produtos adquiridos. A Figura
5.1 ilustra o resultado final do relatrio.

Figura 5.1 Exemplo final do relatrio com grupos

GERANDO O RELATRIO
Para comear, pegue o relatrio zebrado feito no captulo anterior. Salve como
RelatorioAgrupado. Na janela Report Inspector, clique no primeiro item da rvore
de componentes e digite em Report name, na Properties, Relatorio_Agrupado.
Apague os itens existentes e mantenha apenas os elementos das bands pageHeader, columnHeader e pageFooter. Em detail mantenha apenas o Frame.
Em pageHeader altere o rtulo para Pedidos Efetuados. Quanto aos quatro rtulos encontrados na band columnHeader altere como mostra a Tabela 5.1 a seguir.

84

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

st

ra

Veja os campos selecionados na Figura 5.3.

on

Figura 5.3 Criando a query visualmente atravs do Query designer

em

Para completar a query, voc dever adicionar uma ordenao pelo cdigo do
pedido (PedidoID). Clique com o direito no campo PedidoID, no desenho da query
do primeiro quadro, e selecione no menu de contexto o item add to order-by. Confirme a caixa de dilogo logo aps.

Figura 5.4 Adicionando uma ordenao atravs do query designer

94

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

ADICIONANDO PARMETROS AO RELATRIO


Antes de construirmos um aplicativo para chamar o relatrio, voc vai criar um
parmetro para exibir um determinado pedido.
Assim como adicionar variveis, v at a janela Report Inspector e clique com o
direito do mouse em Parameters.

Na janela Properties digite PAR_PEDID no campo Name. Selecione java.lang.


Integer em Parameter Class. Isso significa que at o momento voc ter um parmetro chamado PAR_PEDID com o tipo Integer. Como precisamos testar o relatrio,
voc vai manter selecionado o item Use as a prompt. Isso far com que um prompt
aparea para que voc digite o cdigo do pedido para test-lo.

st

ra

Existe um campo chamado Default Value Expression. a opo padro para


o valor do prompt, caso no se lembre de nenhum cdigo de pedido. Neste caso,
voc vai adicionar o nmero do pedido 10248 como padro. Por se tratar de um int,
converta para java.lang.Integer, digitando neste campo o detalhe a seguir:

on

new Integer( 10248 )

em

Caso queira completar com uma descrio para o parmetro criado, basta adicion-lo no campo Parameter Description como mostrado na Figura 5.11. Esta
descrio aparecer na caixa de dilogo que ser exibida quando chamar o relatrio
pelo iReport.

Figura 5.11 A adio do parmetro PAR_PEDID

CHAMANDO O RELATRIO POR UMA

em

on

st

ra

APLICAO DESKTOP

A disciplina a parte mais importante do sucesso.


Truman Capote

Captulo 6

99

Assim como criar um relatrio, muito fcil cham-lo por uma aplicao. Este
captulo utilizar uma aplicao desktop simples, com interface grfica Swing, criada no NetBeans IDE, apenas com o intuito de ensin-lo a chamar sua aplicao.

A APARNCIA FINAL DO APLICATIVO

em

on

st

ra

Para melhor compreender o exemplo deste captulo, voc tem a Figura 6.1 que
exibe a aparncia final do simples aplicativo Swing que ser criado. Observe que haver uma caixa de combinao e um boto. A caixa de combinao receber valores
da tabela de pedidos para que voc escolha qual pedido deseja visualizar.

Figura 6.1 Aparncia do aplicativo Swing para exibio do relatrio

7
D

em

on

st

ra

SUB-RELATRIOS

Ter problemas na vida inevitvel,


ser derrotado por eles opcional.
Roger Crawford

Captulo 7

115

Os sub-relatrios so relatrios dentro de outros, tambm conhecidos como


relatrios do tipo mestre-detalhe.
A idia bsica para a criao de um relatrio mestre-detalhe ter duas entidades
relacionadas.
Estes relatrios, embora possam parecer complexos, so simples de desenvolver
em JasperReports.

Neste captulo voc aprender a criar sub-relatrios em seus relatrios usando


o iReport para NetBeans e acesso a dados, conhecer a band noData na prtica e
depois o chamar atravs de uma aplicao Web com JSP e Servlets.

O RELATRIO MESTRE-DETALHE QUE SER DESENVOLVIDO

em

on

st

ra

O relatrio com sub-relatrio, a ser desenvolvido, possui como semelhana do


Captulo 5 sua estrutura, uma vez que far uso das mesmas tabelas, mas em uma
situao completamente diferente. Antes, voc criou o relatrio com agrupamento;
desta vez, ser criado com um sub-relatrio. A Figura 7.1 ilustra o resultado do
relatrio com o sub-relatrio que ser desenvolvido.

Figura 7.1 Exemplo final do relatrio mestre-detalhe

118

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

DEFININDO A POSIO DOS CAMPOS

ra

Embora no seja nada obrigatrio, uma vez que o design do relatrio fica por
conta de cada desenvolvedor, vamos dar a voc um similar ao feito no Captulo 5,
mas com algumas mudanas.

st

Figura 7.4 A estrutura do relatrio

on

A Figura 7.4 exibe como dever ficar o formato do relatrio principal. Estes elementos so listados a seguir, conforme mostrado na imagem:

em

1. Na band pageHeader arraste um Static Text ocupando de preferncia de uma


margem a outra da pgina e digite Relatrio de Pedidos Efetuados. Clique
com o direito do mouse sobre o texto esttico e selecione no menu de contexto o item Padding and borders. Na caixa de dilogo v em Borders e selecione na caixa abaixo, a parte superior e inferior, representando a borda
superior e inferior. Em Line width altere para 1 Point. Escolha em Line Style o
estilo desejado e a cor em Line color. Veja na Figura 7.5 como poder ficar a
configurao final das bordas.

Captulo 7

123

on

st

ra

Ajuste seu relatrio de modo a ficar com alinhamento dos valores exibidos. Como
o relatrio no sofreu mudanas ainda na query, voc pode execut-lo para visualizar
sua aparncia. A Figura 7.8 lhe dar uma viso melhor do que pode ser feito.

em

Figura 7.8 Resultado da estrutura e exibio final do sub-relatrio criado

MODIFICANDO A QUERY DO SUB-RELATRIO

Para finalizar este sub-relatrio, por enquanto, voc vai alterar a query desenvolvida inicialmente para a gerao do assistente. Esta mudana possibilitar assim a
transmisso do nmero do pedido, referente ao relatrio mestre, ao sub-relatrio.
Clique com o direito do mouse sobre o primeiro item de Report Inspector e
selecione o item Edit Query. Adicione a clusula WHERE na sua query, como mostrado a seguir:
...
WHERE
PedidoID = $P{PAR_PEDIDOID}

131

Captulo 7

Figura 7.14 Resultado final com a adio do retorno da varivel para o relatrio mestre

ra

CHAMANDO O RELATRIO POR UMA APLICAO WEB

on

st

No Captulo 6, foi ensinado como configurar as bibliotecas do JasperReports na IDE


NetBeans atravs de uma aplicao Swing. Agora voc vai criar um projeto, para a Web,
chamando o relatrio desenvolvido para ser exibido em formato PDF.

em

A estrutura de sua aplicao Web

A seguinte estrutura demonstra a organizao dos arquivos em sua aplicao


Web Java:
RelatoriosNaWeb/
|_ WEB-INF/
||_ lib/
|||_Arquivos JAR (JasperReports e MySQL)
||_ classes/
|||_ br/
|||_ com/
|||_ integrator/
|||_ Relatorio.class
||_ relatorios/
|||_ RelatorioMestreDetalhe.jasper
|||_ SubRelatorio.jasper
||_ web.xml
|_ index.jsp

As bibliotecas encontradas no diretrio lib foram omitidas, uma vez que voc
j as conhece.

137

st

ra

Captulo 7

on

Figura 7.16 Relatrio em PDF gerado pelo Servlet e exibido no navegador

em

CRIANDO MARCADORES PARA O RELATRIO EM PDF

Para colocar na prtica o uso de Hyperlinks explicado no Captulo 4 deste livro,


voc vai criar os marcadores para o relatrio, uma vez que seu resultado composto
por muitas pginas e seria importante t-los marcados para facilitar a navegao.
Iremos marcar os nmeros dos pedidos, mas se desejar pode marcar os nomes,
embora a sada se torne repetitiva.
Clique com o direito do mouse sobre o Text Field que representa o nome do
cliente. Selecione no menu de contexto o item Hyperlink.
No campo Anchor Name Expression, utilize o Expression Editor e digite o campo $F{PedidoID}.toString(). Por se tratar de um campo numrico, voc dever convert-lo para string, uma vez que esta opo s aceita este tipo. Clique no boto
Apply para confirmar.

ra

Captulo 7

em

on

st

Figura 7.18 Destaque da utilizao dos marcadores no Adobe Acrobate

139

8
D

em

on

st

ra

RELATRIOS COM HIBERNATE

Na teoria, no h diferena entre


teoria e prtica. Mas na prtica h.
Jan L. A. van de Snepscheut

Captulo 8

143

Criar relatrios com o uso do Hibernate como camada de acesso a banco de


dados um caso comum no desenvolvimento de aplicaes Web.
O Hibernate hoje o mais popular projeto de gerenciamento de dados persistentes em Java e tambm o que possui uma gama de solues para problemas comuns.
Neste captulo voc aprender a desenvolver seus relatrios utilizando o Hibernate para acessar os dados, incluindo um exemplo com sub-relatrio.

O HIBERNATE

em

on

st

ra

Hibernate um projeto audacioso que procura ter uma completa soluo para
o problema de gerenciamento de dados persistentes em Java. O Hibernate um
framework que se relaciona com o banco de dados, onde esse relacionamento conhecido como mapeamento objeto/relacional para Java, deixando o desenvolvedor
livre para se concentrar em problemas da lgica do negcio. Sua simplicidade em
configurao, d ao desenvolvedor algumas regras para que sejam seguidas como
padres de desenvolvimento ao escrever sua lgica de negcios e suas classes persistentes. De resto, o Hibernate se integra suavemente ao seu sistema se comunicando com o banco de dados como se fosse diretamente feito por sua aplicao.
Uma mudana de banco de dados, nesse caso, no se torna traumtica, alterando
apenas um ou outro detalhe nas configuraes do Hibernate.

Ateno: Este captulo, nem mesmo o livro, tem a inteno de ensinar o uso do
Hibernate. Alm de ser um assunto complexo, exigindo at mesmo um livro somente sobre ele, o foco do livro se baseia na criao de relatrios usando o iReport para NetBeans.

144

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

CRIANDO UM PROJETO USANDO HIBERNATE NO NETBEANS IDE


Diferente do que foi feito nos captulos anteriores, desta vez voc ter que primeiro criar um projeto dentro do NetBeans IDE e configurar o Hibernate, mapeando
suas tabelas antes de criar um relatrio no iReport.
Crie um novo projeto Web Application no NetBeans IDE. Coloque o nome de
ProjTrabComHibernate. Na ltima etapa, selecione o framework Hibernate 3.2.5.
Ao selecionar o item Hibernate 3.2.5, voc ter disponvel dois itens: Database
Connection e Database Dialect.
Execute os passos a seguir para criar uma conexo em Database Connection:

1. Selecione no menu de contexto o item New Database Connection;

em

on

st

ra

2. Na caixa de dilogo New Database Connection altere para MySQL (Connector /J driver) em Name. Preencha os demais itens conforme as configuraes
feitas no seu banco de dados relatorios. Veja na Figura 8.1 como dever ficar
preenchida a caixa de dilogo. Confirme no boto OK;

Figura 8.1 Configuraes da conexo JDBC para o banco de dados relatorios no MySQL

Captulo 8

145

on

st

ra

3. Retornando a caixa de dilogo New Web Application, voc ter as opes Database Connection e Database Dialect configuradas com o dialeto do MySQL.
Confirme no boto Finish.

em

Figura 8.2 Configurao completa da conexo e dialeto usado pelo projeto com o Hibernate

Automaticamente o NetBeans IDE adicionar as bibliotecas do Hibernate necessrias para o desenvolvimento do relatrio e aplicao que o utilizar.

AS BIBLIOTECAS DO JASPERREPORTS E MYSQL JDBC


Antes de continuar no projeto, adicione as bibliotecas do JasperReports e MySQL JDBC no projeto.

CRIANDO AS ENTIDADES
Para o exemplo proposto, voc ter um pacote em sua aplicao chamado de
br.com.integrator.model, que possuir as entidades Categoria e Produto.
Fora dos pacotes, voc possui os arquivos XML que mapeiam as entidades junto
ao arquivo que configura o Hibernate.

156

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

DESENVOLVENDO O RELATRIO

ra

O relatrio final utilizando o Hibernate ser similar ao mostrado na Figura 8.5.


No caso, ser feito sem o uso de assistentes.

on

Gerando a query HQL

st

Figura 8.5 Resultado final do primeiro relatrio com Hibernate

em

V at a janela Report Inspector e clique com o direito do mouse sobre o primeiro


item, selecionando no menu de contexto a opo Edit Query. Na caixa de dilogo Report query, selecione em Query language o item Hibernate Query Language (HQL).

Digite a query para selecionar todos os campos da entidade Produto:

from Produto

Caso voc no tenha experincia com o Hibernate, saiba que ele usa uma linguagem
prpria para selecionar dados, similar s clusulas SQL, s que simplificado. Quando
adicionada a query from Produto, o mesmo que dizer ao Hibernate em SQL:
SELECT * FROM produtos

De todos os objetos que surgiro, selecione categoria e unidadesEmEstoque


para excluir teclando <DELETE>. Confirme logo aps.

Captulo 8

165

Duas taglibs so adicionadas nesta pgina, uma vez que se utiliza a JSTL. A URI
do primeiro cabealho chama as tags CORE e o segundo cabealho so as tags de
formatao.
A tag <c:forEach /> varre o List enviado pelo Servlet atravs de requestScope,
transmitido pelo Servlet criado, ao qual repassa pgina JSP.
<c:forEach var=lista items=${ requestScope. categoriasList }>

A primeira coluna ter a exibio do ID da categoria, a segunda o nome da


categoria e a terceira a descrio. Na quarta coluna, h um link ao Servlet com a
query string: id=NMERO DO ID DA CATEGORIA. Esse Servlet ser o responsvel
por exibir o relatrio criado. Clicando nesse link, voc submete ao Servlet o ID da
categoria que deseja visualizar.

ra

Por fim, crie na pgina ndex.jsp, um link que chamar o Servlet ServletCategoria, contendo por entre as tags <body/>:

st

<a href=ServletCategoria>Visualizar Categorias para Relatrio</a>

em

on

Adicione ao projeto a biblioteca JSTL, clicando com o direito do mouse em Libraries, na janela Projects, do NetBeans, selecionando o item Add Library no menu
de contexto.

Figura 8.11 Pgina que chamar o Servlet que far a gerao do relatrio

9
D

em

on

st

ra

RELATRIOS USANDO EJB QL

Nunca ande pelo caminho traado, pois ele


conduz somente at onde os outros foram.
Alexandre Graham Bell

Captulo 9

171

O uso de Java Persistence API se tornou muito intenso, e como no poderia


deixar de ser, o JasperReports possui suporte a esta especificao atravs de EJB QL.
Esta linguagem de queries possui uma semelhana HQL do Hibernate e tambm a
tradicional instruo SQL.
Com a especificao do EJB3, na introduo da JPA, Java Persistence API, ficou
muito popular o uso de JPQL, Java Persistence Query Language, que uma uma
extenso da EJB QL (Enterprise JavaBeans Query Language).

Neste captulo voc vai aprender a configurar um arquivo de persistncia e criar


um relatrio com sub-relatrio utilizando a EJB QL.

O CONCEITO DA API DE PERSISTNCIA

em

on

st

ra

At a verso J2EE 1.4, a plataforma Java no possua uma forma simples de mapear objetos em um banco de dados. Uma forma mais complexa podia ser utilizada,
exigindo um container EJB, utilizando EJB QL (que foi introduzida como parte da especificao EJB2.0). Com a introduo de JPA (Java Persistence API), definida na JSR220 (Enterprise JavaBeans, Version 3.0), houve uma padronizao no mapeamento
de objeto/relacional na plataforma Java. No EJB3, as sentenas so expressas atravs
da JPQL (Java Persistence Query Language). A JPQL uma extenso da EJB QL, como
j foi dito na introduo deste captulo.

Apesar de descrita na especificao do EJB 3, a JPA no depende de um container


para funcionar, sendo possvel usar e testar solues apenas com o Java SE.
A JPA baseada no conceito POJO (Plain Old Java Object), algo como Bom e
Velho Objeto Java, que incorpora idias de renomados frameworks de persistncia
para padronizar o mapeamento O/R em Java.
Na JPA, os objetos persistentes so denominados entidades (Entities). Uma entidade
um objeto simples (POJO), que representa um conjunto de dados persistido no banco.
Como entidades so definidas por classes Java comuns, sem relao com frameworks
ou bibliotecas, elas podem ser abstratas ou herdar de outras classes, sem restries.
A chave primria, indicada como um conceito importante nas entidades, possui
uma identificao e estado, sendo seu ciclo de vida independente do tempo de
durao da aplicao.

Captulo 9

175

Retornando a caixa de dilogo New Entity Classes from Database, altere os nomes de Class Name para o singular, mantendo o padro de nomes de entidades.

on

st

ra

Em Package digite o nome do pacote em que estas entidades sero colocadas. No


livro foi usado br.com.integrator.entities. Veja a Figura 9.4 para melhor compreenso.

em

Figura 9.4 Alterao do nome das entidades e criao do pacote

Na quarta e ltima etapa, em Mapping Options, altere para lazy, em Association


Fetch e java.util.Set, em Collection Type. Clique no boto Finish.
Observe que o NetBeans criar duas classes (em Source Packages) e o arquivo
persistence.xml, em Configuration Files.

A entidade Categoria
A entidade Categoria, criada pelo NetBeans, j possui todas as anotaes necessrias para o reconhecimento no iReport. Para sua melhor compreenso, temos a
Listagem 9.1 mostrando como ela pode estar:

Captulo 9

183

on

st

ra

Na segunda etapa, digite o nome de sua conexo, no campo Name e, no campo


Persistence Unit Name, o nome dado em seu arquivo de persistncia (no caso foi
relatorios). Clique no boto Test e caso a conexo tenha sido bem sucedida, confirme e Salve.

em

Figura 9.5 Criando e testando a conexo EJBQL

Esta conexo armazenada no arquivo ireport.properties do iReport para NetBeans (diretrio .ireport) e utiliza a classe it.businesslogic.ireport.connection.
EJBQLConnection.

DESENVOLVENDO O RELATRIO

O relatrio que ser criado com sub-relatrio. Infelizmente o iReport para


NetBeans no suporta o uso de assistente para criar o sub-relatrio. Portanto voc
dever criar os dois relatrios manualmente e depois chamar o sub-relatrio, atravs da ferramenta subreport.

Captulo 9

185

Nota: O livro no se aprofundar neste assunto, uma vez que est focado no desenvolvimento de relatrios JasperReports com o uso do iReport para NetBeans.

em

on

st

ra

De todos os objetos que surgiro, selecione class e produtos (na parte inferior,
em Field name) e tecle <DELETE>. Confirme logo aps.

Figura 9.7 A query EJBQL para selecionar os itens da entidade Categoria

A composio final do relatrio mestre


Apenas para que voc possa examinar, seu relatrio mestre, quando executado,
poder ser semelhante ao mostrado na Figura 9.8 mostrada a seguir.

Captulo 9

187

Gerando a query EJBQL do sub-relatrio


Execute o Report Query. Na caixa de dilogo Report query, selecione em Query
language o item EJBQL.
Digite a query para selecionar todos os campos da entidade Produto, com a
condio estabelecida por categoriaID, filtrando com o parmetro recm criado
PAR_CATID, como mostrado a seguir:

SELECT p FROM Produto p JOIN p.categoria c


WHERE c.categoriaID = $P{PAR_CATID}

em

on

st

ra

A Figura 9.9 a seguir mostra o resultado final da query escrita no Report query.

Figura 9.9 A query criada para o sub-relatrio

O design final do sub-relatrio


Quanto aos campos, apenas o Nome do Produto (produtoNome), o Preo (preco) e Quantidade em Estoque (unidadesEmEstoque) sero exibidos. A Figura 9.10 a
seguir ilustra o design final.

190

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

SELECIONANDO APENAS ALGUNS OBJETOS COM EJB QL


No caso de precisar de apenas alguns objetos retornados pelo EJB QL, voc no
pode utilizar a criao de apelidos nos campos retornados. Uma instruo como
a mostrada a seguir:
select c.nome,
p.pedidoID,
p.dataPedido
from Pedido p join p.cliente c

em

on

st

ra

Retorna trs campos/colunas, que so nomeados pelo iReport para NetBeans como
COLUMN_x, onde x o nmero da coluna/objeto na ordem existente na instruo.

Figura 9.13 Uma query com apenas alguns objetos/valores

10

GERANDO RELATRIOS COM OUTRAS

em

on

st

ra

FONTES DE DADOS

Nunca ande pelo caminho traado, pois ele


conduz somente at onde os outros foram.
Alexandre Graham Bell

Captulo 10

199

O JasperReports rico no fornecimento de outras fontes de dados acessveis


para que possamos gerar relatrios.
Muitos sistemas costumam exportar diversos tipos de dados, sendo os mais
comuns o formato CSV e XML.
Este captulo tratar de outras formas de acesso que no utilizam um banco de
dados diretamente.

USANDO XML PARA CRIAR RELATRIOS

on

st

ra

Atualmente o XML (EXtensible Markup Language) praticamente um padro no


desenvolvimento interoperativo de sistemas. Com a popularidade dos Web Services em 2004, a linguagem XML fincou sua bandeira na transmisso de dados. Isso
significa que diversos sistemas e gerenciadores de banco de dados exportam neste
formato. Por ser uma linguagem extensvel, seu formato tem como caracterstica
principal sua semelhana em tags e atributos como o HTML (HyperText Markup
Language). Mas a semelhana para por ai, pois o XML no contm tags pr-definidas, possibilitando que cada fornecedor crie suas prprias tags. Mas graas a sua
semntica de no poder conter tags desordenadas, sua leitura de fcil acesso.

em

O iReport suporta o uso de XML como datasource desde a verso 0.4.0, graas
ao suporte do JasperReports.

CRIANDO UM RELATRIO COM XML

Para a criao de um relatrio usando XML, voc tem o seguinte formato encontrado em um arquivo chamado produtos.xml, como mostrado na Listagem 10.1.

Listagem 10.1 O arquivo produtos.xml


<?xml version=1.0 encoding=UTF-8?>
<produtos>
<produto id=1>
<nome>Chopp e Pssego DRAFT &amp; FRUIT</nome>
<categoria>1</categoria>
<preco>1.99</preco>
<qdtEmEstoque>39</qdtEmEstoque>
<imagem>chopp_pessego.jpg</imagem>
</produto>
<produto id=2>

202

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Expanda o n de produtos e, em produto, clique com o direito do mouse. Selecione Set record node (generate xPath), no menu de contexto (Figura 10.2). Observe que foi adicionada a expresso XPath:

em

on

st

ra

/produtos/produto

Figura 10.2 Adicionando o n de pesquisa atravs do XPath

O que XPath?

O XPath (XML Path Language) uma linguagem de consulta usada para pesquisar
e recuperar informaes contidas nos ns de um documento XML. As consultas
do XPath so formadas como expresses e so usadas para se referir s vrias
partes de um documento XML. Esta linguagem exibe um documento XML como
uma rvore com tipos de ns diferentes. Suas expresses identificam esses ns
no documento XML com base no seu tipo, nome e valores, bem como a relao
de um n com outros ns do documento.

Para definir os campos, clique com o direito do mouse sobre cada elemento e
selecione, no menu de contexto, o item Add node as field (Figura 10.3).

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

206

st

ra

Figura 10.5 Definindo as caractersticas do arquivo CSV

on

REGISTRANDO OS CAMPOS DE UM ARQUIVO CSV

em

No Report query, voc possui a guia CSV Datasource. Basta clicar no boto Get
fields from datasource. Os campos aparecem na parte inferior. Como ocorre com o
arquivo XML, voc pode definir a mudana de um tipo pois o iReport registra todos
como java.lang.String.

Figura 10.6 Definindo os campos de um arquivo CSV

11
D

em

on

st

ra

SIMPLIFICANDO RELATRIOS COM


GROOVY

O duro e rijo quebra. O


flexvel prepondera.
Tao Te Ching

Captulo 11

221

Groovy uma linguagem dinmica escrita para a plataforma Java, inspirada em


linguagens como Ruby, Python e Smalltalk. Embora seja simples de manipular e muito similar as linguagens de scripting, Groovy um pouco mais complexo. Aplicaes
com Groovy podem ser pr-compiladas em bytecodes Java, para ser integrada suas
aplicaes Java.
Graas a um Java Specification Request (JSR-241), Groovy se tornou a segunda
linguagem oficial padro do Java Virtual Machine (JVM), depois de Java, claro.

Desde a verso 0.6.6 do JasperReports, h suporte a linguagem Groovy. Com


isso, quem ganha o desenvolvedor, que tem em suas mos uma maior simplicidade no desenvolvimento de expresses em seus relatrios.

ra

Neste captulo voc vai construir um relatrio utilizando Groovy, trabalhando


com expresses e aprender como rodar o relatrio criado em suas aplicaes tambm usando Groovy.

st

CRIANDO UM RELATRIO USANDO GROOVY

on

Crie um relatrio e, selecionando na janela Report Inspector, o nome do relatrio, v at a propriedade (janela Properties) Language e selecione o item Groovy.

em

Graas a esta pequena mudana, voc j valer do uso de Groovy em seu relatrio.

O iReport para NetBeans possui em seu diretrio de instalao, em modules/


ext, o arquivo groovy-all-1.5.5.jar.

O arquivo JasperReports usando Groovy


No arquivo JasperReports aberto, em XML, voc possui no elemento raz <jasperReport/> o atributo language, com o valor groovy.
<jasperReport
language=groovy
...

INICIANDO O DESENVOLVIMENTO DO RELATRIO


Mantenha apenas as bands Page Header, Column Header, detail e Page Footer.
Deixe a conexo como sendo a de SQL.

12

CRIANDO GRFICOS E SUBDATASET EM

em

on

st

ra

SEUS RELATRIOS

Uma imagem vale por mil palavras.


Provrbio Chins
Um bom esboo vale mais que um longo discurso.
Napoleo Bonaparte

Captulo 12

233

Como todo bom relatrio, no poderia faltar os grficos. Simples e eficazes, os


grficos exibem uma situao visualmente impactante, possibilitando um entendimento muito maior, mais rico, do que apenas nmeros e textos.
O JasperReports possui suporte a gerao de grficos, facilitando o desenvolvimento do relatrio, atravs da biblioteca JFreeChart.
Neste captulo ser apresentado como criar grficos em um relatrio JasperReports usando o iReport para NetBeans, alm de aprender a trabalhar com consultas
diferentes no mesmo relatrio, o que chamamos de Subdataset.

CRIANDO UM GRFICO SIMPLES

em

on

st

ra

O primeiro exemplo na gerao de relatrios com grficos um grfico no formato de pizza 3D (Pie 3D). A Figura 12.1 a seguir ilustra o resultado final.

Figura 12.1 Relatrio gerado completo

Captulo 12

243

on

st

ra

Como o grfico de barras, voc ter como categorias os nomes dos clientes
e os valores o total encontrado das compras efetuadas por cada um no respectivo
perodo. Observe que Series expression o mesmo que Value axis label expression.
Confirme tudo e d um Preview.

em

Figura 12.6 Resultado final do relatrio utilizando um tema padro do iReport

244

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

GRFICOS DE LINHAS

em

on

st

ra

Por ltimo, o relatrio que ser criado utilizar um grfico de linhas para representar a demanda de vendas 4 de um determinado produto. A Figura 12.7 demonstra o resultado do relatrio final.

Figura 12.7 Resultado final do relatrio utilizando um grfico de linhas

Baseado no livro Excel Avanado 2003/2007 Forecast Anlise de Previso de Demanda (veja bibliografia)

13
D

em

on

st

ra

INTERNACIONALIZANDO RELATRIOS

Informao a matria prima mais


importante da humanidade.
Waldez Ludwig

Captulo 13

251

Aplicaes internacionalizadas so muito comuns no mundo do desenvolvimento. No seria diferente no caso dos relatrios. O JasperReports introduziu esta caracterstica na verso 0.6.2 e desde ento seu suporte foi acrescentado ao iReport,
facilitando mais ainda seu desenvolvimento.
Neste captulo ser criada uma aplicao Java desktop simples, pelo NetBeans,
para ser usada com um relatrio internacionalizado gerado pelo iReport.

CRIANDO SEU RELATRIO INTERNACIONALIZADO

Para ilustrar o seu desenvolvimento crie um projeto Java no NetBeans IDE, onde
h tambm instalado o plugin do iReport.

ra

Em seu projeto, crie um pacote, se no o tiver feito ao criar a classe Main, clicando com o direito do mouse sobre Source Packages e selecionando no menu de
contexto o item New>Java Package. Se preferir seguir o exemplo do livro, digite
br.com.integrator no campo Package Name, da caixa de dilogo New Java Package.

em

on

st

A internacionalizao da aplicao exigir a gerao de um arquivo .properties.


Crie um novo arquivo, clicando com o direito do mouse sobre o pacote br.com.integrator (ou o gerado por voc). No menu de contexto, selecione New>Other. Na
caixa de dilogo New File, selecione Other>Properties File.

Ao avanar no assistente, digite rotulos (sem acento) e clique no boto Finish


para confirmar.

Ateno: Adicione as bibliotecas do JasperReports e do JDBC do banco de dados


MySQL.

Adicionando as chaves e valores do arquivo


O NetBeans exibir em seu editor o arquivo recm criado. Altere-o como mostrado a seguir, na Listagem 13.1, e salve clicando no boto Save.

14
D

em

on

st

ra

CROSSTABS

Fazendo o melhor neste momento o coloca na melhor situao para o prximo.


Oprah Winfrey

Captulo 14

259

Crosstabs (cross-tabulation), no JasperReports, so tabelas cruzadas, comuns no


desenvolvimento de relatrios com a utilizao de planilhas eletrnicas, tambm
conhecidas por tabelas dinmicas ou tabelas de referncias cruzada.
Diferente dos demais relatrios criados at o momento no livro, um relatrio
crosstab possui uma tabela contendo um nmero de linhas e colunas que no se
conhece em tempo de design.
Graas ao iReport, voc pode contar com o uso de um assistente, tornando esta
tarefa no muito complicada.

Neste captulo voc aprender a criar crosstabs no iReport, modificar, formatar


e usar tambm subdatasets para relatrios mais complexos.

CRIANDO SEU PRIMEIRO RELATRIO CROSSTAB

st

ra

O design no necessitar da maioria das bands, uma vez que apenas a band
Summary ser usada neste primeiro exemplo.

em

Criando a query

on

Crie um novo relatrio, sem o uso do assistente.

Em seu relatrio, crie uma query contendo apenas o nome do cliente (clientes.
nome), o cdigo do pedido (pedidos.PedidoID) e a data do pedido (pedidos.dataPedido).
Sua query ser similar a mostrada a seguir:
SELECT
clientes.nome,
pedidos.dataPedido,
pedidos.PedidoID
FROM
clientes INNER JOIN pedidos
ON clientes.ClienteID = pedidos.ClienteID

262

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Como a tabela criada tem uma rea exclusiva, tambm no poderia deixar de
possuir caractersticas prprias para sua manipulao.
1. Na janela Report Inspector possvel visualizar os parmetros, grupos, measures e demais itens que compem a crosstab gerada.
2. No Designer da crosstab, podemos alterar a largura, altura, formatao de
cada componente selecionando-o e modificando-o atravs da janela Properties.
3. Na janela Properties h um pequeno conjunto de propriedades prprias para
o elemento crosstab.

Se voc executar o relatrio, em Preview, observar melhor sua disposio,


como mostrada na Figura 14.4.

em

on

st

ra

Na parte superior haver os anos em que cada cliente efetuou sua compra e na lateral seus respectivos nomes. Os dados agrupados, contam o nmero de pedidos efetuados em cada ano. Ao final, voc possui o total de pedidos efetuados por cliente.

Figura 14.4 Relatrio Crosstab (agrupado por clientes e pedidos por ano)

Captulo 14

267

Arraste PedidoIDMeasure para Detail /Mes, expandindo Measures na janela Report


Inspector. Formate com cor de fundo para a clula, alinhamentos de texto e alteraes
de borda. Na clula Mestotal header, adicione um elemento Static Text e digite Total.

Na ltima linha, desta coluna, adicione na clula que resta a measure da janela
Report Inspector chamada de PedidoIDMeasure. Esta varivel ir contar o perodo
de todos os meses do ano e o adicionar no relatrio. Como os demais, formate.

st

ra

Figura 14.9 Resultado final do exemplo desenvolvido

em

on

Ao executar o relatrio, voc ter um resultado similar ao mostrado na Figura


14.10 a seguir:

Figura 14.10 Resultado final na execuo do relatrio

Captulo 14

269

CRIANDO UMA CROSSTAB COM SUBDATASET

em

on

st

ra

Vamos partir da hiptese que voc deseja visualizar um relatrio contendo as compras efetuadas por cada cliente, agrupados por produto, como mostra a Figura 14.11.

Figura 14.11 Relatrio contendo Crosstab e Subdataset

Crie um novo relatrio e mantenha apenas as bands: Title, Page Header, Detail
e Page Footer.
Os elementos que sero adicionados so: Static Texts e Text Fields. Apenas os
detalhes necessrios para criar o assunto deste tpico sero apresentados.
Aos demais, a Figura 14.12 mostra o resultado final do design do seu relatrio.

15

OUTRAS CARACTERSTICAS DA GERAO

em

on

st

ra

DE RELATRIOS

Ns somos o que repetidamente fazemos. Excelncia, ento, no um ato, mas um hbito.


Aristteles

Captulo 15

277

Neste captulo voc conhecer outras caractersticas da ferramenta iReport,


alm do JasperReports, que no foram apresentadas at o momento, sendo passadas como dicas.

TRATANDO RELATRIOS GRANDES

O virtualizador de relatrios uma forma de minimizar a criao de relatrios


JasperReports grandes. Esta opo ajuda a minimizar a limitao fsica, economizando na memria usada e empregando outras formas avaliadas (geralmente o disco rgido) para salvar pginas completas durante a impresso de um relatrio. Isso evita
que relatrios grandes recebam a mensagem de exceo Out of Memory.

em

on

st

ra

Para configurar o Report Virtualizer, v ao menu Tools e clique em Options. Na


guia Virtualizer, voc possui o grupo Report Virtualizer. Em Use this virtualizer
voc possui trs opes que esto destinadas a configurao de trs tipos de virtualizadores fornecidos pelo JasperReports (iReport): JRFileVirtualizer (File Virtualizer),
JRSwapFileVirtualizer (Single Swap/File Virtualizer) e JRGzipVirtualizer.JRFileVirtualizer (GZIP In-memory Virtualizer).

Figura 15.1 Onde configurar a virtualizao de relatrios grandes no iReport

16
D

em

on

st

ra

SCRIPTLET

Mude seu modo de pensar e voc mudar seu mundo.


Norman Vincent Peale

Captulo 16

289

Um scriptlet uma classe Java desenvolvida unicamente para executar durante


a gerao da impresso do relatrio na tela. O scriptlet possui mtodos que so
invocados na gerao de relatrios possibilitando manipul-los, como a ocorrncia
da criao de uma nova pgina ou o acesso a um determinado parmetro.
Neste captulo ser visto como escrever um simples scriptlet, qual a sua utilidade e como us-lo em seu relatrio.

A CLASSE JRABSTRACTSCRIPTLET

ra

Para implementar um scriptlet em seus relatrios, primeiro voc deve criar uma
classe estendendo a classe JRAbstractScriptlet, de net.sf.jasperreports.engine. Esta
classe expe todos os mtodos abstratos que manipulam os eventos que ocorrem
durante a gerao de um relatrio e fornece estrutura de dados para acessar todas
as variveis, campos e parmetros presentes no relatrio.

on

st

O JasperReports fornece uma implementao bem simples atravs da classe JRDefaultScriptlet (veja a Listagem 16.1), estendendo a classe abstrata JRAbstractScriptlet.

em

Listagem 16.1 A classe JRDefaultScriptlet

package net.sf.jasperreports.engine;
/**
* @author Teodor Danciu (teodord@users.sourceforge.net)
* @version $Id: JRDefaultScriptlet.java,v 1.3 2004/06/01 20:28:22 teodord Exp $
*/
public class JRDefaultScriptlet extends JRAbstractScriptlet
{
public JRDefaultScriptlet() { }
public void beforeReportInit() throws JRScriptletException
{
}
public void afterReportInit() throws JRScriptletException
{
}
public void beforePageInit() throws JRScriptletException
{
}
public void afterPageInit() throws JRScriptletException
{
}
public void beforeColumnInit() throws JRScriptletException
{

296

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

DESENVOLVENDO O RELATRIO
Conforme o j visto no Captulo 10, podemos trabalhar diretamente com arquivos CSV, simplesmente informando o arquivo e sua estrutura para a leitura.

st

ra

O relatrio proposto possui o design tabular, conforme a Figura 16.2 ilustra


aps executado.

on

Figura 16.2 Preview do relatrio criado usando CSV e Scriptlet

em

Portanto, dentro do seu projeto no NetBeans IDE, no mesmo pacote criado, gere
um novo relatrio sem o uso de assistentes.

A CONEXO COM O ARQUIVO CSV

Para preparar o relatrio, inicialmente, voc ter que ler o Scriptlet e tambm
o arquivo CSV.
O arquivo CSV, chamado de pedidos.csv, se encontra nos arquivos que voc j
fez download, no diretrio arquivos/csv.
Crie uma conexo CSV, conforme ilustrado no Captulo 10, onde, na guia Separators, voc dever marcar Semicolon em Field separator (char) e, New line, em
Row separator.

Captulo 16

301

COMO EVITAR VALORES REPETIDOS EM UM RELATRIO

on

st

ra

Como dica, caso queira evitar valores repetidos no relatrio, como ocorre na coluna Produto, voc pode selecionar o Text Field, no Designer, e desmarcar a opo
Print Repeated Values.

em

Figura 16.6 Relatrio exibindo dados sem campos repetidos

No JasperReports, voc ver o elemento <reportElement /> com a propriedade


isPrintRepeatedValues contendo o valor false (o padro true).
<textField ...>
<reportElement isPrintRepeatedValues=false ...>
...
</reportElement>
</textField>

FORANDO O VALOR A APARECER AO MENOS UMA VEZ EM CADA PGINA


Se colocarmos um determinado campo para no repetir valores, logo perceberemos um problema, se este campo estiver em uma segunda pgina, no teremos
como saber de qual se trata sem olhar a pgina anterior (ou anteriores).
Para evitar isso, basta forar sua impresso na primeira vez que a band for usada
na pgina. Nas propriedades, marque Print In First Whole Band.

17
D

em

on

st

ra

DESENVOLVENDO SEUS PRPRIOS


TEMPLATES

Nossa maior fraqueza est em desistir. O caminho mais seguro para o


sucesso sempre tentar apenas uma vez mais.
Thomas Edison

Captulo 17

305

Quando usamos um assistente de criao de relatrios, na ltima etapa fazemos


uso de templates. Algumas vezes pode ser til criar um ou vrios templates para
usar no assistente.
Neste Captulo voc vai aprender a criar seus prprios templates e utiliz-los no
iReport.

CRIANDO UM RELATRIO MODELO

Para a gerao de um template necessrio apenas criar um relatrio vazio, sem


dados, usando no mximo quatro grupos.

ra

Na criao do relatrio base, que servir como template, voc deve estar atento
ao detalhe do nome do arquivo/relatrio. Este nome deve terminar com C de Columnar ou com T de Tabular. assim que o iReport diferenciar o template colunar ou
tabular na opo de layout do seu assistente de criao de relatrio.

on

st

No exemplo, o Template mostrado na Figura 17.1 utiliza um formato colunar,


o que o fez ser chamado de TemplateExemploC.jrxml, onde voc pode observar o
trmino do nome do arquivo com C maisculo.
Para comear, mantenha apenas as bands: Title, Detail e PageFooter.

em

Na band Title adicione um Static Text e coloque o texto Template de Exemplo.


Altere sua cor de fundo e fonte se achar necessrio.

Figura 17.1 Template criado para o exemplo deste captulo

st

ra

Captulo 17

em

on

Figura 17.3 Resultado final do template e seu preview no assistente de relatrio

309

APNDICE

em

on

st

ra

EXPORTANDO PARA OUTROS FORMATOS

Você também pode gostar