You are on page 1of 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, grandes amigos e agora pais.

em

on

st

ra

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.

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

em

on

st

ra

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

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.

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.

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

on

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.

st

ra

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.

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. O leitor tambm aprender a chamar seus relatrios atravs de aplicaes desktop e Web criadas unicamente no NetBeans.

em

on

st

ra

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.

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.

... 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.

em

OS SOFTWARES REQUERIDOS

on

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:

st

ra

ANTES DE COMEAR

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)

Monitor: 17 polegadas ou superior

CDIGOS DOS EXEMPLOS CRIADOS NO LIVRO

em

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

on

Todos os cdigos dos exemplos criados se encontram no site do autor: http:// www.integrator.com.br.

st

ra

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

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. A seguir, voc tem uma sinopse de cada um dos captulos do livro, incluindo tambm o apndice:

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.

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.

on

CAPTULO 1 - CONHECENDO O IREPORT PARA NETBEANS IDE

st

ra

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


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.

em

on

st

ra

DESENVOLVIMENTO

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. 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.

CAPTULO 6 - CHAMANDO O RELATRIO POR UMA

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.

D
CAPTULO 7 - SUB-RELATRIOS

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.

on

APLICAO DESKTOP

st

ra

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. Neste captulo voc aprender a desenvolver seus relatrios utilizando o Hibernate para acessar os dados, incluindo um exemplo com sub-relatrio.

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 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.

em

on

CAPTULO 9 - RELATRIOS USANDO EJB QL

st

ra

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.

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.

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.

em

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.

on

st

ra

CAPTULO 11 - SIMPLIFICANDO RELATRIOS COM 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. 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.

CAPTULO 13 - INTERNACIONALIZANDO RELATRIOS


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.

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.

D
CAPTULO 14 - CROSSTABS

em

on

st

ra

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

CAPTULO 16 - SCRIPTLET

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.

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

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.

on

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.

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


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

APNDICE D TRABALHANDO COM DATAS EM JAVA APNDICE E O TOMCAT

em

APNDICE C CONTEXTO DE DESENVOLVIMENTO WEB EM JAVA

on

st

APNDICE B O MYSQL

ra

SUMRIO
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 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

em

on

st

ra

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 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

em

on

st

ra

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 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

em

on

st

ra

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 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

em

on

st

ra

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 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

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

em

on

st

Captulo 13 - Internacionalizando relatrios ........................................................ 249 Criando seu relatrio internacionalizado .................................................. 251

ra

XXVI

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Data atual no relatrio .............................................................................. 284 Stored Procedures e Functions.................................................................. 284 Erros na compilao .................................................................................. 284 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 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

em

on

st

ra

Sumrio

XXVII

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

em

on

st

ra

1
D
Comear j metade de toda a ao. provrbio grego

em

on

st

ra

CONHECENDO O IREPORT PARA NETBEANS IDE

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. Neste captulo voc aprender onde obter, os requerimentos necessrios para executar, como instalar e entender sobre algumas das mais importantes caractersticas do iReport.

ANTES DE UTILIZAR O IREPORT PARA NETBEANS IDE


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).

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

em

OBTENDO E INSTALANDO O JAVA SE

on

st

ra

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: 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.

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.

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.

em

on

Java SE 6 Documentation A documentao do J2SE. Esta documentao contm as informaes sobre todas as bibliotecas do Java.

A INSTALAO NO WINDOWS

st

Java Runtime Environment (JRE) 6 Update 6 Este o ambiente runtime do Java, usado apenas para executar os programas feitos em Java.

ra

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.

java -version

set JAVA_HOME= C:\jdk1.6.0_06

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

Voc deve editar o arquivo autoexec.bat, encontrado em C:\autoexec.bat e adicionar as variveis como o exemplo a seguir:

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

em

on
EM WINDOWS VERSO 9X A INSTALAO NO LINUX

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:

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.

A varivel JRE_HOME similar a anterior, mudando apenas para o valor onde se encontra a mquina virtual Java.

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.

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

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)

CLASSPATH - Diretrio das libs

em

on

As variveis usadas so explicadas rapidamente a seguir, dando a voc noo do que cada uma faz:

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

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

Captulo 1

Figura 1.1 Verificando a verso de instalao do Java no Linux

OBTENDO E INSTALANDO O IREPORT PARA NETBEANS IDE


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. 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.

