14811322 Desenvolvendo Relatorios Profissionais Com iReport Para Netbeans IDE

Embed Size (px)

Citation preview

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

  • Captulo 7 | 139

    Figura 7.18 Destaque da utilizao dos marcadores no Adobe Acrobate

  • 8RELATRIOS COM HIBERNATE

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

    Jan L. A. van de Snepscheut

  • Captulo 8 | 143

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

    O Hibernate hoje o mais popular projeto de gerenciamento de dados 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, tem a inteno de ensinar o uso do Hibernate. Alm de ser um assunto complexo, exigindo at mesmo um livro so-mente sobre ele, o foco do livro se baseia na criao de relatrios usando o iRe-port para NetBeans.

  • 144 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    CRIANDO UM PROJETO USANDO HIBERNATE NO NETBEANS IDEDiferente do que foi feito nos captulos anteriores, desta vez voc ter que pri-

    meiro criar um projeto dentro do NetBeans IDE e configurar o Hibernate, mapeando suas tabelas antes de criar um relatrio no iReport.

    Crie um novo projeto Web Application no NetBeans IDE. Coloque o nome de ProjTrabComHibernate. Na ltima etapa, selecione o framework Hibernate 3.2.5.

    Ao selecionar o item Hibernate 3.2.5, voc ter disponvel dois itens: Database Connection e Database Dialect.

    Execute os passos a seguir para criar uma conexo em Database Connection:

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

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

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

  • Captulo 8 | 145

    3. Retornando a caixa de dilogo New Web Application, voc ter as opes Da-tabase 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 neces-srias para o desenvolvimento do relatrio e aplicao que o utilizar.

    AS BIBLIOTECAS DO JASPERREPORTS E MYSQL JDBCAntes de continuar no projeto, adicione as bibliotecas do JasperReports e MyS-

    QL JDBC no projeto.

    CRIANDO AS ENTIDADESPara o exemplo proposto, voc ter um pacote em sua aplicao chamado de

    br.com.integrator.model, que possuir as entidades Categoria e Produto.

    Fora dos pacotes, voc possui os arquivos XML que mapeiam as entidades junto ao arquivo que configura o Hibernate.

  • 156 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    DESENVOLVENDO O RELATRIOO 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

    Gerando a query HQL

    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 Re-port query, selecione em Query language o item Hibernate Query Language (HQL).

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

    from Produto

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

    SELECT * FROM produtos

    De todos os objetos que surgiro, selecione categoria e unidadesEmEstoque para excluir teclando . Confirme logo aps.

  • Captulo 8 | 165

    Duas taglibs so adicionadas nesta pgina, uma vez que se utiliza a JSTL. A URI do primeiro cabealho chama as tags CORE e o segundo cabealho so as tags de formatao.

    A tag varre o List enviado pelo Servlet atravs de requestScope, transmitido pelo Servlet criado, ao qual repassa pgina JSP.

    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.

    Por fim, crie na pgina ndex.jsp, um link que chamar o Servlet ServletCatego-ria, contendo por entre as tags :

    Visualizar Categorias para Relatrio

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

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

  • 9RELATRIOS USANDO EJB QL

    Nunca ande pelo caminho traado, pois ele conduz somente at onde os outros foram.

    Alexandre Graham Bell

  • Captulo 9 | 171

    O uso de Java Persistence API se tornou muito intenso, e como no poderia deixar de ser, o JasperReports possui suporte a esta especificao atravs de EJB QL. Esta linguagem de queries possui uma semelhana HQL do Hibernate e tambm a tradicional instruo SQL.

    Com a especificao do EJB3, na introduo da JPA, Java Persistence API, ficou muito popular o uso de JPQL, Java Persistence Query Language, que uma uma extenso da EJB QL (Enterprise JavaBeans Query Language).

    Neste captulo voc vai aprender a configurar um arquivo de persistncia e criar um relatrio com sub-relatrio utilizando a EJB QL.

    O CONCEITO DA API DE PERSISTNCIAAt a verso J2EE 1.4, a plataforma Java no possua uma forma simples de ma-

    pear 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 es-pecificao EJB2.0). Com a introduo de JPA (Java Persistence API), definida na JSR-220 (Enterprise JavaBeans, Version 3.0), houve uma padronizao no mapeamento de objeto/relacional na plataforma Java. No EJB3, as sentenas so expressas atravs da JPQL (Java Persistence Query Language). A JPQL uma extenso da EJB QL, como j foi dito na introduo deste captulo.

    Apesar de descrita na especificao do EJB 3, a JPA no depende de um container para funcionar, sendo possvel usar e testar solues apenas com o Java SE.

    A JPA baseada no conceito POJO (Plain Old Java Object), algo como Bom e Velho Objeto Java, que incorpora idias de renomados frameworks de persistncia para padronizar o mapeamento O/R em Java.

    Na JPA, os objetos persistentes so denominados entidades (Entities). Uma entidade um objeto simples (POJO), que representa um conjunto de dados persistido no banco. Como entidades so definidas por classes Java comuns, sem relao com frameworks ou bibliotecas, elas podem ser abstratas ou herdar de outras classes, sem restries.

    A chave primria, indicada como um conceito importante nas entidades, possui uma identificao e estado, sendo seu ciclo de vida independente do tempo de durao da aplicao.

  • Captulo 9 | 175

    Retornando a caixa de dilogo New Entity Classes from Database, altere os no-mes 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.

    Figura 9.4 Alterao do nome das entidades e criao do pacote

    Na quarta e ltima etapa, em Mapping Options, altere para lazy, em Association Fetch e java.util.Set, em Collection Type. Clique no boto Finish.

    Observe que o NetBeans criar duas classes (em Source Packages) e o arquivo persistence.xml, em Configuration Files.

    A entidade Categoria

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

  • 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, con-firme e Salve.

    Figura 9.5 Criando e testando a conexo EJBQL

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

    DESENVOLVENDO O RELATRIOO 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, atra-vs da ferramenta subreport.

  • Captulo 9 | 185

    Nota: O livro no se aprofundar neste assunto, uma vez que est focado no de-senvolvimento 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 . Confirme logo aps.

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

    A composio final do relatrio mestre

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

  • Captulo 9 | 187

    Gerando a query EJBQL do sub-relatrio

    Execute o Report Query. Na caixa de dilogo Report query, selecione em Query language o item EJBQL.

    Digite a query para selecionar todos os campos da entidade Produto, com a condio estabelecida por categoriaID, filtrando com o parmetro recm criado PAR_CATID, como mostrado a seguir:

    SELECT p FROM Produto p JOIN p.categoria cWHERE c.categoriaID = $P{PAR_CATID}

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

    Figura 9.9 A query criada para o sub-relatrio

    O design final do sub-relatrio

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

  • 190 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    SELECIONANDO APENAS ALGUNS OBJETOS COM EJB QLNo 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.dataPedidofrom 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.

    Figura 9.13 Uma query com apenas alguns objetos/valores

  • 10GERANDO RELATRIOS COM OUTRAS

    FONTES DE DADOS

    Nunca ande pelo caminho traado, pois ele conduz somente at onde os outros foram.

    Alexandre Graham Bell

  • Captulo 10 | 199

    O JasperReports rico no fornecimento de outras fontes de dados acessveis para que possamos gerar relatrios.

    Muitos sistemas costumam exportar diversos tipos de dados, sendo os mais comuns o formato CSV e XML.

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

    USANDO XML PARA CRIAR RELATRIOSAtualmente o XML (EXtensible Markup Language) praticamente um padro no

    desenvolvimento interoperativo de sistemas. Com a popularidade dos Web Servi-ces 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-defini-das, possibilitando que cada fornecedor crie suas prprias tags. Mas graas a sua semntica de no poder conter tags desordenadas, sua leitura de fcil acesso.

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

    CRIANDO UM RELATRIO COM XMLPara a criao de um relatrio usando XML, voc tem o seguinte formato encon-

    trado em um arquivo chamado produtos.xml, como mostrado na Listagem 10.1.

    Listagem 10.1 O arquivo produtos.xml Chopp e Pssego DRAFT & FRUIT 1 1.99 39 chopp_pessego.jpg

  • 202 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

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

    /produtos/produto

    Figura 10.2 Adicionando o n de pesquisa atravs do XPath

    O que XPath?

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

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

  • 206 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    Figura 10.5 Definindo as caractersticas do arquivo CSV

    REGISTRANDO OS CAMPOS DE UM ARQUIVO CSVNo Report query, voc possui a guia CSV Datasource. Basta clicar no boto Get

    fields from datasource. Os campos aparecem na parte inferior. Como ocorre com o arquivo XML, voc pode definir a mudana de um tipo pois o iReport registra todos como java.lang.String.

    Figura 10.6 Definindo os campos de um arquivo CSV

  • 11SIMPLIFICANDO RELATRIOS COM

    GROOVY

    O duro e rijo quebra. O flexvel prepondera.

    Tao Te Ching

  • Captulo 11 | 221

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

    CRIANDO UM RELATRIO USANDO GROOVYCrie um relatrio e, selecionando na janela Report Inspector, o nome do relat-

    rio, v at a propriedade (janela Properties) Language e selecione o item Groovy.

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

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

    O arquivo JasperReports usando Groovy

    No arquivo JasperReports aberto, em XML, voc possui no elemento raz o atributo language, com o valor groovy.

  • 12CRIANDO GRFICOS E SUBDATASET EM

    SEUS RELATRIOS

    Uma imagem vale por mil palavras.Provrbio Chins

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

  • Captulo 12 | 233

    Como todo bom relatrio, no poderia faltar os grficos. Simples e eficazes, os grficos exibem uma situao visualmente impactante, possibilitando um 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.

    CRIANDO UM GRFICO SIMPLESO primeiro exemplo na gerao de relatrios com grficos um grfico no forma-

    to de pizza 3D (Pie 3D). A Figura 12.1 a seguir ilustra o resultado final.

    Figura 12.1 Relatrio gerado completo

  • 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

  • 244 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    GRFICOS DE LINHASPor ltimo, o relatrio que ser criado utilizar um grfico de linhas para repre-

    sentar a demanda de vendas 4 de um determinado produto. A Figura 12.7 demons-tra o resultado do relatrio final.

    Figura 12.7 Resultado final do relatrio utilizando um grfico de linhas

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

  • 13INTERNACIONALIZANDO RELATRIOS

    Informao a matria prima mais importante da humanidade.

    Waldez Ludwig

  • Captulo 13 | 251

    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.

    CRIANDO SEU RELATRIO INTERNACIONALIZADOPara ilustrar o seu desenvolvimento crie um projeto Java no NetBeans IDE, onde

    h tambm instalado o plugin do iReport.

    Em seu projeto, crie um pacote, se no o tiver feito ao criar a classe Main, cli-cando 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.

    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.in-tegrator (ou o gerado por voc). No menu de contexto, selecione New>Other. Na caixa de dilogo New File, selecione Other>Properties File.

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

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

    Adicionando as chaves e valores do arquivo

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

  • 14CROSSTABS

    Fazendo o melhor neste momento o colo-ca na melhor situao para o prximo.

    Oprah Winfrey

  • Captulo 14 | 259

    Crosstabs (cross-tabulation), no JasperReports, so tabelas cruzadas, comuns no desenvolvimento de relatrios com a utilizao de planilhas eletrnicas, tambm conhecidas por tabelas dinmicas ou tabelas de referncias cruzada.

    Diferente dos demais relatrios criados at o momento no livro, um relatrio crosstab possui uma tabela contendo um nmero de linhas e colunas que no se conhece em tempo de design.

    Graas ao iReport, voc pode contar com o uso de um assistente, tornando esta tarefa no muito complicada.

    Neste captulo voc aprender a criar crosstabs no iReport, modificar, formatar e usar tambm subdatasets para relatrios mais complexos.

    CRIANDO SEU PRIMEIRO RELATRIO CROSSTABO design no necessitar da maioria das bands, uma vez que apenas a band

    Summary ser usada neste primeiro exemplo.

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

    Sua query ser similar a mostrada a seguir:

    SELECT clientes.nome, pedidos.dataPedido, pedidos.PedidoIDFROM clientes INNER JOIN pedidos ON clientes.ClienteID = pedidos.ClienteID

  • 262 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    Como a tabela criada tem uma rea exclusiva, tambm no poderia deixar de possuir caractersticas prprias para sua manipulao.

    1. Na janela Report Inspector possvel visualizar os parmetros, grupos, mea-sures 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 la-teral seus respectivos nomes. Os dados agrupados, contam o nmero de pedidos efe-tuados em cada ano. Ao final, voc possui o total de pedidos efetuados por cliente.

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

  • Captulo 14 | 267

    Arraste PedidoIDMeasure para Detail /Mes, expandindo Measures na janela Report Inspector. Formate com cor de fundo para a clula, alinhamentos de texto e alteraes de borda. Na clula Mestotal header, adicione um elemento Static Text e digite Total.

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

    Figura 14.9 Resultado final do exemplo desenvolvido

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

    Figura 14.10 Resultado final na execuo do relatrio

  • Captulo 14 | 269

    CRIANDO UMA CROSSTAB COM SUBDATASETVamos partir da hiptese que voc deseja visualizar um relatrio contendo as com-

    pras efetuadas por cada cliente, agrupados por produto, como mostra a Figura 14.11.

    Figura 14.11 Relatrio contendo Crosstab e Subdataset

    Crie um novo relatrio e mantenha apenas as bands: Title, Page Header, Detail e Page Footer.

    Os elementos que sero adicionados so: Static Texts e Text Fields. Apenas os detalhes necessrios para criar o assunto deste tpico sero apresentados.

    Aos demais, a Figura 14.12 mostra o resultado final do design do seu relatrio.

  • 15OUTRAS CARACTERSTICAS DA GERAO

    DE RELATRIOS

    Ns somos o que repetidamente fazemos. Exce-lncia, ento, no um ato, mas um hbito.

    Aristteles

  • Captulo 15 | 277

    Neste captulo voc conhecer outras caractersticas da ferramenta iReport, alm do JasperReports, que no foram apresentadas at o momento, sendo passa-das como dicas.

    TRATANDO RELATRIOS GRANDESO virtualizador de relatrios uma forma de minimizar a criao de relatrios

    JasperReports grandes. Esta opo ajuda a minimizar a limitao fsica, economizan-do na memria usada e empregando outras formas avaliadas (geralmente o disco r-gido) 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 virtua-lizadores fornecidos pelo JasperReports (iReport): JRFileVirtualizer (File Virtualizer), JRSwapFileVirtualizer (Single Swap/File Virtualizer) e JRGzipVirtualizer.JRFileVirtu-alizer (GZIP In-memory Virtualizer).

    Figura 15.1 Onde configurar a virtualizao de relatrios grandes no iReport

  • 16SCRIPTLET

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

  • Captulo 16 | 289

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

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

    A CLASSE JRABSTRACTSCRIPTLETPara 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.

    O JasperReports fornece uma implementao bem simples atravs da classe JR-DefaultScriptlet (veja a Listagem 16.1), estendendo a classe abstrata JRAbstractS-criptlet.

    Listagem 16.1 A classe JRDefaultScriptletpackage net.sf.jasperreports.engine;/*** @author Teodor Danciu ([email protected])* @version $Id: JRDefaultScriptlet.java,v 1.3 2004/06/01 20:28:22 teodord Exp $*/public class JRDefaultScriptlet extends JRAbstractScriptlet{ public JRDefaultScriptlet() { } public void beforeReportInit() throws JRScriptletException { } public void afterReportInit() throws JRScriptletException { } public void beforePageInit() throws JRScriptletException { } public void afterPageInit() throws JRScriptletException { } public void beforeColumnInit() throws JRScriptletException {

  • 296 | Desenvolvendo Relatrios Profissionais com iReport para NetBeans IDE

    DESENVOLVENDO O RELATRIOConforme o j visto no Captulo 10, podemos trabalhar diretamente com arqui-

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

    Figura 16.2 Preview do relatrio criado usando CSV e Scriptlet

    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 CSVPara 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 Se-parators, voc dever marcar Semicolon em Field separator (char) e, New line, em Row separator.

  • Captulo 16 | 301

    COMO EVITAR VALORES REPETIDOS EM UM RELATRIOComo dica, caso queira evitar valores repetidos no relatrio, como ocorre na co-

    luna Produto, voc pode selecionar o Text Field, no Designer, e desmarcar a opo Print Repeated Values.

    Figura 16.6 Relatrio exibindo dados sem campos repetidos

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

    ...

    FORANDO O VALOR A APARECER AO MENOS UMA VEZ EM CADA PGINASe colocarmos um determinado campo para no repetir valores, logo percebe-

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

  • 17DESENVOLVENDO SEUS PRPRIOS

    TEMPLATES

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

    Thomas Edison

  • Captulo 17 | 305

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

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

    CRIANDO UM RELATRIO MODELOPara 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 Colu-mnar 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.

    No exemplo, o Template mostrado na Figura 17.1 utiliza um formato colunar, o que o fez ser chamado de TemplateExemploC.jrxml, onde voc pode observar o trmino do nome do arquivo com C maisculo.

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

    Na band Title adicione um Static Text e coloque o texto Template de Exemplo. Altere sua cor de fundo e fonte se achar necessrio.

    Figura 17.1 Template criado para o exemplo deste captulo

  • Captulo 17 | 309

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

  • APNDICEEXPORTANDO PARA OUTROS FORMATOS