109

Desenvolvendo Relatorios Profissionais Com iReport Para Netbeans IDE

Embed Size (px)

Citation preview

  • Desenvolvendo Relatrios Profissionais com iReport

    para NetBeans IDE

    Edson Gonalves

    Demo

    nstra

    o

  • Este livro dedicado ao Samuel,

    filho do ngelo e de sua esposa Erica,

    grandes amigos e agora pais.

    Demo

    nstra

    o

  • AGRADECIMENTOSPrimeiramente quero agradecer a minha famlia, pelo apoio e compreen-

    so da minha ausncia.

    Agradeo o apoio da Editora Cincia Moderna, em especial ao editor Pau-lo Andr P. Marques, pelo incentivo e crdito em mais este livro.

    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.

    Demo

    nstra

    o

  • PREFCIONem bem havia feito um ano que meu primeiro livro sobre relatrios JasperRe-

    ports usando iReport havia sido iniciado e, acompanhando o site oficial da ferra-menta, 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 aplica-tivo. De fato, isso um grande salto para as ferramentas gratuitas, que anos atrs, no tinham essa caracterstica.

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

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

    Demo

    nstra

    o

  • INTRODUO AO DESENVOLVIMENTO DE RELATRIOS COM IREPORT

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

    O JasperReports uma biblioteca escrita em Java, de cdigo fonte open source, projetada para ajudar o desenvolvedor com a tarefa de criar relatrios para aplica-es, tanto Desktop como Web, fornecendo uma API que facilita sua gerao.

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

    Em 09 de outubro de 2002, o italiano Giulio Toffoli lanou, de forma indepen-dente, uma ferramenta para gerar relatrios visuais, chamando-a de iReport. Sua caracterstica era de desenvolver relatrios gerando o formato XML no padro Jas-perReports. Isso tornou mais acessvel e intuitivo o uso dos relatrios escritos em JasperReports.

    Em 2005, com a popularidade do iReport, a JasperSoft (empresa mantenedora do JasperReports) tornou esta ferramenta oficial na construo de relatrios para o JasperReports.

    Com seis anos de existncia, o iReport reescrito para trabalhar dentro do Ne-tBeans 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 Jas-perReports.

    Demo

    nstra

    o

  • X | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    Este livro a mais que uma orientao, um guia que o ensinar a utilizar o iRe-port 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 Jasper-Reports, 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.

    Demo

    nstra

    o

  • 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 desen-volvimento 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 aproveita-mento dos exemplos.

    ANTES DE COMEAREm algumas partes deste livro, voc encontrar apenas o trecho do cdigo pro-

    duzido, focado no assunto em questo, possuindo uma simbologia indicativa de que o restante no est sendo mostrado. Este smbolo mostrado a seguir:

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

    OS SOFTWARES REQUERIDOSOs aplicativos criados nesse livro no exigem software proprietrio. Portanto ao

    longo dos captulos voc no s aprender a us-los, como tambm onde encontr-los na Internet, caso precise de uma atualizao.

    Esse livro no est focado especialmente em um sistema operacional, portanto a sua escolha livre neste sentido.

    Demo

    nstra

    o

  • XII | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    HARDWARE REQUERIDO

    Uma boa configurao de hardware se faz necessrio para trabalhar com apli-caes 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 NetBe-ans IDE completo)

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

    Monitor: 17 polegadas ou superior

    CDIGOS DOS EXEMPLOS CRIADOS NO LIVRO

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

    Caso no encontre algum exemplo entre em contato pelo e-mail [email protected].

    Demo

    nstra

    o

  • Introduo | XIII

    VISO GERAL DOS CAPTULOSEmbora este livro esteja completamente focado na utilizao do iReport para

    NetBeans, ainda assim, voc ter ao longo desta obra alguns cdigos para desenvol-ver. 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:

    CAPTULO 1 - CONHECENDO O IREPORT PARA NETBEANS IDEO iReport para NetBeans IDE um programa Open Source, capaz de criar visual-

    mente os mais complexos relatrios para aplicaes Java no formato da biblioteca JasperReports.

    Atravs de uma interface grfica intuitiva, o desenvolvedor capaz de criar qual-quer 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 ma-nipular, h uma vantagem em usar esta ferramenta. Se o desenvolvedor um usu-rio iniciante no formato XML do JasperReports, o iReport supre suas necessidades evitando que seja necessrio fazer modificaes no cdigo fonte. Caso seja expe-riente 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 caracters-ticas do iReport.

    Demo

    nstra

    o

  • XIV | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    CAPTULO 2 - INICIANDO NO IREPORT PARA NETBEANSO 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 bsi-cas.

    CAPTULO 3 - ESTRUTURA DE UM RELATRIO E SEU DESENVOLVIMENTO

    Um relatrio uma maneira agradvel de apresentar as informaes vindas de alguma base de dados com sua aparncia formatada. Na maioria das vezes, relat-rios so usados para agrupar as informaes vindas de um conjunto de dados, rela-cionados 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 relat-rio no JasperReports, atravs do iReport para NetBeans, importante a um desen-volvedor aprender a desenh-lo manualmente, isto , sem o uso de assistentes.

    Demo

    nstra

    o

  • 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 dinmi-cos. 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 fil-trando-as atravs de parmetros.

    CAPTULO 6 - CHAMANDO O RELATRIO POR UMA APLICAO DESKTOP

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

    CAPTULO 7 - SUB-RELATRIOSOs 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.

    Demo

    nstra

    o

  • 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 HIBERNATECriar 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 per-sistentes em Java e tambm o que possui uma gama de solues para problemas comuns.

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

    CAPTULO 9 - RELATRIOS USANDO EJB QLO 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.

    Demo

    nstra

    o

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

    CAPTULO 11 - SIMPLIFICANDO RELATRIOS COM GROOVY

    Groovy uma linguagem dinmica escrita para a plataforma Java, inspirada em linguagens como Ruby, Python e Smalltalk. Embora seja simples de manipular e mui-to 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 simplicida-de 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 tam-bm usando Groovy.

    Demo

    nstra

    o

  • 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 entendi-mento muito maior, mais rico, do que apenas nmeros e textos.

    O JasperReports possui suporte a gerao de grficos, facilitando o desenvolvi-mento do relatrio, atravs da biblioteca JFreeChart.

    Neste captulo ser apresentado como criar grficos em um relatrio JasperRe-ports 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 desenvolvimen-

    to. No seria diferente no caso dos relatrios. O JasperReports introduziu esta ca-racterstica na verso 0.6.2 e desde ento seu suporte foi acrescentado ao iReport, facilitando mais ainda seu desenvolvimento.

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

    CAPTULO 14 - CROSSTABSCrosstabs (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.

    Demo

    nstra

    o

  • 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

    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.

    CAPTULO 16 - SCRIPTLETUm 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 utilida-de e como us-lo em seu relatrio.

    CAPTULO 17 - DESENVOLVENDO SEUS PRPRIOS TEMPLATES

    Quando usamos um assistente de criao de relatrios, na ltima etapa fazemos uso de templates. Algumas vezes pode ser til criar um ou vrios templates para usar no assistente.

    Neste captulo voc vai aprender a criar seus prprios templates e utiliz-los no iReport.

    Demo

    nstra

    o

  • XX | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    APNDICE A - EXPORTANDO PARA OUTROS FORMATOSEste 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 Jasper-Reports: RTF, XLS, CSV, HTML e ODF.

    PARA DOWNLOAD: APNDICES B, C, D E EPara Download, veja CDIGOS DOS EXEMPLOS CRIADOS NO LIVRO, alm dos

    arquivos referentes aos exemplos contidos no livro, h tambm os seguintes apn-dices:

    APNDICE B O MYSQL

    APNDICE C CONTEXTO DE DESENVOLVIMENTO WEB EM JAVA

    APNDICE D TRABALHANDO COM DATAS EM JAVA

    APNDICE E O TOMCAT

    Demo

    nstra

    o

  • SUMRIOCaptulo 1 - Conhecendo o iReport para NetBeans IDE ........................................... 1

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

    Captulo 2 - Iniciando no iReport para NetBeans ................................................... 13Abrindo o iReport para NetBeans pela primeira vez ......................................... 15Um relatrio com iReport para NetBeans ......................................................... 16

    O banco de dados usado .............................................................................16O primeiro relatrio no iReport para NetBeans na verso Standalone ....... 17Visualizando o primeiro relatrio ............................................................... 21

    Configurando o iReport para NetBeans ............................................................ 21A compilao do iReport para NetBeans no preview ........................................ 22A verso do iReport para NetBeans como plug-in ............................................ 22

    O arquivo de propriedades do iReport como plug-in .................................. 23Abrindo um relatrio no iReport para NetBeans ......................................... 23iReport para NetBeans em ingls ................................................................ 24

    Captulo 3 - Estrutura de um relatrio e seu desenvolvimento .............................. 25A estrutura do relatrio ....................................................................................27

    Title .............................................................................................................29Page Header ................................................................................................29Column Header ...........................................................................................30Detail ...........................................................................................................30

    Demo

    nstra

    o

  • XXII | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    Column Footer ............................................................................................31Page Footer .................................................................................................31Last Page Footer ..........................................................................................32Summary .....................................................................................................32Background .................................................................................................33noData .........................................................................................................33

    Compreendendo as propriedades de um relatrio ........................................... 33Dimenses de um relatrio .........................................................................34

    Captulo 4 - Criando um relatrio sem o uso de assistentes .................................. 45Iniciando um relatrio manualmente .......................................................... 47A janela Palette ............................................................................................47Adicionando uma conexo a um relatrio vazio ......................................... 49Criando a query do relatrio .......................................................................51Os elementos da query registrados no JasperReports ................................ 55Desenhando o relatrio ...............................................................................56Os smbolos para exibir o formato de nmeros .......................................... 63Conhecendo melhor o Text Field ................................................................ 64Criando o efeito zebra em seu relatrio ..................................................... 65Estilos no JasperReports ..............................................................................67Exibindo imagens em seu relatrio ............................................................. 68Um pouco mais sobre o elemento image .................................................... 69Adicionando links em elementos ................................................................ 74Contando registros e exibindo na band Summary ...................................... 77Salvando em outros formatos .....................................................................78

    Captulo 5 - Relatrios com grupos e passagem de parmetros ............................ 79O relatrio que ser desenvolvido .............................................................. 81Gerando o relatrio .....................................................................................81Criando a query do relatrio .......................................................................83Criando o grupo ..........................................................................................85No arquivo JasperReports ............................................................................86Adicionando os elementos na band PedidoGroupHeader ........................... 87Padres para datas ......................................................................................88Criando variveis com clculos .................................................................. 89Adicionando os elementos na band detail ................................................. 90

    Demo

    nstra

    o

  • Sumrio | XXIII

    Totalizando por pedido ..............................................................................92Finalizando a aparncia do relatrio ........................................................... 93Adicionando parmetros ao relatrio ......................................................... 94

    Captulo 6 - Chamando o relatrio por uma aplicao desktop ............................. 97A aparncia final do aplicativo ....................................................................99As bibliotecas necessrias para obter o relatrio ...................................... 100A biblioteca JDBC para a conexo com o banco de dados ........................ 100O projeto no NetBeans IDE para executar o relatrio ............................... 101Executando o relatrio ..............................................................................103Executando o projeto ................................................................................111

    Captulo 7 - Sub-relatrios....................................................................................113O relatrio mestre-detalhe que ser desenvolvido ................................... 115Criando e configurando o relatrio principal ............................................ 116Gerando a query ........................................................................................117Definindo a posio dos campos ............................................................... 118O formato para a exibio do nmero de pginas .................................... 120Adicionando contedo na band noData .................................................... 120Gerando o sub-relatrio ............................................................................121Configurando a aparncia do sub-relatrio ............................................... 121Modificando a query do sub-relatrio ....................................................... 123Adicionando o sub-relatrio ao relatrio .................................................. 124No arquivo JasperReports ..........................................................................125Alterando as propriedades do sub-relatrio ............................................. 127Retornando valores do sub-relatrio ......................................................... 128Chamando o relatrio por uma aplicao web ........................................ 131Criando marcadores para o relatrio em PDF ........................................... 137

    Captulo 8 - Relatrios com Hibernate .................................................................141O Hibernate ...............................................................................................143Criando um projeto usando Hibernate no NetBeans IDE .......................... 144As bibliotecas do JasperReports e MySQL JDBC ........................................ 145Criando as entidades .................................................................................145Mapeando as tabelas .................................................................................147Configurando o Hibernate .........................................................................151

    Demo

    nstra

    o

  • XXIV | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

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

    Captulo 9 - Relatrios usando EJB QL ..................................................................169O conceito da API de persistncia ............................................................. 171Sobre Java Annotations .............................................................................172Criando as entidades .................................................................................173O relacionamento ......................................................................................178Onde encontrar o TopLink .........................................................................182Criando a conexo EJBQL no iReport ........................................................ 182Desenvolvendo o relatrio ........................................................................183O sub-relatrio ..........................................................................................186Adicionando o sub-relatrio ao relatrio mestre ...................................... 188Adicionando o parmetro especial para manter a sesso ......................... 188Selecionando apenas alguns objetos com EJB QL ..................................... 190Como visualizar um relatrio com EJB QL no seu aplicativo ..................... 191Alterando o relatrio para utilizar no projeto do NetBeans IDE ............... 192Finalizando o projeto no NetBeans IDE .................................................... 192

    Captulo 10 - Gerando relatrios com outras fontes de dados ............................ 197Usando XML para criar relatrios .............................................................. 199Criando um relatrio com XML .................................................................199Relatrios com XML remoto ......................................................................204Usando CSV para criar relatrios ............................................................... 204Registrando os campos de um arquivo CSV .............................................. 206Relatrios sem fonte de dados ..................................................................207Relatrios usando JavaBeans como fonte de dados .................................. 208Relatrios usando uma fonte de dados personalizada .............................. 213

    Demo

    nstra

    o

  • Sumrio | XXV

    Captulo 11 - Simplificando relatrios com Groovy .............................................. 219Criando um relatrio usando Groovy ........................................................ 221Iniciando o desenvolvimento do relatrio ................................................ 221O design do relatrio ................................................................................223Resultado final do relatrio com Groovy ................................................... 226Chamando seu relatrio com Groovy ........................................................ 226Criando um projeto no NetBeans com Groovy ......................................... 226

    Captulo 12 - Criando grficos e subdataset em seus relatrios .......................... 231Criando um grfico simples .......................................................................233Links em seu grfico ..................................................................................238Subdatasets ...............................................................................................238Utilizando Subdatasets em seu grfico ..................................................... 241Grficos de linhas ......................................................................................244Utilizando Grficos em um relatrio com Hibernate ................................ 248

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

    Captulo 14 - Crosstabs .........................................................................................257Criando seu primeiro relatrio Crosstab ................................................... 259No JasperReports .......................................................................................263Compreendendo a disposio da Crosstab ............................................... 263Modificando uma clula na Crosstab ........................................................ 264Adicionando grupos de linhas e colunas ................................................... 265Compreendendo as Measures ...................................................................268Criando uma Crosstab com Subdataset ..................................................... 269

    Captulo 15 - Outras caractersticas da gerao de relatrios .............................. 275Tratando relatrios grandes ......................................................................277Trechos SQL no relatrio ...........................................................................279Adicionando uma imagem de fundo ......................................................... 280Exibindo somente um grupo por pgina ................................................... 281Reiniciando o nmero de pginas ............................................................. 281Alinhamento de objetos no design do relatrio ....................................... 281Formatao entre textos no seu relatrio ................................................. 281

    Demo

    nstra

    o

  • XXVI | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    Data atual no relatrio ..............................................................................284Stored Procedures e Functions ..................................................................284Erros na compilao ..................................................................................284

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

    Captulo 17 - Desenvolvendo seus prprios Templates ........................................ 303Criando um relatrio modelo ....................................................................305Configurando o template criado no iReport ............................................. 307O uso do template no assistente do iReport ............................................. 308Imagem de preview do template no assistente ......................................... 308

    Apndice - Exportando para outros formatos ................................................. 311Exportando para o formato RTF ................................................................ 313Exportando para o formato Excel .............................................................. 313Exportando para HTML .............................................................................314Exportando para CSV ................................................................................314Exportando para ODF ................................................................................315

    Demo

    nstra

    o

  • Sumrio | XXVII

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

    Demo

    nstra

    o

  • 1CONHECENDO O IREPORT PARA

    NETBEANS IDE

    Comear j metade de toda a ao.provrbio grego

    Demo

    nstra

    o

  • Captulo 1 | 3

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

    Atravs de uma interface grfica intuitiva, o desenvolvedor capaz de criar qual-quer 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 ma-nipular, h uma vantagem em usar esta ferramenta. Se o desenvolvedor um usu-rio iniciante no formato XML do JasperReports, o iReport supre suas necessidades evitando que seja necessrio fazer modificaes no cdigo fonte. Caso seja expe-riente 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 caracters-ticas do iReport.

    ANTES DE UTILIZAR O IREPORT PARA NETBEANS IDEO 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 arqui-vos jasper, necessria a instalao da distribuio do Java SE, sendo impossvel somente com a JRE (Java Runtime Environment).

    OBTENDO E INSTALANDO O JAVA SEAtualmente, 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

    Demo

    nstra

    o

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

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

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

    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 pla-taforma. Observe que na pgina de Downloads existem diversos Java SE. Existe Java SE para a plataforma Windows, Linux, Solaris SPARC, Solaris x86 e Linux AMD64. Efetue o download do Java SE para o seu sistema operacional clicando sobre o link do produto que utilizar para instalao.

    A INSTALAO NO WINDOWSTendo em vista que o Windows no qual ser descrito est na verso XP ou supe-

    rior, 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 ver-so NT, voc deve entrar no Painel de Controle, Sistema e na guia Avanado clique no boto Variveis de Ambiente.

    Demo

    nstra

    o

  • Captulo 1 | 5

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

    Em Variveis do sistema, clique em Nova. Adicione o nome da varivel como JAVA_HOME e no valor o caminho onde voc instalou o JDK.

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

    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.

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

    java -version

    EM WINDOWS VERSO 9XVoc deve editar o arquivo autoexec.bat, encontrado em C:\autoexec.bat e adi-

    cionar as variveis como o exemplo a seguir:

    set JAVA_HOME= C:\jdk1.6.0_06

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

    A INSTALAO NO LINUXNo momento em que este livro est sendo escrito, a verso baixada para o siste-

    ma operacional Linux a jdk-6u6-linux-i586.bin.

    Demo

    nstra

    o

  • 6 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    Entre no terminal do seu Linux, aps baixar o arquivo, e mude para o usurio Root ou administrativo do sistema e altere a permisso do arquivo para executvel, assim voc poder instal-lo:

    shell# chmod +x jdk-6u6-linux-i586.bin

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

    Assim como ocorre em sistemas operacionais Windows, voc ter um assistente para instalao, s que com a diferena de no ser grfico.

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

    JAVA_HOME=/jdk1.6.0_06JRE_HOME=/jdk1.6.0_06/jreexport JAVA_HOMEexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/libexport MANPATH=$MANPATH:$JAVA_HOME/man

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

    JAVA_HOME - Diretrio onde a JDK est instalada

    JRE_HOME - Diretrio onde a mquina virtual est instalada

    PATH - Diretrio dos executveis, onde inclui o do Java

    CLASSPATH - Diretrio das libs

    MANPATH - Diretrio do manual, acessvel por man javac.

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

    java -version

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

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

    Demo

    nstra

    o

  • Captulo 1 | 7

    Figura 1.1 Verificando a verso de instalao do Java no Linux

    OBTENDO E INSTALANDO O IREPORT PARA NETBEANS IDEPara 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 endere-os.

    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, incluin-do Linux, baixe a verso iReport-nb-3.1.2.tar.gz. O cdigo fonte pode ser encontra-do 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.

    Demo

    nstra

    o

  • 8 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    ALGUMAS CARACTERSTICAS DO IREPORT PARA NETBEANS IDEO iReport possui diversas caractersticas que o tornam uma ferramenta de de-

    senvolvimento 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 desen-volvimento de relatrios JasperReports:

    Suporte a 100% das tags XML do JasperReports;

    Editor WYSIWYG para criao de relatrios, possuindo ferramentas que in-cluem desenhos de retngulos, linhas, elipses, caixas de texto, rtulos, grfi-cos, sub-relatrios, cdigos de barras e etc.;

    Um editor para escrever as expresses incluindo destaques (highlights) nas sintaxes;

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

    Integrao para compilar e exportar;

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

    Suporte virtual para todos os tipos de DataSources;

    Assistentes para criar relatrios rapidamente;

    Suporte para sub-relatrios;

    Backup para o cdigo fonte;

    Suporte para modelos de documentos (templates);

    Suporte para fontes TrueType;

    Extenso atravs de plug-ins;

    Suporte integrado para scriptlets;

    Suporte a grficos;

    Gerenciamento de bibliotecas de objetos padro tais como numerao de pginas;

    Arrastar e Soltar (Dragn Drop);

    Ilimitados Desfazer e Refazer;

    Biblioteca de estilos e etc.

    Demo

    nstra

    o

  • Captulo 1 | 9

    INSTALANDO O IREPORTComo h mais de uma forma de instalar o iReport para NetBeans, voc ver to-

    das aqui. A primeira forma de instalao que ser mostrada no sistema operacio-nal 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 INSTALADORO 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.

    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), reco-mendo l-la antes de prosseguir. Clique no boto I Agree para continuar.

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

    4. A quarta etapa o local onde ser instalado o iReport. Por padro ele de-finido dentro do diretrio JasperSoft\iReport-nb-3.1.2 em Arquivos de pro-gramas 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.

    Demo

    nstra

    o

  • 10 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

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

    NO WINDOWS E LINUX SEM INSTALADORCaso voc prefira a verso sem instalador, existem os dois arquivos compacta-

    dos 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

    Para o Windows existem os arquivos ireport.exe e ireport_w.exe para inicializar, bastando um duplo clique. No sistema operacional Linux, basta entrar no terminal e executar o Shell, como mostrado a seguir:

    shell# ./ireport

    COMO INSTALAR O PLUG-IN IREPORT FOR NETBEANSCaso 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 des-compacte-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.

    Demo

    nstra

    o

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

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

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

    4. Ao surgir a caixa de dilogo NetBeans IDE Installer clique em Next. Aceite os termos de licena em I accept the terms in all of the license agreements e confirme no boto Install.

    Se a caixa de dilogo Verify Certificate surgir, apenas clique em Continue para prosseguir com a instalao do plug-in.

    Aps a instalao, voc encontra o plug-in ireport-designer, na guia Installed.

    COMPILANDO O FONTE DO IREPORT PARA NETBEANSO projeto do iReport para NetBeans foi criado na verso 6.0 da ferramenta Ne-

    tBeans IDE. Isso significa que voc deve baixar esta verso para abrir o projeto e, somente ento, compil-lo.

    Demo

    nstra

    o

  • 12 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    A verso do NetBeans utilizado est no arquivo platform.properties, expandin-do 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.

    Figura 1.3 Projeto do iReport aberto no NetBeans IDE 6.0

    Demo

    nstra

    o

  • 2INICIANDO NO IREPORT PARA

    NETBEANS

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

    Joseph Murphy

    Demo

    nstra

    o

  • 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 iRe-port para NetBeans, partindo de sua execuo inicial e suas configuraes bsicas.

    ABRINDO O IREPORT PARA NETBEANS PELA PRIMEIRA VEZQuando o iReport executa pela primeira vez ele carrega informaes de con-

    figuraes regionais de seu sistema operacional e cria um diretrio chamado de .ireport no diretrio do usurio em home no Linux, em Document and Settings de seu Windows XP ou AppData\Roaming no seu usurio em Windows Vista. Neste diretrio voc encontra diversos arquivos.

    Figura 2.1 Smbolo do iReport

    Suas configuraes pessoais e as configuraes do programa esto gravados neste diretrio, em seu arquivo ireport.properties, dentro de .ireport/dev/config/Preferences/com/jaspersoft.

    Ateno: Se no for criado o diretrio .ireport, alguns problemas indesejveis podem ocorrer na execuo do programa, alm da impossibilidade de gravao das configuraes personalizadas.

    Demo

    nstra

    o

  • 16 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    UM RELATRIO COM IREPORT PARA NETBEANSAntes de continuar nas configuraes do iReport, voc vai se ambientar na ferra-

    menta, 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 existen-te na ferramenta. Isso facilitar na velocidade do desenvolvimento.

    O BANCO DE DADOS USADOO MySQL 5 ser o gerenciador de banco de dados usado neste livro para a exe-

    cuo dos exemplos de relatrios. Apesar de ser o MySQL, os exemplos mostrados podero ser feitos em Oracle, SQL Server, PostgreSQL e etc.

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

    Figura 2.2 Diagramao do banco de dados usado no livro

    Demo

    nstra

    o

  • Captulo 2 | 17

    Observao: As tabelas foram baseadas no banco de dados de exemplo Nor-thwind, 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 ta-belas devidamente populadas se encontra no site do autor, citado no incio deste livro, em Cdigos dos exemplos criados no livro.

    O PRIMEIRO RELATRIO NO IREPORT PARA NETBEANS NA VERSO STANDALONE

    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.

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

    Figura 2.3 Selecionando o item de menu Report Wizard

    Ao surgir caixa de dilogo do assistente, chamada de New Report, voc dever seguir os seguintes passos para criar seu relatrio:

    1. Para a primeira etapa, coloque o nome do seu relatrio em Report name. Chame de PrimeiroRelatorio se quiser ter um nome similar ao do livro. No boto Browse voc pode alterar a localizao de onde ser salvo o relatrio. Clique no boto Next para prosseguir.

    2. A segunda etapa necessita da criao de uma conexo com o banco de dados. Como ainda no fora feito nenhuma, clique no boto New, ao lado do campo Con-nections/Data Sources.

    Demo

    nstra

    o

  • 18 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    a. Na caixa de dilogo de Datasource selecione o item Database JDBC connec-tion. Clique no boto Next para prosseguir.

    b. Como o driver JDBC usado do MySQL, por padro, a segunda etapa das pro-priedades 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.

    Figura 2.4 Definindo as propriedades de conexo

    d. Clique no boto Test para verificar se a conexo foi estabelecida com sucesso. Caso aparea a mensagem Connection test successful!, significa que voc configu-rou 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.

    Demo

    nstra

    o

  • 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 nme-ro, que indica a conexo, onde a primeira zero, a segunda um e assim por dian-te. A string que existe como valor possui um XML, contendo uma compatibilidade com a verso do iReport que no est sobre a plataforma NetBeans.

    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:

    SELECT * FROM produtos

    Figura 2.5 Criando a consulta SQL na segunda etapa do assistente

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

    Demo

    nstra

    o

  • 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 rela-trio. Mantenha na opo Columnar layout e clique no boto Next.

    6. Na ltima etapa, clique simplesmente no boto Finish para concluir o assistente.

    Ao final voc ter um relatrio gerado com os campos selecionados em formato tabular, contendo sua visualizao apenas estrutural.

    Figura 2.7 - Estrutura do relatrio gerado pelo assistente

    Demo

    nstra

    o

  • 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 mysql-connector-java-5.0.7-bin.jar, adicione neste diretrio.

    VISUALIZANDO O PRIMEIRO RELATRIOAntes de iniciar qualquer alterao, voc vai visualizar o relatrio da forma bruta

    como foi criado.

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

    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.

    CONFIGURANDO O IREPORT PARA NETBEANSAgora com a criao de um relatrio bsico, voc est preparado para configurar

    o iReport para NetBeans em algumas de suas caractersticas.

    V ao menu Tools e clique no item Options.

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

    Na guia General:

    Default unit Indica a unidade utilizada para o trabalho com os relatrios. Podem ser: mm, cm, pixels e polegadas.

    Limit the number of records Quando selecionado, voc pode definir o nmero mximo de relatrios que podem ser exibidos, alterando em Max number of reports.

    Report locale Define a localizao atual da sua mquina, exibindo de forma correta certos padres numricos como nmeros, moedas e datas.

    Report timezone Define a timezone da regio, pegando automaticamente a configurao do sistema operacional.

    Demo

    nstra

    o

  • 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 pa-dro Java, mas podemos usar nesta verso Groovy e JavaScript.

    o Chart theme Tema para o grfico. Ser visto mais adiante, em outro captulo.

    Em Classpath voc pode adicionar bibliotecas e classes no disponveis pelo iReport para compilar relatrios com acesso a dados de forma especfica. Essa guia ser utiliza-da mais adiante quando utilizar outras formas de conexo com o banco de dados.

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

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

    A COMPILAO DO IREPORT PARA NETBEANS NO PREVIEW

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

    Se determinar outro programa como preview, ele exibir tanto internamente como abrir o programa configurado para exibir o formato desejado.

    A VERSO DO IREPORT PARA NETBEANS COMO PLUG-INDiferente do que acontece com a verso Standalone, o plug-in iReport for NetBeans exi-

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

    Demo

    nstra

    o

  • 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-INDiferente da verso Standalone, a verso plug-in armazena o arquivo ireport.pro-

    perties no diretrio de configuraes do NetBeans IDE. Neste caso, ele costuma se en-contrar 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 NETBEANSUm 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 codifica-o de caracteres no sistema operacional Windows, que inicializa trabalhando com o padro iso-8859-1.

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

    Figura 2.8 Erro ao ler um relatrio criado com acentos

    Demo

    nstra

    o

  • 24 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    Para corrigir este problema, basta alterar o atalho que inicializa o programa, transmitindo o seguinte parmetro: -J-Dfile.encoding=UTF-8.

    Voc pode resolver este problema simplesmente criando um arquivo .bat, no diretrio bin da instalao do iReport, da seguinte forma:

    ireport.exe -J-Dfile.encoding=UTF-8

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

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

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

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

    IREPORT PARA NETBEANS EM INGLSO suporte para o idioma nativo encontrado no sistema operacional automtico

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

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

    mons

    tra

    o

  • 3ESTRUTURA DE UM RELATRIO E SEU

    DESENVOLVIMENTO

    A nica hora que voc no pode falhar na ltima vez que tentar.

    Charles Kettering

    Demo

    nstra

    o

  • 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, relat-rios so usados para agrupar as informaes vindas de um conjunto de dados, rela-cionados 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 man-dar 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 RELATRIOUm relatrio no JasperReports possui diversas sees, separadas por linhas ho-

    rizontais ao qual so chamadas de Bands (bandas).

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

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

    Demo

    nstra

    o

  • 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, impossibi-litando 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 pgi-na sero organizados em mais de uma coluna. O padro para a ordem de impres-so Vertical. Com a ordem Vertical, primeiro os dados so impressos um em-baixo do outro, passando para uma nova coluna somente quando a coluna est totalmente preenchida no final da pgina. Na ordem Horizontal os dados so preenchidos em linha. Os dados passam por todas as colunas, adicionando uma nova linha somente quando a ltima coluna da pgina foi preenchida naquela determinada linha. A Figura 3.5 a seguir ilustra as duas ordens de impresso.

    Figura 3.5 Ordem de impresso na Vertical e na Horizontal

    Demo

    nstra

    o

  • 4CRIANDO UM RELATRIO SEM O USO DE

    ASSISTENTES

    A imaginao mais poderosa que o conhecimento. Ela alarga a viso, estimula a inteligncia, desafia o impos-

    svel. Sem a imaginao, o pensamento estagnar.Albert Einstein

    Demo

    nstra

    o

  • Captulo 4 | 47

    Para uma maior compreenso dos diversos elementos que compem um relat-rio no JasperReports, atravs do iReport para NetBeans, importante a um desen-volvedor 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, confi-gurando-os e trabalhando com banco de dados.

    INICIANDO UM RELATRIO MANUALMENTEPara iniciar, crie um novo relatrio. Na propriedade do relatrio (selecione re-

    port name na janela Report Inspector) d um nome para o seu relatrio. Os tama-nhos predefinidos sero mantidos.

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

    A JANELA PALETTEO iReport para NetBeans na lateral direita a janela Palette. Esta janela contm

    doze elementos que so muito usados na construo de um relatrio. Estes ditos elementos so objetos grficos que podem compor um relatrio, como uma linha, rtulo ou uma elipse.

    A Figura 4.1 apresenta as principais ferramentas que podem ser usadas tanto para a criao de elementos, como tambm para sua manipulao, em um relatrio JasperReports.

    Figura 4.1 - Ferramentas para a criao de elementos no relatrio

    Demo

    nstra

    o

  • 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 antes de arrastar. A linha segue o grid.

    4. Static Text Utilizado para criar rtulos de relatrios.

    5. Chart Gera um grfico atravs de valores determinados transmitidos. Mais adiante haver um captulo exclusivamente para grficos.

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

    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.

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

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

    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.

    Demo

    nstra

    o

  • 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 para confirmar).

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

    4. Decrease Font Size Altera o tamanho da fonte do texto encontrado no ele-mento diminuindo sempre em dois pontos (2pt).

    5. Bold Aplica negrito ao texto encontrado no elemento.

    6. Italic Aplica itlico ao texto encontrado no elemento.

    7. Underlined Sublinha o texto encontrado no elemento.

    8. Strikethrough Desenha uma linha no meio do texto encontrado no elemen-to (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 ele-mento.

    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.

    Demo

    nstra

    o

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

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

    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 . Alguns sub-elementos so comuns a todos, porm no sero apresentados aqui.

    ...

    O sub-elemento , de , determina as configu-raes da fonte. Todas estas configuraes de fonte so feitas em . Este elemento, por sua vez, possui alguns atributos que determinam o comportamento

    Demo

    nstra

    o

  • Captulo 4 | 65

    CRIANDO O EFEITO ZEBRA EM SEU RELATRIOEmbora 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

    A exibio de cores de linhas alternadas, conhecido como efeito zebra, a me-lhor maneira de exibir um relatrio tabular como o criado. Ajuda na rpida identifi-cao de linhas, alm do design agradvel.

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

    Com o estilo criado e selecionado, v at a janela Properties e digite Zebra em Name.

    Retornando a janela Report Inspector, clique com o direito do mouse sobre o es-tilo Zebra e selecione no menu de contexto o item Add Conditional Style. Selecione o item que surgir () e digite a expresso mostrada a seguir, em Condition Expression:

    new Boolean( $V{REPORT_COUNT}.intValue() % 2 == 0 )

    Demo

    nstra

    o

  • 68 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    EXIBINDO IMAGENS EM SEU RELATRIOA ltima modificao que ser feita em seu relatrio manual da adio de ima-

    gens. Seu relatrio ficar similar a Figura 4.17 mostrada a seguir.

    Figura 4.17 Imagens no relatrio com dados da tabela

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

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

    Na caixa de dilogo Image Expression, coloque entre aspas o caminho para o di-retrio 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}

    Demo

    nstra

    o

  • 5RELATRIOS COM GRUPOS E PASSAGEM

    DE PARMETROS

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

    Demo

    nstra

    o

  • Captulo 5 | 81

    Os relatrios mais utilizados em aplicaes, com toda certeza, so os dinmi-cos. 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 fil-trando-as atravs de parmetros.

    O RELATRIO QUE SER DESENVOLVIDOO relatrio final ser composto por quatro tabelas, resultando em um grupo

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

    Figura 5.1 Exemplo final do relatrio com grupos

    GERANDO O RELATRIOPara 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 pageHe-ader, columnHeader e pageFooter. Em detail mantenha apenas o Frame.

    Em pageHeader altere o rtulo para Pedidos Efetuados. Quanto aos quatro rtu-los encontrados na band columnHeader altere como mostra a Tabela 5.1 a seguir.

    Demo

    nstra

    o

  • 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

    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. Con-firme a caixa de dilogo logo aps.

    Figura 5.4 Adicionando uma ordenao atravs do query designer

    Demo

    nstra

    o

  • 94 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    ADICIONANDO PARMETROS AO RELATRIOAntes 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 parme-tro 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 )

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

    Figura 5.11 A adio do parmetro PAR_PEDID

    Demo

    nstra

    o

  • 6CHAMANDO O RELATRIO POR UMA

    APLICAO DESKTOP

    A disciplina a parte mais importante do sucesso.Truman Capote

    Demo

    nstra

    o

  • 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, cria-da no NetBeans IDE, apenas com o intuito de ensin-lo a chamar sua aplicao.

    A APARNCIA FINAL DO APLICATIVOPara 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 ha-ver uma caixa de combinao e um boto. A caixa de combinao receber valores da tabela de pedidos para que voc escolha qual pedido deseja visualizar.

    Figura 6.1 Aparncia do aplicativo Swing para exibio do relatrio

    Demo

    nstra

    o

  • 7SUB-RELATRIOS

    Ter problemas na vida inevitvel, ser derrotado por eles opcional.

    Roger Crawford

    Demo

    nstra

    o

  • 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 DESENVOLVIDOO relatrio com sub-relatrio, a ser desenvolvido, possui como semelhana do

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

    Figura 7.1 Exemplo final do relatrio mestre-detalhe

    Demo

    nstra

    o

  • 118 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    DEFININDO A POSIO DOS CAMPOSEmbora 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

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

    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 con-texto o item Padding and borders. Na caixa de dilogo v em Borders e se-lecione 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.

    Demo

    nstra

    o

  • 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

    MODIFICANDO A QUERY DO SUB-RELATRIOPara finalizar este sub-relatrio, por enquanto, voc vai alterar a query desenvol-

    vida 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 mos-trado a seguir:

    ...WHERE PedidoID = $P{PAR_PEDIDOID}

    Demo

    nstra

    o

  • Captulo 7 | 131

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

    CHAMANDO O RELATRIO POR UMA APLICAO WEB 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.

    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.

    Demo

    nstra

    o

  • Captulo 7 | 137

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

    CRIANDO MARCADORES PARA O RELATRIO EM PDFPara 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 cam-po $F{PedidoID}.toString(). Por se tratar de um campo numrico, voc dever con-vert-lo para string, uma vez que esta opo s aceita este tipo. Clique no boto Apply para confirmar.

    Demo

    nstra

    o

  • Captulo 7 | 139

    Figura 7.18 Destaque da utilizao dos marcadores no Adobe Acrobate

    Demo

    nstra

    o

  • 8RELATRIOS COM HIBERNATE

    Na teoria, no h diferena entre teoria e prtica. Mas na prtica h.

    Jan L. A. van de Snepscheut

    Demo

    nstra

    o

  • 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 persisten-tes em Java e tambm o que possui uma gama de solues para problemas comuns.

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

    O HIBERNATEHibernate 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 co-nhecido 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 per-sistentes. De resto, o Hibernate se integra suavemente ao seu sistema se comuni-cando 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,