em

on

st

ra

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;

Suporte virtual para todos os tipos de DataSources;

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.

em

Assistentes para criar relatrios rapidamente;

on

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

st

Integrao para compilar e exportar;

ra

Suporte para Unicode e lnguas no latinas como: Russo, Chins, Japons, Coreano entre outras;

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

1. Na primeira etapa voc tem a tela inicial do iReport nb-3.1.2. Clique no boto Next para prosseguir. 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.

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.

em

3. Na terceira etapa voc define os componentes que sero instalados. Como no caso h apenas um, clique no boto Next para prosseguir.

on

st

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.

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

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


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

shell# ./ireport

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.

COMO INSTALAR O PLUG-IN IREPORT FOR NETBEANS

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:

st

ra

Captulo 1

11

1. No seu NetBeans IDE, v ao menu Tools>Plugins e clique na guia Downloaded. 2. Clique no boto Add Plugins e selecione todos os arquivos encontrados na descompactao do iReport-nb-3.1.2.nbms.zip.

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.

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.

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.

COMPILANDO O FONTE DO IREPORT PARA NETBEANS

em

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

on

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

st

ra

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. 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.

D
Figura 1.3 Projeto do iReport aberto no NetBeans IDE 6.0

em

on

st

ra

2
D
Especialize-se em um setor determinado e procure conhecer mais sobre ele que qualquer outra pessoa. Joseph Murphy

em

on

st

ra

INICIANDO NO IREPORT PARA NETBEANS

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


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.

D
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.

em

on

st

ra

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

D
Figura 2.2 Diagramao do banco de dados usado no livro

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.

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.

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.

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.

em
Figura 2.3 Selecionando o item de menu Report Wizard

on

st

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

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.

O PRIMEIRO RELATRIO NO IREPORT PARA NETBEANS NA VERSO STANDALONE

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. 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.

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.

D
Figura 2.4 Definindo as propriedades de conexo

em

on

st

ra

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.

SELECT * FROM produtos

3. Na terceira etapa do assistente, em Fields, adicione todos os campos exceto CategoriaID (utilizando o boto >) e clique no boto Next.

D
Figura 2.5 Criando a consulta SQL na segunda etapa do assistente

em

on

st

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:

20

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Figura 2.6 Seleo de campos para a gerao do relatrio

4. Na quarta etapa simplesmente avance clicando no boto Next. 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.

em

Figura 2.7 - Estrutura do relatrio gerado pelo assistente

on

st

ra

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.

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.

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.

Ao surgir caixa de dilogo Options, as configuraes iniciais so do iReport. Como principais itens de configurao voc tem:

em

on

CONFIGURANDO O IREPORT PARA NETBEANS

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.

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

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

A COMPILAO DO IREPORT PARA NETBEANS NO


PREVIEW

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.

Por padro, o iReport utiliza o seu diretrio corrente do arquivo .jrxml, aberto do seu relatrio, para guardar os arquivos compilados.

on

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

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.

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.

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


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


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.

em

Figura 2.8 Erro ao ler um relatrio criado com acentos

on

st

ra

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.

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

IREPORT PARA

default_options=-J-Duser.language=en -J-Duser.country=US

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:

em

on

st

Ao inicializar o iReport, ele carregar estas configuraes, encontradas nesta linha, e inicializar os arquivos com essa codificao.

NETBEANS EM INGLS

ra

Altere no arquivo, que se encontra no diretrio etc, no local da instalao do seu iReport, na seguinte linha:

3
D
A nica hora que voc no pode falhar na ltima vez que tentar. Charles Kettering

em

on

st

ra

DESENVOLVIMENTO

ESTRUTURA DE UM RELATRIO E SEU

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

As bands de um relatrio JasperReports dividido em dez sees pr-definidas para que novos grupos possam ser adicionados.

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.

em

on

st

ra

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

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. 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. 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.

em

Figura 3.5 Ordem de impresso na Vertical e na Horizontal

on

st

ra

4
D
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

em

on

st

ra

ASSISTENTES

CRIANDO UM RELATRIO SEM O USO DE

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

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.

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.

em

Figura 4.1 - Ferramentas para a criao de elementos no relatrio

on

A JANELA PALETTE

st

Dica: Caso queira visualizar o Grid para desenhar o relatrio, v ao menu View>Report Designer Grid e clique em Show Grid.

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.

48

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.

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.

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.

on

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

st

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.

ra

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

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).

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.

7. Underlined Sublinha o texto encontrado no elemento. 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.

em

on

st

6. Italic Aplica itlico ao texto encontrado no elemento.

ra

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

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.

Figura 4.10 Design final do relatrio

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

<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

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.

on

st

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

ra

Captulo 4

65

CRIANDO O EFEITO ZEBRA EM SEU RELATRIO


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.

Figura 4.15 Relatrio com o efeito zebra

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 )

Na janela Report Inspector, em Styles, clique com o direito do mouse e selecione no menu de contexto o item Add Style.

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.

on

st

ra

68

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

EXIBINDO IMAGENS EM SEU RELATRIO


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.

Figura 4.17 Imagens no relatrio com dados da tabela

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}

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.

on

st

ra

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

em

on

st

ra

DE PARMETROS

RELATRIOS COM GRUPOS E PASSAGEM

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

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.

em
Figura 5.1 Exemplo final do relatrio com grupos

on
GERANDO O RELATRIO

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.

84

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Veja os campos selecionados na Figura 5.3.

Figura 5.3 Criando a query visualmente atravs do Query designer

D
Figura 5.4 Adicionando uma ordenao 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.

on

st

ra

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. 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:

new Integer( 10248 )

D
Figura 5.11 A adio do parmetro PAR_PEDID

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.

on

st

ra

6
D
A disciplina a parte mais importante do sucesso. Truman Capote

em

on

st

ra

APLICAO DESKTOP

CHAMANDO O RELATRIO POR UMA

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


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.

D
Figura 6.1 Aparncia do aplicativo Swing para exibio do relatrio

em

on

st

ra

7
D
Ter problemas na vida inevitvel, ser derrotado por eles opcional. Roger Crawford

em

on

st

ra

SUB-RELATRIOS

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


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.

D
Figura 7.1 Exemplo final do relatrio mestre-detalhe

em

on

st

ra

118

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

DEFININDO A POSIO DOS CAMPOS


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.

Figura 7.4 A estrutura do relatrio

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.

em

on

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

st

ra

Captulo 7

123

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.

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

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}

em

MODIFICANDO A QUERY DO SUB-RELATRIO

on

st

ra

Captulo 7

131

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

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.

em

on

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.

st

ra

CHAMANDO O RELATRIO POR UMA APLICAO WEB

Captulo 7

137

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.

em

on

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

st

ra

Captulo 7

139

em

on

st

Figura 7.18 Destaque da utilizao dos marcadores no Adobe Acrobate

ra

8
D
Na teoria, no h diferena entre teoria e prtica. Mas na prtica h. Jan L. A. van de Snepscheut

em

on

st

ra

RELATRIOS COM HIBERNATE

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
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.

em

on

st

ra

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:

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

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;

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

Captulo 8

145

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.

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.

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

D
AS BIBLIOTECAS DO JASPERREPORTS E MYSQL JDBC 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.

em

on

st

ra

156

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

DESENVOLVENDO O RELATRIO
O relatrio final utilizando o Hibernate ser similar ao mostrado na Figura 8.5. No caso, ser feito sem o uso de assistentes.

Figura 8.5 Resultado final do primeiro relatrio com Hibernate

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.

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).

on

Gerando a query HQL

st

ra

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 }>

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

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.

st

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

ra

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

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.

9
D
Nunca ande pelo caminho traado, pois ele conduz somente at onde os outros foram. Alexandre Graham Bell

em

on

st

ra

RELATRIOS USANDO EJB QL

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

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.

em

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.

on

st

ra

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. 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.

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:

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.

em

Figura 9.4 Alterao do nome das entidades e criao do pacote

on

st

ra

Captulo 9

183

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.

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.

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.

em

DESENVOLVENDO O RELATRIO

on

st

ra

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.

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

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

A composio final do relatrio mestre

em

on

st

ra

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}

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

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.

D
Figura 9.9 A query criada para o sub-relatrio

em

on

st

ra

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

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.

em
Figura 9.13 Uma query com apenas alguns objetos/valores

on

st

ra

10
D
Nunca ande pelo caminho traado, pois ele conduz somente at onde os outros foram. Alexandre Graham Bell

em

on

st

ra

FONTES DE DADOS

GERANDO RELATRIOS COM OUTRAS

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


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.

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>

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

on

st

ra

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:
/produtos/produto

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).

O que XPath?

em

Figura 10.2 Adicionando o n de pesquisa atravs do XPath

on

st

ra

206

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

Figura 10.5 Definindo as caractersticas do arquivo CSV

REGISTRANDO OS CAMPOS DE UM ARQUIVO CSV


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.

D
Figura 10.6 Definindo os campos de um arquivo CSV

em

on

st

ra

11
D em
O duro e rijo quebra. O flexvel prepondera. Tao Te Ching

on

st

ra

SIMPLIFICANDO RELATRIOS COM GROOVY

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. 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.

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 ...

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

O iReport para NetBeans possui em seu diretrio de instalao, em modules/ ext, o arquivo groovy-all-1.5.5.jar.

em

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

INICIANDO O DESENVOLVIMENTO DO RELATRIO

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.

st

CRIANDO UM RELATRIO USANDO GROOVY

ra

12
D
Uma imagem vale por mil palavras. Provrbio Chins Um bom esboo vale mais que um longo discurso. Napoleo Bonaparte

em

on

st

ra

SEUS RELATRIOS

CRIANDO GRFICOS E SUBDATASET EM

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.

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.

D
Figura 12.1 Relatrio gerado completo

em

on

st

ra

CRIANDO UM GRFICO SIMPLES

Captulo 12

243

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.

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

em

on

st

ra

244

Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

GRFICOS DE LINHAS
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.

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

D
Figura 12.7 Resultado final do relatrio utilizando um grfico de linhas

em

on

st

ra

13
D
Informao a matria prima mais importante da humanidade. Waldez Ludwig

em

on

st

ra

INTERNACIONALIZANDO RELATRIOS

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

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.

em

on

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.

st

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.

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

14
D
Fazendo o melhor neste momento o coloca na melhor situao para o prximo. Oprah Winfrey

em

on

st

ra

CROSSTABS

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

Crie um novo relatrio, sem o uso do assistente.

Criando a query

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

em

on

st

ra

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

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. 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.

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

em

on

st

ra

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.

D
Figura 14.10 Resultado final na execuo do relatrio

em

on

Ao executar o relatrio, voc ter um resultado similar ao mostrado na Figura 14.10 a seguir:

st

ra

Figura 14.9 Resultado final do exemplo desenvolvido

Captulo 14

269

CRIANDO UMA CROSSTAB COM SUBDATASET


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.

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.

em
Figura 14.11 Relatrio contendo Crosstab e Subdataset

on

st

ra

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

em

on

st

ra

DE RELATRIOS

OUTRAS CARACTERSTICAS DA GERAO

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. 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).

D
Figura 15.1 Onde configurar a virtualizao de relatrios grandes no iReport

em

on

st

ra

16
D
Mude seu modo de pensar e voc mudar seu mundo. Norman Vincent Peale

em

on

st

ra

SCRIPTLET

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

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 {

em

on

st

O JasperReports fornece uma implementao bem simples atravs da classe JRDefaultScriptlet (veja a Listagem 16.1), estendendo a classe abstrata 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.

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. O relatrio proposto possui o design tabular, conforme a Figura 16.2 ilustra aps executado.

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.

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

on

Figura 16.2 Preview do relatrio criado usando CSV e Scriptlet

st

ra

Captulo 16

301

COMO EVITAR VALORES REPETIDOS EM UM RELATRIO


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.

<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.

No JasperReports, voc ver o elemento <reportElement /> com a propriedade isPrintRepeatedValues contendo o valor false (o padro true).

em

Figura 16.6 Relatrio exibindo dados sem campos repetidos

on

st

ra

17
D
Nossa maior fraqueza est em desistir. O caminho mais seguro para o sucesso sempre tentar apenas uma vez mais. Thomas Edison

em

on

st

ra

DESENVOLVENDO SEUS PRPRIOS TEMPLATES

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. 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.

Para comear, mantenha apenas as bands: Title, Detail e PageFooter.

D
Figura 17.1 Template criado para o exemplo deste captulo

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.

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.

ra

Captulo 17

309

em

on

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

st

ra

APNDICE
st D em on ra o
EXPORTANDO PARA OUTROS FORMATOS

You might also like