Você está na página 1de 162

Contedo

INTRODUO ........................................................................................................................................... 7 OS SOFTWARES REQUERIDOS ...................................................................................................................... 7 HARDWARE REQUERIDO ............................................................................................................................. 7 CAPTULO 1 .............................................................................................................................................. 9 CONHECENDO O IREPORT ........................................................................................................................... 9 Antes de utilizar o iReport ...................................................................................................................... 9 Obtendo e instalando o Java SE............................................................................................................. 9 Em Windows verso 9x......................................................................................................................... 11 Obtendo e instalando o iReport............................................................................................................ 12 Algumas caractersticas do iReport ..................................................................................................... 12 Instalando o iReport ............................................................................................................................. 13 CAPTULO 2 ............................................................................................................................................ 19 INICIANDO NO IREPORT ............................................................................................................................ 19 ABRINDO O IREPORT PELA PRIMEIRA VEZ ................................................................................................. 19 Documentos Recentes no so exibidos ............................................................................................... 20 CRIANDO SEU PRIMEIRO RELATRIO COM IREPORT .................................................................................. 20 O banco de dados usado ...................................................................................................................... 20 Antes de criar o primeiro relatrio ...................................................................................................... 21 O primeiro relatrio ............................................................................................................................. 21 Visualizando o primeiro relatrio ........................................................................................................ 28 CONFIGURANDO O IREPORT ...................................................................................................................... 29 VISUALIZANDO O RELATRIO COMPILADO EM OUTRO APLICATIVO .......................................................... 33 CAPTULO 3 ............................................................................................................................................ 35 ESTRUTURA DE UM RELATRIO E SEU DESENVOLVIMENTO ....................................................................... 35 A ESTRUTURA DO RELATRIO ................................................................................................................... 35 Title....................................................................................................................................................... 36 Page Header ......................................................................................................................................... 37 Column Header .................................................................................................................................... 37 Detail .................................................................................................................................................... 38 Column Footer ..................................................................................................................................... 38 Page Footer .......................................................................................................................................... 39 Last Page Footer .................................................................................................................................. 39 Summary ............................................................................................................................................... 40
Pgina 1

www.integrator.com.br

Background .......................................................................................................................................... 40 noData .................................................................................................................................................. 41 COMPREENDENDO AS PROPRIEDADES DE UM RELATRIO.......................................................................... 41 Iniciando com um relatrio em branco ................................................................................................ 41 CAPTULO 4 ............................................................................................................................................ 51 CRIANDO UM RELATRIO SEM O USO DE ASSISTENTES .............................................................................. 51 Iniciando um relatrio manualmente ................................................................................................... 51 Exibindo o Grid para desenho de relatrios ........................................................................................ 52 As barras de ferramentas do iReport ................................................................................................... 52 Adicionando uma conexo a um relatrio em branco ......................................................................... 53 Criando a query do relatrio ............................................................................................................... 56 Os elementos da query registrados no JasperReports ......................................................................... 60 Desenhando o relatrio ........................................................................................................................ 61 Os smbolos para exibir o formato de nmeros ................................................................................... 72 Conhecendo melhor o Text Field ......................................................................................................... 73 Exibindo imagens em seu relatrio ...................................................................................................... 73 Um pouco mais sobre o elemento image .............................................................................................. 75 CAPTULO 5 ............................................................................................................................................ 78 GERANDO RELATRIOS COM GRUPOS, PARMETROS E EXECUTANDO POR UMA APLICAO DESKTOP ...... 78 O relatrio que ser desenvolvido ....................................................................................................... 78 Gerando o relatrio.............................................................................................................................. 78 Criando a query do relatrio ............................................................................................................... 79 Criando o grupo ................................................................................................................................... 81 Adicionando os elementos na band PedidoGroupHeader ................................................................... 84 Criando variveis com clculos no iReport ......................................................................................... 87 Adicionando os elementos na band detail ............................................................................................ 90 Totalizando por pedido ........................................................................................................................ 92 Finalizando a aparncia do relatrio .................................................................................................. 93 Adicionando parmetros ao relatrio .................................................................................................. 93 Chamando o relatrio por uma aplicao desktop .............................................................................. 97 CAPTULO 6 .......................................................................................................................................... 101 DESENVOLVENDO RELATRIOS COM NETBEANS IDE ............................................................................ 101 DESENVOLVENDO RELATRIOS COM NETBEANS .................................................................................... 101 OBTENDO E INSTALANDO O IREPORT PARA NETBEANS .......................................................................... 101 CRIANDO UM RELATRIO COM O PLUGIN ................................................................................................ 104 A ESTRUTURA E PROPRIEDADES DE UM RELATRIO JASPERREPORTS...................................................... 104
Pgina 2

www.integrator.com.br

EXIBINDO O GRID ................................................................................................................................... 109 ADICIONANDO UMA CONEXO A UM RELATRIO EM BRANCO ................................................................ 109 CRIANDO A QUERY DO RELATRIO ......................................................................................................... 112 DESENHANDO O RELATRIO ................................................................................................................... 114 ADICIONANDO OS TEXTOS ESTTICOS..................................................................................................... 115 APNDICE A .......................................................................................................................................... 119 O MYSQL .............................................................................................................................................. 119 O QUE UM BANCO DE DADOS RELACIONAL? ......................................................................................... 119 INSTALANDO O BANCO DE DADOS ........................................................................................................... 119 INSTALANDO NO WINDOWS .................................................................................................................... 119 INSTALANDO O MYSQL NO LINUX ......................................................................................................... 120 ACESSANDO O BANCO DE DADOS MYSQL .............................................................................................. 120 NO WINDOWS ......................................................................................................................................... 120 NO LINUX ............................................................................................................................................... 121 OS COMANDOS CREATE E DROP ......................................................................................................... 121 O COMANDO CREATE ........................................................................................................................... 121 O COMANDO USE ................................................................................................................................... 121 O COMANDO DROP ................................................................................................................................ 122 CRIANDO TABELAS ................................................................................................................................. 122 O COMANDO SHOW ............................................................................................................................... 122 O COMANDO DESCRIBE ....................................................................................................................... 123 ALTERANDO TABELAS EXISTENTES......................................................................................................... 123 ALTERANDO O NOME DA COLUNA ........................................................................................................... 123 ALTERANDO O TIPO DE COLUNA ............................................................................................................. 123 RENOMEANDO UMA TABELA ................................................................................................................... 123 EXCLUINDO / ADICIONANDO COLUNAS E TABELAS.................................................................................. 123 ELIMINANDO TABELAS E COLUNAS ......................................................................................................... 124 ADICIONANDO COLUNAS ........................................................................................................................ 124 ADICIONANDO COLUNAS APS UMA OUTRA DETERMINADA .................................................................... 124 UTILIZANDO NDICES .............................................................................................................................. 124 DECIDINDO QUAIS COLUNAS INCLUIR NO NDICE .................................................................................... 124 CRIANDO UM NDICE ............................................................................................................................... 125 EXCLUINDO NDICES ............................................................................................................................... 125 TIPOS DE TABELAS .................................................................................................................................. 125 O TIPO MYISAM .................................................................................................................................... 126 O TIPO INNODB ...................................................................................................................................... 126
Pgina 3

www.integrator.com.br

ALTERANDO O TIPO DE UMA TABELA ...................................................................................................... 126 TIPO DE DADOS ....................................................................................................................................... 127 TIPOS NUMRICOS................................................................................................................................... 127 MODIFICADORES AUTO_INCREMENT, UNSIGNED E ZEROFILL................................................... 128 AUTO_INCREMENT ........................................................................................................................... 128 UNSIGNED ........................................................................................................................................... 128 ZEROFILL ............................................................................................................................................ 128 TIPOS DE CARACTERE OU DE DADOS DE STRING ...................................................................................... 129 CHAR E VARCHAR ............................................................................................................................. 129 TEXT E BLOB ....................................................................................................................................... 130 TIPOS VARIADOS ..................................................................................................................................... 130 TIPO ENUM ........................................................................................................................................... 130 TIPO SET ................................................................................................................................................ 130 TIPOS DE DATA E HORA (DATE/TIME) .................................................................................................. 130 MODIFICADORES ADICIONAIS DE COLUNA .............................................................................................. 131 SINTAXE BSICA DA SQL ....................................................................................................................... 131 COMANDO INSERT................................................................................................................................ 131 COMANDO SELECT ............................................................................................................................... 132 A CLUSULA WHERE ............................................................................................................................ 132 FUNES QUE TRABALHAM COM A INSTRUO SELECT ....................................................................... 133 LIMIT .................................................................................................................................................... 133 COUNT( ) .............................................................................................................................................. 134 ORDER BY ........................................................................................................................................... 134 ORDER BY ... DESC............................................................................................................................. 134 LIKE ...................................................................................................................................................... 134 COMANDO UPDATE .............................................................................................................................. 135 COMANDO DELETE .............................................................................................................................. 135 TRABALHANDO COM JUNES ................................................................................................................ 135 CRIANDO UMA JUNO COM INNER JOIN ............................................................................................ 135 CHAVES VARIADAS DO MYSQL ............................................................................................................. 136 O QUE UMA CHAVE? ............................................................................................................................. 136 COMO AS CHAVES FUNCIONAM ............................................................................................................... 136 BENEFCIOS DE USAR UMA CHAVE .......................................................................................................... 136 SUPORTE DE CHAVES DO MYSQL ........................................................................................................... 136 CHAVES PRIMRIAS (PRIMARY KEY) ...................................................................................................... 137 CHAVES ESTRANGEIRAS (FOREIGN KEY) ................................................................................................ 137
Pgina 4

www.integrator.com.br

EXCLUINDO UMA CHAVE ESTRANGEIRA .................................................................................................. 137 ADMINISTRANDO O MYSQL ................................................................................................................... 137 ENTENDENDO O SISTEMA DE PRIVILGIOS DO MYSQL ........................................................................... 137 CONFIGURANDO USURIOS ..................................................................................................................... 138 CONFIRMANDO O NOVO USURIO ........................................................................................................... 138 REVOGANDO PRIVILGIOS ...................................................................................................................... 139 OBTENDO INFORMAES COM SHOW ................................................................................................... 139 APNDICE B .......................................................................................................................................... 140 CONTEXTO DE DESENVOLVIMENTO WEB EM JAVA ................................................................................. 140 No diretrio WEB-INF ....................................................................................................................... 140 Instalando uma aplicao Web em outro local .................................................................................. 141 APNDICE C .......................................................................................................................................... 142 TRABALHANDO COM DATAS ................................................................................................................... 142 APNDICE D ........................................................................................................................................... 144 O TOMCAT .............................................................................................................................................. 144 SERVLETS E JSP ...................................................................................................................................... 144 INSTALANDO O TOMCAT ......................................................................................................................... 144 BAIXANDO E INSTALANDO O APACHE TOMCAT ...................................................................................... 144 NO WINDOWS ......................................................................................................................................... 145 ADICIONANDO A VARIVEL CATALINA_HOME ................................................................................. 145 NO LINUX ............................................................................................................................................... 145 INICIANDO O TOMCAT............................................................................................................................. 145 NO WINDOWS ......................................................................................................................................... 146 NO LINUX ............................................................................................................................................... 146 PARANDO O TOMCAT .............................................................................................................................. 146 NO WINDOWS ......................................................................................................................................... 146 NO LINUX ............................................................................................................................................... 146 O TOMCAT EM OPERAO ...................................................................................................................... 146 O QUE VOC ENCONTRA NO LIVRO DOMINANDO RELATRIOS JASPERREPORTS COM IREPORT...................................................................................................................................... 147 SUB-RELATRIOS .................................................................................................................................... 147 O relatrio mestre-detalhe que ser desenvolvido............................................................................. 147 RELATRIOS COM HIBERNATE ................................................................................................................ 149 SUB-RELATRIO COM HIBERNATE .......................................................................................................... 150 RELATRIOS USANDO EJB QL ............................................................................................................... 150 Desenvolvendo o relatrio ................................................................................................................. 151
Pgina 5

www.integrator.com.br

GERANDO RELATRIOS COM OUTRAS FONTES DE DADOS ........................................................................ 152 SIMPLIFICANDO RELATRIOS COM GROOVY ........................................................................................... 155 CRIANDO GRFICOS E SUBDATASET EM SEUS RELATRIOS ..................................................................... 156 Criando um grfico simples ............................................................................................................... 156 Subdatasets ......................................................................................................................................... 157 Utilizando Grficos com Subdatasets em um relatrio com Hibernate............................................. 157 INTERNACIONALIZANDO RELATRIOS E IMAGENS DE FUNDO .................................................................. 157 CROSSTABS............................................................................................................................................. 159 Criando um Crosstab com Subdataset ............................................................................................... 160 OUTRAS CARACTERSTICAS DA GERAO DE RELATRIOS ..................................................................... 161 Tratando relatrios grandes .............................................................................................................. 161 Exibindo somente um grupo por pgina ............................................................................................ 161 Reiniciando o nmero de pginas ...................................................................................................... 161 Alinhamento de objetos no design do relatrio.................................................................................. 161 Formatao entre textos no seu relatrio .......................................................................................... 161 APNDICE A - EXPORTANDO PARA OUTROS FORMATOS .......................................................................... 162

Pgina 6

www.integrator.com.br

Introduo
Desenvolver aplicaes com o uso de relatrios uma rotina comum para um desenvolvedor. Ao longo de anos, diversos softwares de relatrios surgiram. O sucesso de cada um dependia da integrao com uma determinada plataforma (leia-se linguagem) que estivesse no auge no momento. Em Java, a situao um pouco diferente. Com uma linguagem onde os desenvolvedores se acostumaram com a cultura Open Source (embora Java no fosse at bem pouco tempo), poucas ferramentas de relatrios se destacavam neste cenrio. Bem poucas tambm detinham as caractersticas profissionais dos melhores programas para a gerao de relatrios. O tempo passou e este cenrio mudou. Em 2001, nasceu o JasperReports, criado por Teodor Danciu, quando teve a tarefa de avaliar ferramentas de relatrios para um projeto que estava trabalhando. As solues existentes eram muito caras para o oramento do projeto e, em uma situao comum do mundo do desenvolvimento, ele decidiu escrever sua prpria ferramenta de relatrios, que ao liber-la para a comunidade, ficou imensamente popular em pouco tempo. JasperReports uma biblioteca escrita em Java, de cdigo fonte open source, projetada para ajudar o desenvolvedor com a tarefa de criar relatrios para aplicaes, tanto Desktop como Web, fornecendo uma API que facilita sua gerao. Embora seja simples, ainda exige que o desenvolvedor conhea seu formato XML utilizado para criar os relatrios, o que torna dispendioso o tempo de um iniciante. Mas este cenrio comeou a mudar em 09 de outubro de 2002, quando Giulio Toffoli lanou, de forma independente, uma ferramenta para gerar relatrios visuais, chamando-a de iReport. Sua caracterstica era de desenvolver relatrios gerando o formato XML no padro JasperReports. Em 2005, com a popularidade do iReport, a JasperSoft (mantenedora do JasperReports) tornou esta ferramenta oficial na construo de relatrios para o JasperReports. Com cinco anos de existncia, o iReport juntamente com o JasperReports chega a sua segunda verso, demonstrando no somente amadurecimento, mas reconhecimento e respeito de desenvolvedores que trabalham com a linguagem Java como uma ferramenta profissional para o desenvolvimento de relatrios. Este e-book um guia que o ensinar a utilizar o bsico do iReport para construir relatrios JasperReports.

Os Softwares requeridos Os aplicativos criados nesse livro no exigem software proprietrio. Portanto ao longo dos captulos voc no s aprender a us-los, como tambm onde 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. Hardware requerido Uma boa configurao de hardware se faz necessrio para trabalhar com aplicaes escritas em Java. Um computador para rodar bem o iReport deve ter as seguintes configuraes para uma confortvel utilizao, segundo o autor: Processador: Pentium 3 (similar) ou superior
Pgina 7

www.integrator.com.br

Memria: 256 MB de RAM mnimo (recomendo 512 GB de RAM) HD: 20MB de espao livre no disco Monitor: 17 polegadas Os demais programas apresentados ao longo do livro, como o Eclipse e o NetBeans, seguem um padro estabelecido por seus mantenedores.

Pgina 8

www.integrator.com.br

Captulo 1
Comear j metade de toda a ao. provrbio grego Conhecendo o iReport O iReport um programa Open Source, capaz de criar visualmente os mais complexos relatrios para aplicaes Java no formato da biblioteca JasperReports. Como escrito em 100% Java, significa que tambm multiplataforma. Alm disso, seus cdigos fontes so distribudos gratuitamente de acordo com a GNU (General Public License). Atravs de uma interface grfica intuitiva, o desenvolvedor capaz de criar qualquer tipo de relatrio de forma simples e rpida. Mesmo sabendo que o iReport desenvolve um formato XML usado pelo JasperReports, o que no difcil de manipular, h uma vantagem em usar esta ferramenta. Se o desenvolvedor um usurio iniciante no formato XML do JasperReports, o iReport supre suas necessidades evitando que seja necessrio fazer modificaes no cdigo fonte. Caso seja experiente neste formato, o iReport minimiza o tempo na criao dos mais complexos relatrios. Neste captulo voc aprender onde obter, os requerimentos necessrios para executar, como instalar, compilar e entender sobre algumas das mais importantes caractersticas do iReport.

Antes de utilizar o iReport O iReport, por ser uma ferramenta Java, precisa do Sun Java 2 SDK 1.4 instalado em sua mquina, ou superior. Perceba que no apenas a JVM (Java Virtual Machine) que deve estar instalada. Isso porque, para compilar os arquivos jasper, necessria a instalao da distribuio do Java SE, sendo impossvel somente com a JRE (Java Runtime Environment). Caso queira compilar o iReport, atravs de seus arquivos fontes, ser necessria a instalao do Jakarta Ant na verso 1.6 ou superior.

Obtendo e instalando o Java SE Atualmente, o JDK (Java SE Development Kit) est em sua verso 6 e possui suporte para as seguintes plataformas: Microsoft Windows Linux Sun Solaris Mac Os Entre outros 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.
Pgina 9

www.integrator.com.br

Para obter o Kit de Desenvolvimento Java, que at o momento em que este livro escrito est na verso 6 update 2 (JDK 6u2), 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 2 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 2 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 plataforma. Observe que na pgina de Downloads existem diversos Java SE. Existe Java SE para a plataforma Windows, Linux, Solaris SPARC, Solaris x86 e Linux AMD64. Efetue o download do Java SE para o seu sistema operacional clicando sobre o link do produto que utilizar para instalao.

A instalao no Windows Tendo em vista que o Windows no qual ser descrito est na verso XP ou superior, inicie o assistente com um duplo clique sobre o arquivo executvel, que como tantos outros desta plataforma, basta avanar at concluir. Para configurar qualquer varivel de ambiente em um sistema Windows na verso NT, voc deve entrar no Painel de Controle, Sistema e na guia Avanado clique no boto Variveis de Ambiente. As variveis de ambiente so seqncias de caracteres que contm informaes como unidade, caminho ou nome de arquivo. As variveis de ambiente controlam o comportamento de vrios programas. Como exemplo de variveis de ambiente: PATH, CLASSPATH, USER, TEMP, JAVA_HOME e etc. Estas variveis de ambiente so utilizadas por muitos programas, para definir um espao em memria principal (RAM), onde alguns processamentos sero executados Em Variveis do sistema, clique em Nova. Adicione o nome da varivel como JAVA_HOME e no valor o caminho onde voc instalou o JDK. A varivel JRE_HOME similar a anterior, mudando apenas para o valor onde se encontra a mquina virtual Java. 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 mquina em um prompt de comando, como mostrado a seguir: java -version
Pgina 10

www.integrator.com.br

Em Windows verso 9x Voc deve editar o arquivo autoexec.bat, encontrado em C:\autoexec.bat e adicionar as variveis como o exemplo a seguir: set JAVA_HOME= C:\jdk1.6.0_02 Onde o local indicado no exemplo, onde voc tem instalado o JDK. A instalao no Linux No momento em que este livro est sendo escrito, a verso baixada para o sistema operacional Linux a jdk-6u2-linux-i586.bin. 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-6u2-linux-i586.bin Execute o arquivo: shell# ./ jdk-6u2-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_02 JRE_HOME=/ jdk1.6.0_02/jre export JAVA_HOME export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/lib export 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.

Pgina 11

www.integrator.com.br

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_02" Java(TM) SE Runtime Environment (build 1.6.0_02-b06)

Figura 1 Verificando a verso de instalao do Java no Linux

Obtendo e instalando o iReport Para baixar o iReport, entre no endereo oficial http://jasperforge.org/sf/projects/ireport ou http://ireport.sourceforge.net/. At o momento em que este livro escrito a verso atual do iReport est em 2.0.2. Esta verso tem suporte completo ao JasperReports 2.0.2. Clique no link Download para ser redirecionado ao SourceForge.net, onde est alocado para baixar. Se voc estiver usando o sistema operacional Microsoft Windows, baixe a verso iReport2.0.2-windows-installer.exe, ao qual inclui um instalador, ou o arquivo iReport-2.0.2.zip, sem instalador. Para os demais sistemas operacionais, incluindo Linux, baixe a verso iReport2.0.2.tar.gz. O cdigo fonte pode ser encontrado baixando-se o arquivo iReport-2.0.2-src.zip.

Ateno: Com algumas mudanas, muitos dos exemplos vistos neste livro podero ser usados em verses anteriores, aps a verso 0.2.0 de iReport.

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

Pgina 12

www.integrator.com.br

Suporte a 100% das tags XML do JasperReports; Editor WYSIWYG para criao de relatrios, possuindo ferramentas que incluem desenhos de retngulos, linhas, elipses, caixas de texto, rtulos, grficos, sub-relatrios, cdigos de barras e etc.; Um editor para escrever as expresses incluindo destaques (highlights) nas sintaxes; Suporte para Unicode e lnguas no latinas como: Russo, Chins, Japons, Coreano e etc.; 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 (Drag n Drop); Ilimitados Desfazer e Refazer; Biblioteca de estilos e etc. Instalando o iReport Como existem mais de uma forma de instalar o iReport, voc ver todas aqui. A primeira forma de instalao que ser mostrada no sistema operacional Windows com o assistente. A segunda forma ser sem o uso de assistente, neste caso tanto no sistema operacional Windows como no Linux ser mostrada.

No Windows com instalador O assistente para instalar o iReport no Windows similar aos demais utilizados em outros programas neste sistema operacional. D um duplo clique no arquivo iReport-2.0.2-windowsinstaller.exe para iniciar o processo de instalao pelo assistente. Na primeira etapa voc tem a tela inicial do iReport 2.0.2. Clique no boto Next para prosseguir.

Pgina 13

www.integrator.com.br

Figura 2 Primeiro passo: Tela inicial do assistente de instalao do iReport

Na segunda etapa do assistente voc deve aceitar a licena de uso do iReport. Caso voc no conhea a licena GNU (General Public License), recomendo l-la antes de prosseguir. Clique no boto I Agree para continuar.

Figura 3 Segundo passo: Termo de aceite de licena de uso do programa

Na terceira etapa voc define os componentes que sero instalados. Caso voc queira instalar com os fontes do iReport, deixe marcada a opo Sources. Clique no boto Next para prosseguir.
Pgina 14

www.integrator.com.br

Figura 4 Terceiro passo: Componentes selecionados na instalao do iReport

A quarta etapa o local onde ser instalado o iReport. Por padro ele definido dentro do diretrio JasperSoft\iReport-2.0.2 em Arquivos de programas do seu sistema operacional Windows. Caso precise mudar, clique no boto Browse e selecione o novo local em que deseja instalar. Para prosseguir, clique no boto Next.

Pgina 15

www.integrator.com.br

Figura 5 Quarto passo: Definindo o local de instalao

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\Report-2.0.2.

Figura 6 Quinto passo: Seleo da pasta para acesso no menu Iniciar

Pgina 16

www.integrator.com.br

Aps a instalao, a opo Run iReport 2.0.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.

Figura 7 Finalizando o assistente aps a instalao

Ateno: O instalador cria, alm do arquivo iReport.exe, um arquivo chamado iReport.bat, que no caso de no ser possvel a inicializao pelo executvel, por qualquer motivo que seja, tente atravs deste, ou diretamente no diretrio bin atravs do arquivo startup.bat.

No Windows e Linux sem instalador Caso voc prefira a verso sem instalador, existem os dois arquivos compactados iReport-2.0.2.zip (recomendvel para o sistema operacional Windows) ou iReport-2.0.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-2.0.2.tar.gz Ao descompactar o iReport, entre no diretrio e execute a permisso de execuo: shell# cd iReport-2.0.2/
Pgina 17

www.integrator.com.br

shell# chmod +x iReport.sh Para o Windows existem os arquivos iReport.exe e iReport.bat para inicializar, bastando um duplo clique. No sistema operacional Linux, basta entrar no terminal e executar o Shell, como mostrado a seguir: shell# ./iReport.sh

Figura 8 Permisso e execuo do iReport no Linux

Pgina 18

www.integrator.com.br

Captulo 2
Especialize-se em um setor determinado e procure conhecer mais sobre ele que qualquer outra pessoa. Joseph Murphy Iniciando no iReport O iReport uma ferramenta que est preparada para construir visualmente os mais complexos relatrios dentro dos limites de JasperReports. Embora o primordial de iReport seja de desenhar relatrios, existem tambm suas caractersticas para configuraes. Este captulo o introduzir ao desenvolvimento bsico de relatrios usando o iReport, partindo de sua execuo inicial e suas configuraes bsicas.

Abrindo o iReport pela primeira vez Quando o iReport executa pela primeira vez ele carrega informaes de configuraes regionais de seu sistema operacional e cria um diretrio chamado de .ireport no diretrio do usurio em home no Linux ou em Document and Settings. Neste diretrio voc encontra dois arquivos padro: config.xml e ireport2.0.2 .location.

Figura 1 Smbolo do iReport

Suas configuraes pessoais e as configuraes do programa esto gravados neste diretrio, em seu arquivo config.xml. O ireport2.0.2 .location apenas armazena o caminho fsico para a localizao do diretrio de instalao do iReport.

Pgina 19

www.integrator.com.br

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. Neste caso, poder ser necessria a criao do diretrio manualmente.

Antes de executar o iReport, copie o arquivo tools.jar do diretrio lib do JDK instalado para o diretrio de mesmo nome no local de instalao da ferramenta (por exemplo /home/edson/iReport2.0.2/lib). A ausncia deste arquivo pode produzir algumas excees durante a compilao do relatrio (ocorridos por usar classes contidas desta biblioteca). No MacOS X utilize o arquivo classes.jar.

Documentos Recentes no so exibidos Em alguns casos, devido localizao de alguns arquivos, quando voc fecha o iReport e torna a abri-lo, os Recent Files (Documentos Recentes), opo do menu File (Arquivo) no os exibe. Isso ocorre porque o caminho pode conter caracteres que so invlidos no formato UTF-8. Para arrumar este problema, procure no utilizar acentos em diretrios e arquivos salvos.

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

O banco de dados usado O banco de dados usado neste livro ser o MySQL 5. Apesar de ser o MySQL, os exemplos mostrados podero ser feitos em Oracle, SQL Server, PostgreSQL e etc. No Apndice A voc tem todos os passos iniciais deste banco de dados caso no tenha experincia com o MySQL. O banco de dados que ser usado neste exemplo, chamado de relatorios, e nos demais ao longo do livro est sendo apresentado na Figura 2 a seguir, com suas devidas tabelas.

Pgina 20

www.integrator.com.br

Figura 2 Diagramao do banco de dados usado no livro

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

Antes de criar o primeiro relatrio O idioma padro utilizado pelo iReport o configurado em seu sistema operacional. Se o seu sistema operacional estiver em portugus, como ocorre no meu caso, como autor, o iReport ir utilizar esta configurao. O exemplo proposto ser baseado em tal idioma, at que voc aprenda a configur-lo e ento, utilizar o Ingls.

Observao: escolha sua alterar ou no o idioma. Se quiser permanecer no idioma nativo, basta no configur-lo. Mas vale lembr-lo que, fora o idioma ingls, podem haver algumas falhas na traduo, ocasionando em reparo do idioma por sua parte.

O primeiro relatrio 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.
Pgina 21

www.integrator.com.br

V ao menu Arquivo (File) do iReport e selecione no menu o item Assistente de Relatrio... (Report Wizard)

Figura 3 Selecionando o Assistente de Relatrio

Ao surgir caixa de dilogo do assistente, chamada de Assistente do iReport, haver a necessidade de criar uma conexo com o banco de dados. Para isso, como voc ainda no fez nenhuma, clique no boto Novo (New), ao lado do campo Conexes / Fonte de Dados (Connections/Data Sources), como exibe a Figura 2.4 a seguir.

Figura 4 Criando uma conexo

A caixa de dilogo Propriedades de Conexo (Connections properties) surgir para ser definida a forma como ser criada a conexo com o banco de dados. No caso, voc vai utilizar a ponte JDBC, selecionando o item Conexo de Banco de Dados JDBC (Database JDBC connection). Clique no boto Prximo (Next) para prosseguir.

Pgina 22

www.integrator.com.br

Figura 5 - Caixa de dilogo Propriedades de Conexo

Como o driver JDBC usado do MySQL, por padro, a segunda etapa das propriedades de conexo surgir com esta opo selecionada no campo Driver JDBC (JDBC Driver), contendo com.mysql.jdbc.Driver. No h necessidade, neste caso, de se adicionar a biblioteca JDBC na sua aplicao. No campo Nome (Name) digite relatorios. No campo Caminho do JDBC (JDBC URL) complete deixando jdbc:mysql://localhost/relatorios. Coloque o nome de usurio no campo Usurio (User Name) e sua respectiva senha em Senha (Password). Marque a opo Salvar senha (Save password).

Pgina 23

www.integrator.com.br

Figura 6 Definindo as propriedades de conexo

Clique no boto Teste (Test). Caso aparea a mensagem Conexo testada com sucesso! (Connection test successful!), significa que voc configurou tudo corretamente e que agora h uma comunicao com o banco de dados. Clique no boto OK para confirmar e no boto Salvar (Save) da caixa de dilogo Propriedades de Conexo (Connections properties) para guardar a conexo criada.

Figura 7 Confirmao da conexo

Pgina 24

www.integrator.com.br

Onde o iReport armazena minha conexo? O iReport guarda as informaes da configurao da conexo no diretrio .ireport, dentro do arquivo config.xml. Neste arquivo h o elemento <iReportConnection /> que utiliza a classe it.businesslogic.ireport.connection.JDBCConnection para se conectar ao banco de dados utilizando JDBC. O nome da conexo fica no atributo name. As configuraes so armazenadas no subelemento <connectionParameter/>.

Voltando ao assistente de relatrio, na primeira etapa, concluda a conexo, voc s precisa definir a tabela e dados que sero exibidos. No campo Consulta SQL (SQL query) digite a query a seguir que selecionar somente a tabela de produtos: SELECT * FROM produtos Clique no boto Prximo para prosseguir.

Figura 8 Primeira etapa - Criando a consulta SQL

Na segunda etapa do assistente, em Seleo de campos (Fields selection), adicione todos os campos exceto CategoriaID (utilizando o boto >) e clique no boto Prximo (Next).

Pgina 25

www.integrator.com.br

Figura 9 Segunda etapa - Seleo de campos

Na terceira etapa simplesmente avance clicando no boto Prximo (Next). Na quarta etapa, voc vai selecionar o layout que deseja utilizar em seu relatrio. Selecione um relatrio na opo marcada Layout colunar (Columnar layout). Clique no boto Prximo (Next).

Figura 10 Quarta etapa Definindo seu Layout

Na quinta e ltima etapa, clique simplesmente no boto Encerrar (Finish) para concluir o assistente.

Pgina 26

www.integrator.com.br

Figura 11 - ltima etapa Confirmando a criao

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

Figura 12 - O relatrio gerado pelo assistente

Observao: O driver JDBC do MySQL j vem com o iReport, no diretrio lib 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-3.1.11-bin.jar, adicione neste diretrio.

Pgina 27

www.integrator.com.br

Visualizando o primeiro relatrio Antes de iniciar qualquer alterao, voc vai visualizar o relatrio da forma bruta como foi criado. V ao menu Criar (build) e clique na opo Executar relatrio (usar conexo ativa) Execute (with active connection).

Figura 13 Executando o relatrio com a conexo ativa

Ao surgir a caixa de dilogo para salvar o arquivo, chamada de Save report as XML jasperreports file, d um nome ao arquivo, mantenha na extenso .jrxml e clique no boto Save. Surgir o visualizador de relatrios prprio do JasperReports chamado de JasperViewer. Um timo visualizar desktop escrito em Java, contendo o bsico de todo visualizador.

Pgina 28

www.integrator.com.br

Figura 14- Visualizador de relatrios do JasperReports (JasperViewer)

Configurando o iReport Agora com a criao de um relatrio bsico, voc est preparado para configurar o iReport em algumas de suas caractersticas, incluindo o idioma. V ao menu Opes (Options) e clique no item Opes (Settings).

Figura 15 Menu Opes

Ao surgir caixa de dilogo Opes (Options), a primeira guia mostrada a Geral (General). No grupo Geral (General), voc pode fazer configuraes destinadas aparncia do iReport.
Pgina 29

www.integrator.com.br

Figura 16 Caixa de dilogo Opes

Como principais itens de configurao voc tem: Em Geral: Unidade default (Default Unit) Indica a unidade utilizada para o trabalho com os relatrios. Podem ser: mm, cm, pixels e polegadas. Mostrar grid (View Grid) Desabilitado por padro, exibe um grid para melhorar o alinhamento dos componentes existentes na construo do relatrio. Mostrar rguas (View Rules) Habilitado por padro, exibe a rgua na rea de desenho do iReport. Tamanho da grade (Grid Size) O tamanho em pixels da grade (grid). Cor da borda do texto (Text Border Color) Altera a cor da borda dos elementos existentes no relatrio com relao a exibio de rtulos, textos dinmicos e etc. Magnetic Power Indica em pixels a distncia de atrao dos elementos para as linhas guias (voc ver linhas guias mais adiante). Idioma (Language) Utiliza as configuraes regionais do sistema operacional para definir o idioma aqui. No caso, por padro, est em portugus (Brasil), caso seu sistema esteja configurado neste idioma.
Pgina 30

www.integrator.com.br

Ateno: Altere o idioma para English (Ingls) neste ponto. Clique no boto Aplicar (Apply) para prosseguir.

Em Padres do Relatrio (Report Defaults): Linguagem default para expresses (Default Language for Expressions) Por padro Java, mas pode ser alterado para Groovy (veja mais sobre Groovy em relatrios JasperReports no Captulo 10 deste livro). Estilo Padro (Default Style) Determina um estilo padro a ser utilizado em um relatrio. Por padro None (Nenhum). Em LookAndFeel: Look and Feel O padro System (formato visual das janelas de acordo com o sistema operacional). Mas como em Java existem outros padres visuais para aplicaes desktop, voc pode selecionar aqui o que mais lhe agradar. Escolha e clique no boto Aplicar para visualizar. Fonte (Font) A fonte padro usada pelo iReport. Tamanho da fonte (Font size) O tamanho da fonte utilizada no iReport. Na guia Compilador (Compiler) voc pode definir onde o iReport poder armazenar os arquivos jasper que so compilados. Por padro, o iReport utiliza o seu diretrio corrente para guardar os arquivos compilados. Para alterar, clique no boto Procurar (Browse) do campo Diretrio padro de compilao (Default compilation directory). Caso deseje armazenar os arquivos compilados (.jasper) no mesmo diretrio onde salvou o relatrio .jrxml, marque a opo Usar o diretrio de relatrio para os compilados (Use Reports Directory to Compile). Em Compilador (Compiler), voc tem o JasperReports default selecionado. O JasperReports pode utilizar outro compilador para o seu relatrio. Caso voc queira usar o compilador Java (javac), voc deve adicionar a biblioteca tools.jar ao diretrio lib como j foi dito no incio deste captulo obrigatoriamente. Outra opo interessante est no Virtualizador de Relatrio (Report Virtualizer). Mais adiante voc ter mais informaes sobre esta opo na utilizao de relatrios grandes.

Pgina 31

www.integrator.com.br

Figura 17 Guia Compilador

Clicando na guia Cpia (Backup) voc pode definir se deseja fazer ou no cpia de backup caso queira, alm de definir o local onde sero armazenadas as cpias de backup. Por padro, o iReport utiliza o seu diretrio corrente para armazenar os arquivos de backup. Na guia Programas Externos (External Programs) voc pode selecionar cada um dos visualizadores que deseja utilizar quando compilar e exportar o relatrio no determinado formato. Adicione um programa que deseja utilizar para cada tipo de arquivo, principalmente o PDF que ser muito utilizado ao longo do livro.

Pgina 32

www.integrator.com.br

Figura 18 A guia Programas Externos

Feita todas as alteraes, clique no boto Salvar (Save) para guardar as configuraes efetuadas e fechar a caixa de dilogo.

Visualizando o relatrio compilado em outro aplicativo Para finalizar, voc pode querer visualizar o relatrio compilado em outro aplicativo, como, por exemplo, em PDF. V ao menu Criar (build) e marque a opo Visualizar PDF (PDF Preview). Retorne ao mesmo menu e clique no item Executar relatrio (usar conexo ativa) Execute (with active connection).

Pgina 33

www.integrator.com.br

Figura 19 Detalhe no item Visualizar PDF

Assim que compilar, o programa configurado no iReport para exibir arquivos no formato PDF e o relatrio agora neste formato ser aberto.

Figura 20 O relatrio compilado em PDF sendo exibido pelo Adobe Acrobat

Pgina 34

www.integrator.com.br

Captulo 3
A nica hora que voc no pode falhar na ltima vez que tentar. Charles Kettering Estrutura de um relatrio e seu desenvolvimento Um relatrio uma maneira agradvel de apresentar os dados vindos de alguma base de informao com sua aparncia formatada. Na maioria das vezes, relatrios so usados para agrupar as informaes vindas de um grupo de dados, relacionados entre si, oriundos de diversas tabelas. Como resultado voc tem apenas os campos determinados na construo do seu relatrio e exposto como tal de forma a simplificar a compreenso das informaes. Vindo em um formato padronizado para impresso, como um texto feito em um editor de textos, voc s precisa mandar para a impresso ou export-los para outro formato de uso maior. Neste captulo voc ir conhecer a estrutura de um relatrio JasperReports na ferramenta iReport e suas propriedades.

A estrutura do relatrio Um relatrio no JasperReports possui diversas sees, separadas por linhas horizontais ao qual so chamadas de Bands (bandas). O comportamento de cada Band depende da funcionalidade para a qual est preparada. Quando o relatrio 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 nove sees pr-definidas para que novos grupos possam ser adicionados. Quando voc inicia um novo relatrio (New Document) sem o uso de assistente, a sua tela ser como mostrada a Figura 1 a seguir.

Pgina 35

www.integrator.com.br

Figura 1 Bands de um documento de relatrio em branco no JasperReports

Embora as bands j estejam adicionadas e com espaamentos pr-definidos inicialmente, voc pode com o cursor, entre cada uma delas, nas linhas horizontais que as separam, e mov-las. Ao arrastar, voc percebe que a altura de cada band se expande, empurrando as demais, aps a alterada, para baixo ou vice-versa. Embora o desenvolvedor possa alterar a sua altura, em casos como a band detail, sua alterao implica na visibilidade e espaamento dos elementos impressos na gerao do relatrio. Porm, nem todas as bands so organizadas dinamicamente pelo contedo, como o caso de Column Footer, Page Footer e Last Page Footer. A seguir voc tem a descrio de cada uma das bandas existentes em um relatrio JasperReports:

Title A band title. a primeira band visvel na construo de um relatrio vazio. A seo de ttulo. Esta seo s aparece uma vez no comeo do relatrio. Ex.: Relatrio de Clientes. No JasperReports representado pelo trecho XML mostrado a seguir: <title> <band height="50"> <staticText> <reportElement x="180" y="0" width="200" height="20"/> <text>
Pgina 36

www.integrator.com.br

<![CDATA[Title]]> </text> </staticText> </band> </title>

Page Header A band pageHeader. Esta seo aparece no comeo de cada pgina impressa. A altura especificada durante a fase de desenho do relatrio no se altera durante o processo de criao do mesmo (exceto que haja componentes redimensionveis, como uma caixa de texto contendo um texto longo ou um sub-relatrio). Neste local voc pode ter data e hora e/ou nome ou informaes da empresa. As bands Title e Summary no so inclusas no cabealho da pgina quando impressa em uma pgina separada. No JasperReports representado pelo trecho XML mostrado a seguir: <pageHeader> <band height="20"> <staticText> <reportElement x="180" y="30" width="200" height="20"/> <text> <![CDATA[Page Header]]> </text> </staticText> </band> </pageHeader>

Column Header A band da columnHeader. Esta seo s aparece no comeo de cada interao com a band detail. Se o relatrio tem uma s coluna definida, formando um relatrio tabular, ento so ignoradas as sees cabealhos e rodaps de coluna. Como exemplo voc pode listar nomes escolhidos de campos especficos como: Nome do Cliente, Telefone, Data do Cadastro. No JasperReports representado pelo trecho XML mostrado a seguir:

<columnHeader> <band height="20"> <staticText>


Pgina 37

www.integrator.com.br

<reportElement x="180" y="50" width="200" height="20"/> <text> <![CDATA[Column Header]]> </text> </staticText> </band> </columnHeader>

Detail A band detail o local de exibio dos dados de um objeto datasource ou query. Esta seo se repete enquanto houver linhas para serem colocadas no seu relatrio de acordo com o resultado transmitido. No JasperReports representado pelo trecho XML mostrado a seguir: <detail> <band height="20"> <textField> <reportElement x="10" y="0" width="600" height="20"/> <textFieldExpression class="java.lang.String"> <![CDATA[$F{FieldName}]]> </textFieldExpression> </textField> </band> </detail>

Column Footer A band columnFooter. Esta seo aparece abaixo de cada coluna. Vale o mesmo comentrio da banda Column Header. No JasperReports representado pelo trecho XML mostrado a seguir: <columnFooter> <band height="20"> <staticText> <reportElement x="0" y="0" width="200" height="20"/> <text> <![CDATA[Column Footer]]>
Pgina 38

www.integrator.com.br

</text> </staticText> </band> </columnFooter>

Page Footer A band pageFooter. Representa o rodap da pgina. Esta seo aparece no final de cada pgina. Esta band pode conter informaes como o nmero da pgina, o total de pginas encontradas, endereo da empresa e etc. No JasperReports representado pelo trecho XML mostrado a seguir: <pageFooter> <band height="20"> <staticText> <reportElement x="0" y="5" width="200" height="20"/> <text> <![CDATA[Page Footer]]> </text> </staticText> </band> </pageFooter>

Last Page Footer A band lastPageFooter. A ltima seo do rodap da pgina. Esta seo substitui o rodap da pgina regular na ltima pgina do relatrio. Se voc quer que o ltimo rodap da pgina seja diferente dos demais, isto possvel usando esta band especial. Se esta band possuir o valor zero de altura, ser completamente ignorada e o layout desenhado para as pginas comuns ser usado tambm para a ltima pgina. No JasperReports representado pelo trecho XML mostrado a seguir: <lastPageFooter> <band height="20"> <staticText> <reportElement x="0" y="5" width="200" height="20"/> <text>
Pgina 39

www.integrator.com.br

<![CDATA[Last Page Footer]]> </text> </staticText> </band> </lastPageFooter>

Summary A band summary. A seo de sumrio, conhecido em outros sistemas como Report footer (Rodap do relatrio). Esta seo s aparece uma vez ao trmino do relatrio e permite voc adicionar um campo possuindo o total geral, por exemplo, de todo o relatrio ou qualquer outra coisa que deseje no fim deste (como um grfico). No JasperReports representado pelo trecho XML mostrado a seguir: <summary> <band height="20"> <staticText> <reportElement x="0" y="5" width="200" height="20"/> <text> <![CDATA[Summary]]> </text> </staticText> </band> </summary>

Background A band background. Esta seo possibilita a introduo de marcas dgua em um relatrio, ou qualquer outra coisa de efeito similar (como linhas ao redor da pgina). Por padro ela est com a altura em valor zero no iReport. No JasperReports representado pelo trecho XML mostrado a seguir: <background> <band height="745"> <image scaleImage="Clip" hAlign="Left" vAlign="Bottom"> <reportElement x="0" y="0" width="160" height="745"/> <imageExpression>"image.gif"</imageExpression> </image> </band>
Pgina 40

www.integrator.com.br

</background>

noData A band noData foi introduzida no JasperReports 2.0.0 com o intuito de introduzir uma seo para melhorar o controle sobre relatrios e sub-relatrios preenchidos com fontes de dados (data sources) vazias. No JasperReports representado pelo trecho XML mostrado a seguir:

<noData> <band height="5" isSplitAllowed="true" > </band> </noData>

Compreendendo as propriedades de um relatrio Antes de criar um relatrio, e compreender as bands explicadas, voc precisa aprender as configuraes de um relatrio atravs de suas propriedades iniciais, comeando com um relatrio sem o uso de assistentes.

Iniciando com um relatrio em branco Para criar um relatrio em branco, v ao menu File e clique no item New Document, ou utilize o cone na barra de ferramentas principal New Document (atalho Ctrl+N).

Figura 2 Detalhe na criao de um Novo relatrio em branco

Ao surgir caixa de dilogo Report properties, voc pode iniciar colocando o Report Name. Na rea Page size voc define o tamanho da folha que comportar seu relatrio. Como qualquer outro editor de relatrios, voc possui alguns Preset Sizes padronizados e a possibilidade de criar um personalizado, alterando a Width e Height da pgina, incluindo a unidade de medida. Em Orientation voc pode colocar a pgina do seu relatrio em Portrait (Retrato) ou Landscape (Paisagem).
Pgina 41

www.integrator.com.br

Embora as dimenses sejam as mais importantes para a construo de um relatrio, a unidade de medidas usada pelo iReport e JasperReports em pixels (com uma resoluo de 75 dpi), como voc j deve ter concludo, uma vez que no Captulo 2 fora mostradas as configuraes onde a unidade do grid (Grid Unit) estava em pixels. Para que voc possa se orientar em um arquivo JRXML do JasperReports, a seguir a Tabela 1 mostra o padro de algumas pginas e seu valor em pixels.
Tabela 1 Dimenses em pixels das pginas padronizadas

Padro da pgina LETTER A3 A4

Dimenso em Pixels 612 x 792 842 x 1190 595 x 842

Ateno: A lista completa se encontra no livro Dominando Relatrios JasperReports com iReport. A guia Margem da Pgina Na guia Page Margin, voc possui quatro posies que definem as margens de seu relatrio: Top, Bottom, Left e Right. As margens podem ser personalizadas seguindo o padro necessrio para o desenvolvimento do seu relatrio.

Pgina 42

www.integrator.com.br

Figura 3 Propriedades do relatrio

A guia Columns Na guia Columns voc pode definir quantas colunas seu relatrio possuir em uma pgina. A pgina que compe o relatrio possui sees que so independentes de dados vindos de um datasource ou query (como o rodap da pgina), mas possui em outras bands a possibilidade de criar colunas para exibir os dados que so preenchidos dinamicamente. Estas bands podem ser postas em colunas verticais definindo uma diviso de acordo com a largura da pgina. O padro uma coluna, onde a sua largura compreende da margem esquerda margem direita da pgina.

Pgina 43

www.integrator.com.br

Figura 4 Detalhe da guia Columns

Caso voc execute um relatrio contendo apenas uma coluna, os elementos vindos da fonte de dados sero postos um abaixo do outro em sua ordem, como mostra a Figura 3.5 a seguir:

Figura 5 Relatrio de uma coluna

Caso voc adicione duas colunas, por exemplo, a largura mxima dividida automaticamente pelo iReport. Obviamente, voc tambm pode definir um espaamento entre colunas. Ao adicionar o espaamento, a largura da coluna subtrada automaticamente, evitando assim problemas na criao do relatrio.
Pgina 44

www.integrator.com.br

Figura 6 Detalhe na adio de duas colunas na pgina

interessante notar que as bandas columnHeader e columnFooter tambm ficam colunadas.

Figura 7 Criao de um relatrio com duas colunas

A guia Scriptlet Class Nesta guia voc define a utilizao de um scriptlet customizado ou no. O scriptlet uma classe Java cujos mtodos so executados conforme so especificados os eventos durante a criao do relatrio, como o incio de uma nova pgina ou o fim de um grupo - Mais adiante trataremos deste assunto. Alm desta opo, voc tambm possui a linguagem (Language) que ser usada para a ferramenta de expresses do iReport. Somente Java e Groovy so suportados nesta verso. importante ressaltar que esta linguagem no est relacionada classe scriptlet.

Pgina 45

www.integrator.com.br

Figura 8 Detalhe na guia Classe scriptlet

A guia More... Na guia More... possvel especificar instrues para a impresso do relatrio.

Figura 9 - Detalhe na guia Mais...

Na parte inicial desta guia, voc possui quatro checkboxes e dois combos:

Title on a new page Quando ativa, especifica se a banda title ser impressa e em seguida criada uma nova pgina, gerando uma quebra de pgina. Seu comportamento pode ser visualizado na Figura 10 a seguir.

Pgina 46

www.integrator.com.br

Figura 10 Comportamento de Title on a new page

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

www.integrator.com.br

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

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

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

Figura 11 Ordem de impresso na Vertical e na Horizontal

When no data Quando o nmero de dados para a impresso vazio (query SQL sem dados, por exemplo), o relatrio pode ter comportamentos diferentes para apresentar a pgina ao usurio. Neste caso existem quatro opes, listadas a seguir: No pages (Sem Pginas) O padro. O resultado final um buffer vazio.
Pgina 48

www.integrator.com.br

Blank page (Pginas em branco) Exibe uma pgina em branco caso no haja dados. All sections, no detail (Todas as sees, nenhum detalhe) Mostra todas as sees existentes no relatrio, menos os detalhes da banda detail. No-data section Seo sem dados. Utiliza a band noData, ou seja, voc adiciona um contedo esttico (ou dinmico sem usar o banco de dados) neste local. Caso no haja dados em uma determinada pesquisa ou sem conexo com o banco de dados, esta seo ser exibida. A guia i18n A guia i18n a responsvel pelos recursos de internacionalizao de seus relatrios.

Figura 12 Detalhe da guia i18n

Format Factory Class Recebe uma string com o nome da classe de formatos, habilitando o uso de datas personalizadas e formatos de nmeros. Representa o atributo formatFactoryClass de JasperReports e implementa a interface net.sf.jasperreports.engine.

Resource Bundle Base Name o nome do pacote de recursos usado para internacionalizar um relatrio. o Resource Bundle do Java, onde voc define em um arquivo os textos traduzidos como rtulos. Cada linguagem corresponde a um arquivo especfico. Veremos detalhes sobre internacionalizao de relatrios em um captulo posterior.

When resource missing type Se um pacote de recurso (Resource Bundle) no est disponvel, voc escolhe uma das opes na caixa de combinao Quando est faltando o tipo do recurso. Representa o atributo whenResourceMissingType no JasperReports. Neste caso, voc tem as seguintes opes: Null (Nulo) Imprime a string Null. Esta a opo padro.
Pgina 49

www.integrator.com.br

Empty (Vazio) No imprime nada. Recebe como valor Empty no atributo whenResourceMissingType de JasperReports. Key (Chave) Imprime o nome chave que falta. Recebe como valor Key no atributo whenResourceMissingType de JasperReports. Error (Erro) Lana uma exceo parando o processo. Recebe como valor Error no atributo whenResourceMissingType de JasperReports. XML encoding O formato padro para salvar os arquivos fontes do JasperReports no iReport UTF-8. Em todo caso, se voc desejar utilizar outro formato que no seja UTF-8, neste local que deve ser especificado. O UTF-8 gerencia todas as letras acentuadas e o smbolo de euro. A outra codificao comum, ISO-8859-1, se encontra nesta caixa de combinao.

Curiosidade: Para construir um relatrio com o processo de adaptao para vrios idiomas e regies, sem qualquer esforo de desenvolvimento adicional, utilizamos a internacionalizao ou, i18n (internationalization uma palavra de 20 caracteres que comea com a letra i e termina com n , tendo 18 letras entre elas).

Visualizao do arquivo JRXML pelo iReport Atravs do iReport possvel ver o arquivo XML gerado para o JasperReports. V ao menu Edit e clique no item XML Source. O visualizador ser o definido em sua mquina para o formato (isso na verso atual em que este livro est sendo baseado).

Figura 13 Visualizando o arquivo JRXML pelo iReport

Pgina 50

www.integrator.com.br

Captulo 4
A imaginao mais poderosa que o conhecimento. Ela alarga a viso, estimula a inteligncia, desafia o impossvel. Sem a imaginao, o pensamento estagnar. Albert Einstein Criando um relatrio sem o uso de assistentes Para uma maior compreenso dos diversos elementos que compem um relatrio no JasperReports, atravs do iReport, importante a um desenvolvedor aprender a desenh-lo manualmente, isto , sem o uso de assistentes. No captulo anterior foram apresentadas as bandas e as configuraes iniciais de um relatrio em branco atravs de suas propriedades. Neste captulo voc ir aprender a criar um relatrio manualmente, adicionando diversos elementos, configurando-os e trabalhando com banco de dados.

Iniciando um relatrio manualmente Para iniciar, voc vai criar um New Document (Ctrl+N). D um nome para o seu relatrio. Os tamanhos predefinidos sero mantidos. Clique no boto OK.

Figura 1 Propriedades do relatrio

Pgina 51

www.integrator.com.br

Exibindo o Grid para desenho de relatrios Caso voc queira desenhar o Grid para desenhar o relatrio, v ao menu View e clique em Show Grid.

Figura 2 Exibindo o Grid no Design do relatrio

A configurao para o Grid Size (Tamanho do Grid) visto na guia General da caixa de dilogo Options, encontrado no menu Options (explicado no Captulo 2 deste livro, em Configurando o iReport).

As barras de ferramentas do iReport O iReport possui trs barras de ferramentas na parte superior de sua janela: a Principal, a Text Formatting (Formatao de Texto) e Elements Formatting (Formatar Elementos). Na primeira barra de ferramentas, a Principal, existe 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 3 apresenta as principais ferramentas que podem ser usadas tanto para a criao de elementos, como tambm para sua manipulao, em um relatrio JasperReports.

Figura 3 - Ferramentas para a criao de elementos no relatrio

1. Pointer A ferramenta Pointer usada para as operaes mais importantes no desenho de um elemento, como: selecionar, arrastar, dimensionar e etc. Por padro ativa, mas fica desativada quando outra ferramenta de desenho de elementos selecionada. 2. Line Em um relatrio JasperReports uma linha definida por um elemento retangular com uma linha diagonal. A linha pode ser desenhada em uma reta perfeita, na horizontal, vertical ou em ngulo se pressionada a tecla <Shift> antes de arrastar. A linha segue o grid.
Pgina 52

www.integrator.com.br

3. 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. 4. Ellipse Desenha elipses no relatrio. 5. Static Text Utilizado para criar rtulos de relatrios. 6. 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. 7. Image Utilizado para exibir imagens em seu relatrio. Podem ser imagens dinmicas (preenchidas por um banco de dados, por exemplo) ou estticas. 8. Barcode tool Gera um cdigo de barras baseado em uma string. 9. Frame Cria quadros que podem conter outros elementos em seu interior, com bordas ao seu redor. 10. Chart tool Gera um grfico atravs de valores determinados transmitidos. Mais adiante haver um captulo exclusivamente para grficos. 11. Subreport Cria um relatrio dentro de outro, o que chamamos de mestre-detalhe. Mais adiante haver um captulo abordando exclusivamente este assunto. 12. Crosstab Desenvolve o que chamamos em programas de planilhas eletrnicas de tabela dinmica (referncia cruzada), muito utilizado em relatrios gerenciais (Business Intelligence). Mais adiante tambm haver um captulo abordando exclusivamente este assunto. Adicionando uma conexo a um relatrio em branco Para a construo deste relatrio, vamos utilizar o banco de dados do livro. O exemplo seguir do pressuposto que voc ainda no possui uma conexo criada com o iReport. V ao menu Data e clique em Connections/Data Sources, ou na barra de ferramentas Text Formatting, clique no boto Datasources, como mostra o detalhe da Figura 4.

Figura 4 Criando uma nova conexo com o banco de dados

Na caixa de dilogo Connections / Datasources, clique no boto New.

Pgina 53

www.integrator.com.br

Figura 5 Criando uma nova conexo com o banco de dados

Atravs dos passos seguidos no Captulo 2, atravs da caixa de dilogo Connections properties, voc vai utilizar a ponte JDBC, selecionando o item Database JDBC connection e clicar no boto Next. Mas desta vez voc vai utilizar o assistente, JDBC URL Wizard, digitando localhost:3306 no campo Server Address e em Database digite relatorios. Clique no boto Wizard. Perceba que o campo JDBC URL ser preenchido com os dados digitados. Teste a conexo e Save.

Figura 6 Usando o Assistente para JDBC URL

Pgina 54

www.integrator.com.br

Para uma modificao da conexo, na caixa de dilogo Connections / Datasources temos o boto Modify. Basta selecionar a linha da sua conexo que deseja alterar e clicar neste boto. A caixa de dilogo Connections properties reabre. Basta alterar e salvar (Save). Em mais de uma conexo, voc tem o boto Set as Default. Basta selecionar a conexo que deseja tornar padro (Default) e clicar neste boto. Observe que na caixa de dilogo a coluna Default apresenta a conexo padro com uma caixa de checagem ativa. Caso voc precise levar as configuraes da sua conexo para outra mquina, ou quer guard-la para uma futura reutilizao, clique no boto Export. A caixa de dilogo para salvar a conexo aparecer. Basta selecionar o local e dar o nome. Caso tenha mais de uma conexo, todas sero exportadas.

Figura 7 Exportando a configurao de Connections / Datasources

O arquivo exportado um XML aberto, no seguinte formato:


<?xml version="1.0"?>
<!-- iReport connections -->

<iReportConnectionSet> <iReportConnection name="relatorios" connectionClass="it.businesslogic.ireport.connection.JDBCConnection"> <connectionParameter name="ServerAddress"> <![CDATA[localhost:3306]]> </connectionParameter> <connectionParameter name="SavePassword"> <![CDATA[true]]> </connectionParameter> <connectionParameter name="Url"> <![CDATA[jdbc:mysql://localhost:3306/relatorios]]> </connectionParameter> Pgina 55

www.integrator.com.br

<connectionParameter name="JDBCDriver"> <![CDATA[com.mysql.jdbc.Driver]]> </connectionParameter> <connectionParameter name="Database"> <![CDATA[relatorios]]> </connectionParameter> <connectionParameter name="Password"> <![CDATA[integrator]]> </connectionParameter> <connectionParameter name="Username"> <![CDATA[edson]]> </connectionParameter> </iReportConnection> </iReportConnectionSet>

Isso significa que caso precise alter-lo, antes de Importar, voc pode modificar em um simples bloco de notas. Depois de configurado, basta fechar a caixa de dilogo. A conexo padro agora exibida na caixa de seleo (Figura 8) na barra de ferramentas Text Formatting. neste local tambm que voc pode alternar entre outras conexes, caso necessite.

Figura 8 Exibio da conexo ativa

Criando a query do relatrio O primeiro relatrio que voc vai criar manualmente trar informaes dos produtos existentes no banco de dados, similar ao Wizard feito anteriormente no Captulo 2. Para criar a query do relatrio, v ao menu Edit e clique no item Report Query. Alternativamente voc pode ir ao menu Data e clicar em Report Query.

Pgina 56

www.integrator.com.br

Figura 9 Acessando Report Query atravs do menu Data

Ao abrir a caixa de dilogo Report Query, clique no boto Query designer. Outra caixa de dilogo surgir, chamada de SQL Query Designer, mas desta vez para a criao da instruo SQL visual. Observe que h trs quadros na janela. O primeiro, esquerda, define a exibio da query de forma visual, separando os elementos padronizados de uma seleo de dados (SELECT, FROM, WHERE e etc.). A cada coluna de sua tabela selecionada, automaticamente a query adicionar na parte superior, em SELECT, o campo e um alias. Em FROM surgir a, ou, as tabelas que esto relacionadas para tal seleo. Como vamos evoluir a construo do relatrio, primeiramente voc vai criar um simples relatrio contendo apenas uma tabela, a de produtos. Voc vai selecionar, atravs do segundo quadro a esquerda, a tabela produtos, dando um duplo clique sobre seu respectivo nome. Esta seleo pode ser atravs do arrastar para o quadro da direita tambm, caso ache mais prtico. Existem duas formas de voc selecionar todos os campos de uma tabela, no Query designer. A primeira ir at a tabela (no caso produtos) e clicar no menu de mesmo nome, selecionando a opo select all.

Figura 10 Selecionando todos os campos automaticamente

Ou simplesmente clicando com o direito do mouse e selecionando a opo add expression, no quadro da esquerda, em SELECT.

Pgina 57

www.integrator.com.br

Figura 11 Adicionando uma expresso

Neste caso, voc digita o que deseja fazer, na caixa de dilogo expression.edit.

Figura 12 Criando a expresso para a query SQL SELECT

Ao final, voc possuir uma configurao da sua query SELECT similar ao mostrado na Figura 13 a seguir:

Pgina 58

www.integrator.com.br

Figura 13 Query final gerada na caixa de dilogo SQL Query Designer

Se voc clicar em syntax, a guia abaixo, ao lado de builder (a atual), voc ver a query construda. Confirme no boto OK. Retornando a caixa de dilogo Report Query, voc ainda pode fazer alteraes na query criada. Na parte superior da janela, existe o boto Save query, caso deseje armazenar a consulta construda para uso posterior em outro relatrio. Se esse for o caso, o carregamento de uma consulta armazenada pode ser feito atravs do boto Load query. Como a opo Automatically Retrieve Fields est selecionada, na parte inferior aparece cada campo selecionado, em uma tabela, com seus respectivos nomes e o tipo de dados em Java de cada um. importante manter selecionada esta opo, uma vez que na digitao ou alterao de uma query, possveis erros podem ser encontrados graas a no exibio dos campos nesta tabela. Sem esta opo selecionada, qualquer alterao na query SQL, no reflete automaticamente neste local, o que se faz necessrio clicar no boto Read Fields. Observe que tambm existe a possibilidade de ter uma descrio de cada campo. Na tabela inferior, nos campos resultantes da query, d um duplo clique em cada linha. Observe que a caixa de dilogo Add/modify field surgir, com o nome e tipo de classe do campo. E tambm um campo de descrio em Field Description. Se houver necessidade, para melhor esclarecimento sobre o nome do campo encontrado na query, quanto a respeito do que ele armazena, basta digitar sua descrio e confirmar.

Pgina 59

www.integrator.com.br

Figura 14 Adicionando descrio em um campo

Como no vamos utilizar todos os campos descritos, vamos remover os que no sero usados. Selecione os campos CategoriaID e UnidadesEmEstoque, com a tecla <Ctrl> pressionada e tecle <DELETE> para remov-los. Caso voc erre, clique no boto Cancel e atravs do menu Data item Report Query, refaa novamente a seleo e a devida excluso.

Figura 15 Detalhe dos campos selecionados da caixa de dilogo Consulta do Relatrio

Depois de criado todos estes detalhes, confirme a caixa de dilogo Report query clicando no boto OK.

Os elementos da query registrados no JasperReports Ao adicionar query criada, atravs do iReport, o arquivo JasperReports registrou elemento <queryString /> em seu arquivo jrxml, para armazenar a consulta SQL:
Pgina 60

www.integrator.com.br

<queryString> <![CDATA[SELECT * FROM `produtos` produtos]]> </queryString>

Nota: O texto contido por entre os elementos <queryString> possui um XML CDATA. Este bloco ignorado pelo analisador XML. A justificativa est nos caracteres invlidos. Caso estes estivessem fora deste bloco, o XML conteria um erro e no seria analisado corretamente para a criao do relatrio compilado criado JasperReports.

Para que seja possvel saber quais campos voc deseja trabalhar neste relatrio, o JasperReports registra no elemento <field />, cada um dos que sero utilizados. Neste elemento, encontra-se em forma de atributos o nome da coluna e tambm o seu tipo mapeado pela JDBC conforme o driver do banco de dados. Como foram removidos dois campos, somente quatro ficaram registrados: <field name="ProdutoID" class="java.lang.Integer"/> <field name="ProdutoNome" class="java.lang.String"/> <field name="preco" class="java.lang.Double"/> <field name="Imagem" class="java.lang.String"/> Este elemento importante, pois campos podem ser mesclados em uma expresso do relatrio para obter a sada necessria. Desenhando o relatrio O desenho do relatrio ser uma etapa importante para a sua compreenso prtica dos campos, rtulos, imagens, frames e tambm sobre as bands (bandas) em sua gerao. A Figura 16 mostra a janela do iReport com a visibilidade de cinco painis que facilitam o desenvolvimento do relatrio JasperReports.

Pgina 61

www.integrator.com.br

Figura 16 A janela do iReport em um relatrio vazio no Linux

Cada um destes painis espalhados ao redor de seu relatrio possui acessibilidade tambm de outra forma e, em algumas vezes, existem mais de um jeito de acessar. Estes painis numerados na Figura 16 so explicados na lista a seguir: (1)File Exibe os relatrios abertos. O acesso feito com um duplo clique sobre o relatrio que deseja exibir na janela. O cone apresentado ao lado do nome do relatrio neste painel tambm indica modificao no arquivo. Caso esteja com dois riscos, porque houve alterao e no foi salvo. Alternativamente voc pode acessar outro relatrio aberto atravs do menu Window. (2)Document structure Exibe os parmetros, campos da tabela da sua query, variveis prdefinidas e criadas e as bands do relatrio. (3)Properties Exibe a propriedade de acordo com o elemento selecionado em sua estrutura (Estrutura do documento). As propriedades de cada elemento do relatrio tambm pode ser acessvel facilmente com o direito do mouse sobre, selecionando o item Properties no menu de contexto. (4)Library Exibe algumas variveis e funes pr-definidas pelo prprio iReport que so teis e comuns na maioria dos relatrios. (5)Styles Library Mostra os estilos criados para serem utilizados no desenvolvimento do relatrio.

Pgina 62

www.integrator.com.br

Configurando as Bands Para comear na criao do desenho do relatrio, voc vai configurar inicialmente as bands que no sero exibidas. Com o direito do mouse sobre a pgina do relatrio (design), selecione no menu de contexto o item Band Properties. Observe que na caixa de dilogo, todas as bandas so exibidas. Cada band possui uma altura prestabelecida e pode ser alterada aqui, simplesmente mudando seu valor no campo Band Height.

Figura 17 Propriedades das bands

Caso voc queira retirar a visibilidade de uma destas bands, basta deixar o nmero zero no campo Band Height. Portanto, as bands que no queremos devemos zerar sua altura e depois clicar no boto Apply antes de alterar a altura de outra band. As alturas de cada band para a criao do relatrio exibida conforme a Tabela 1 mostrada a seguir:
Tabela 1 Alturas das bands utilizadas na construo do relatrio

Band title pageHeader columnHeader detail columnFooter pageFooter lastPageFooter summary

Altura da Banda 0 Mantenha como est Mantenha como est Mantenha como est 0 Mantenha como est 0 Mantenha como est

Pgina 63

www.integrator.com.br

As outras bands no citadas na Tabela 1 sero vistas em outro momento. Ao terminar, feche a caixa de dilogo. Ateno: Voc pode configurar as propriedades de cada band selecionando-a atravs do painel Document structure e alterando no painel Properties. Neste caso, a alterao no precisa ser aplicada (alterou o valor da propriedade, tirou o foco, mudou).

Conhecendo a barra de ferramentas Text Formatting A barra de ferramentas Text Formatting possui as principais ferramentas para a formatao de um elemento de texto em um relatrio JasperReports. A Figura 4.18 ilustra a barra contendo a respectiva numerao pela ordem de exibio. Logo aps o nome e descrio de cada ferramenta.

Figura 18 Barra de ferramentas Formatao de Texto

1. Font Altera a fonte do texto encontrado no elemento. 2. Font Size Altera o tamanho da fonte do texto encontrado no elemento, em uma seleo numrica ou digitada (pressione <ENTER> para confirmar). 3. Increase Font Size Altera o tamanho da fonte do texto encontrado no elemento aumentando sempre em dois pontos (2pt). 4. Decrease Font Size Altera o tamanho da fonte do texto encontrado no elemento diminuindo sempre em dois pontos (2pt). 5. Bold Aplica negrito ao texto encontrado no elemento. 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 elemento (tachado). 9. Align Left Alinha o texto esquerda em relao rea do elemento. 10. Align Justify Alinha o texto s margens esquerda e direita da rea do elemento. 11. Align Center Alinha o texto ao centro em relao rea do elemento. 12. Align Right Alinha o texto direita em relao rea do elemento. 13. Align Top Alinha o texto na parte superior vertical em relao rea do elemento. 14. Align Vertical Axis Alinha o texto no centro vertical em relao rea do elemento. 15. Align Bottom Alinha o texto parte inferior vertical em relao rea do elemento. 16. Border Adiciona uma borda ao redor do elemento. Adicionando os textos estticos Antes de iniciar a criao do desenho, voc tem na Figura 19 como ser o resultado final.

Pgina 64

www.integrator.com.br

Figura 19 Design final do relatrio

Para criar a aparncia vista na Figura 19, os seguintes passos sero feitos: 1. Na barra de ferramentas principal, clique na ferramenta Static Text e arraste um tamanho qualquer 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 <staticText>. Alguns elementos so comuns a todos, portanto no ser apresentado aqui, por enquanto. <staticText> ... <textElement verticalAlignment="Top" rotation="None"> <font pdfFontName="Helvetica-Bold" size="24" isBold="true" isStrikeThrough="false" /> </textElement> <text><![CDATA[Produtos Cadastrados]]></text> </staticText> O sub-elemento <textElement />, de <staticText />, determina o alinhamento vertical e se h rotao de texto, atravs dos atributos verticalAlignment e rotation. Todas as configuraes feitas na fonte do texto adicionado em <font />. Este elemento, por sua vez, possui alguns atributos que determinam o comportamento da fonte, como se negrito (isBold) ou itlico (isItalic). Em <text />, tambm sub-elemento de <staticText />, o local onde o texto que ser exibido no relatrio adicionado, tambm em um bloco CDATA.

Pgina 65

www.integrator.com.br

3. Pegue a ferramenta Line e risque pouco abaixo de Produtos Cadastrados. A linha pode ser desenhada em uma reta perfeita, na horizontal, vertical ou em ngulo se pressionada a tecla <Shift> antes de arrastar. A linha segue o grid definido no relatrio. O elemento <line /> a sua representao em um relatrio JasperReports. O atributo direction est em TopDown (opo Line Direction em Top-down no iReport), Indica qual direo das duas diagonais do retngulo a linha ser representada e vista na compilao. Caso seja Bottom-up, no atributo direction voc ter BottomUp. Isso visto somente se a linha tiver uma determinada altura acima de zero. No caso do exemplo criado para o relatrio, o valor zero. <line direction="TopDown"> ... </line> 4. Adicione um novo elemento Static Text, mas desta vez na band columnHeader. Digite cdigo e altere seu tamanho para 12 e coloque em Bold. Digite Cdigo.

5. Copie e cole trs vezes. Observe que temos trs elementos estticos (Static Text), que cumpre o papel de rtulos, configurados identicamente com a palavra Cdigo. Tudo que voc deve fazer alinh-los e dimension-los para que fiquem por entre as margens do relatrio. Observao: Existem alguns detalhes interessantes de no iReport, com relao as suas caractersticas visuais. Uma delas o fato do elemento ficar na diviso de bands. Note que a sua cor, ao redor, fica vermelha. No painel Document Structure, tambm fica vermelho.

Quando voc arrasta um elemento, entra em ao a ferramenta Magnetic, ativa por padro, que auxilia no alinhamento dos elementos no relatrio ao arrast-los. Linhas guias surgem, tanto na vertical como na horizontal, dependendo da situao para auxiliar o alinhamento no arraste do elemento ou no seu dimensionamento com relao aos demais encontrados.

Figura 20 A ferramenta Magnetic em ao. Note as linhas que guiam o alinhamento.

Pgina 66

www.integrator.com.br

6. Digite os rtulos: Produto, Preo R$ e Imagem. Selecione todos os rtulos (textos estticos) de columnHeader (utilizando <Shift> pressionado).

Figura 21 Rtulos digitados no cabealho da coluna

7. Na barra de ferramentas Elements Formatting clique no cone Horizontal space: Make equal (1). Isso far com que o espaamento por entre os elementos sejam idnticos na horizontal.

Figura 22 Destaque na ferramenta Horizontal space: Make equal

8. Crie um retngulo sobre estes elementos, arrastando a ferramenta Rectangle. Faa com que este retngulo ocupe todo o tamanho da band columnHeader. No painel Properties, clique no boto com trs pontos, em Background. Na caixa de dilogo escolha uma cor e confirme. Caso deseje adicionar a mesma cor na borda, em Cor, repita o mesmo processo. Dica: Caso queira arredondar um retngulo, no iReport, clique com o direito do mouse sobre ele e no menu de contexto selecione Properties. Na guia Rectangle, em Rectangle radius, digite um nmero acima de zero.

Pgina 67

www.integrator.com.br

Figura 23 Propriedades do Retngulo de columnHeader

O retngulo representado no JasperReports pelo elemento <rectangle /> : <rectangle> ... </rectangle> 9. Clique com o direito do mouse sobre o retngulo e no menu de contexto selecione Send to Back. Alternativamente voc pode ir ao menu Format em Send to Back.

Figura 24 Item Enviar para trs do menu Formatar

Pgina 68

www.integrator.com.br

10. V at a ferramenta Frame, na barra de ferramentas principal, e arraste na band Detail de uma margem a outra, mas no na mesma altura da band. O Frame representado pelo elemento JasperReports <frame />. O Frame usado para organizar outros elementos em seu interior. <frame> ... </frame>

11. Adicione da barra de ferramentas principal, quatro campos de texto (Text Field), sobre o Frame criado. No copie e cole desta vez. Observe no painel Document structure se os Campos de texto (textField-x) esto todos dentro do frame.

Figura 25 Exibio de Text Fields no Frame

12. Selecione esses quatro campos de texto atravs do painel Document structure, clicando sobre o textField-1 e com a tecla <Shift> pressionada, clicando no ltimo, em textField-4. Na barra de ferramentas Elements Formatting, clique no cone Align Top (1) e depois em Same height (2).

Figura 26 Destaques das ferramentas para ajustar os Text Fields

13. Agora voc vai vincular cada coluna do banco de dados com o Text Field. Clique com o direito do mouse sobre o primeiro Text Field. No menu de contexto selecione o item Edit
Pgina 69

www.integrator.com.br

Expression. Na caixa de dilogo Expression editor..., apague o $F{Field} e na parte inferior, no quadro central, d um duplo clique em ProdutoID. Clique no boto Apply para confirmar. 14.

Figura 27 Vinculando o Text Field a coluna ProdutoID

15. Execute o mesmo processo para cada um dos demais campos. 16. Para o campo ProdutoID e preco, temos que fazer um ltimo ajuste. Ambos so de tipos diferentes de String e precisam ser configurados para os seus respectivos tipos de dados, possibilitando a compilao pelo engine do JasperReports. Clique novamente com o direito do mouse sobre o Text Field ProdutoID e selecione no menu de contexto o item Properties. Na caixa de dilogo, na guia Text Field, altere em Text Field Expression Class para java.lang.Integer.

Pgina 70

www.integrator.com.br

Figura 28 Propriedades do campo ProdutoID

O mesmo processo deve ser feito no campo de texto preco. Em Text Field Expression Class selecione java.lang.Double. Em Pattern selecione a mscara contida na caixa de combinao. Caso no esteja um modelo desejado, basta clicar no boto Create. Existem diversos modelos de formatao de nmeros.

Figura 29 Propriedades do campo preco com o Pattern configurado

Pgina 71

www.integrator.com.br

17. Para auto-ajustar o tamanho da band detail, d um duplo clique na linha divisria entre as bands.

Figura 30 Auto-ajustando a altura da band detail

18. Do painel Library, arraste para a band pageFooter o item Page Number. Posicione-o a direita da pgina ou ao centro, se desejar.

Figura 31 Nmero da pgina selecionado no painel Library

19.

V ao menu Build e clique no item Execute (with active connection).

Os smbolos para exibir o formato de nmeros H pouco voc ajustou o preo do seu produto a ser exibido atravs de um pattern para que houvesse a separao de casas decimais e de milhar. Esses padres podem ser configurados e no caso agora, voc vai conhecer os smbolos para nmeros
Tabela 2 Smbolos para criar os padres de exibio numricos

Smbolo 0 # .
Pgina 72

Para Nmero Nmero Nmero

Descrio Dgitos Dgitos, zeros mostrados como ausente. Separador decimal

www.integrator.com.br

, ;

Nmero Nmero Nmero

Sinal negativo (menos) Separador de milhar Separa valores positivos de negativos. Exemplo: #,##0.00;(#,##0.00), que resultar em 1.325,99 (-1.325,99). Exponenciao Multiplica por 100 e mostra o resultado em porcentagem Multiplica por 1000 e mostra o resultado por milha Smbolo de moeda Usado para caracteres especiais. Por exemplo o smbolo # 99 ser feito assim: '# '##

E % \u2030 (\u00A4) '

Nmero Prefixo ou sufixo Prefixo ou sufixo Prefixo ou sufixo Prefixo ou sufixo

Conhecendo melhor o Text Field O Text Field bem complexo como voc pde perceber sobre o que j foi desenvolvido at o momento. Este possui algumas propriedades que o tornam um elemento capaz de trazer dados de uma tabela, de uma classe ou at mesmo executar clculos. Este dinamismo graas a suas expresses suportadas, alm dos diversos tipos de dados que este elemento capaz de suportar. Temos em um Text Field as seguintes propriedades: Text Field Expression Class Especifica o tipo de retorno para a expresso dada ao campo. Neste caso voc tem objetos Java que manipulam dados para trabalhar com clculos e textos assim como tambm com informaes SQL. Caso o tipo no se encaixe nos encontrados nesta lista, voc pode utilizar java.lang.Object. Evaluation Time Determina em que fase do relatrio a expresso contida no Text Field ser elaborada. Evaluation Group Determina o tempo de avaliao do Text Field com relao ao grupo. Grupos sero abordados no Captulo 5. Stretch with overflow Quando selecionada, permite ao Text Field se adaptar ao contedo na vertical. Isso timo quando o tamanho determinado ao Text Field menor que o texto a ser exibido. Blank when null Permite exibir o campo mesmo quando a expresso retornar um objeto nulo. Pattern Possibilita a criao de um padro de exibio dos dados a serem impressos. utilizado para formatar com uma mscara desde valores monetrios at datas, horas ou nmeros cientficos. Veja detalhes sobre o Pattern Date no prximo captulo. Text Field Expression Local onde voc pode digitar a expresso do Text Field ou simplesmente exibir a expresso criada pelo Expression editor. Exibindo imagens em seu relatrio A ltima modificao que ser feita em seu relatrio manual da adio de imagens. Seu relatrio ficar similar a Figura 32 mostrada a seguir.

Pgina 73

www.integrator.com.br

Figura 32 Imagens no relatrio com dados da tabela

Para essa alterao, salve com o nome de Relatorio_Manual_Imagem. 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 no painel Properties, em Image, clique no boto com trs pontos da propriedade Image expression.

Figura 33 Adicionando Expresso da imagem

Na caixa de dilogo Expression editor, coloque entre aspas o caminho para o diretrio onde se encontra as imagens. 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 de suas imagens estarem em um diretrio chamado de imagens, voc faria a seguinte expresso: "imagens/"+$F{Imagem}

Pgina 74

www.integrator.com.br

Perceba que no foi preciso passar o caminho completo neste caso. Aplique a alterao. Ajuste a band detail e se desejar, coloque ao fim desta uma Line para criar uma separao, como no exemplo mostrado pela Figura 32. Um pouco mais sobre o elemento image O elemento image capaz de exibir objetos grficos complexos e possui o suporte a vrias extenses de imagens (GIF, PNG ou JPEG). O tipo que voc utilizou no exemplo para renderizar a imagem vinda do diretrio foi java.lang.String. Mas a imagem possui outros cinco tipos, que esto listados na Tabela 3.
Tabela 3 Image Expression Class do elemento Image

Tipo java.lang.String

Descrio O mais comum, onde uma string interpretada como um nome de arquivo, similar ao que os desenvolvedores Web fazem com imagens em diretrios guardando somente o nome do arquivo no banco de dados. Exemplos de sua expresso: "c:\\aplicativo\\images\\photo.jpg" "br/com/integrator/images/ "+$F{Image}

java.io.File

Especifica o arquivo como objeto File para ser carregado como imagem. Exemplo de sua expresso: new java.io.File("c:\\photo.jpg")

java.net.URL

Utiliza o objeto java.net.URL para determinar o caminho da imagem. Adequado a relatrios que possuem exportao para o formato HTML. Exemplo de sua expresso: new java.net.URL("http://integrator.com.br/photo.jpg")

java.io.InputStream

Utiliza o objeto java.io.InputStream para a exibio da imagem, verificando se est pronto para ler. Pode ser usado como leitura de um determinado campo do banco de dados retornando o InputStream para leitura. Exemplo de sua expresso: geraStream.getInputStream($F{Image}) onde a classe criada pelo desenvolvedor

java.awt.Image

Utiliza o objeto java.awt.Image. Sua utilizao provvel para a gerao de uma imagem dinamicamente, como ocorre em um grfico de dados. Exemplo de sua expresso: gerarObjeto.criaGrafico( )

JRRenderable
Pgina 75

Usa

interface

do

JasperReports

www.integrator.com.br

net.sf.jasperreports.engine. JRRenderable. As imagens so objetos complexos, o que no seria diferente em seu tratamento utilizando o JasperReports em um relatrio. Quando voc acessa suas propriedades, como por exemplo, direito do mouse, item Properties, voc tem uma guia chamada Image que possui diversos itens referentes a este elemento.

Figura 34 Propriedades especficas do elemento Image

Observando a Figura 34 temos alguns pontos numerados indicando comportamentos da imagem em determinada situao na gerao do relatrio. 1. Scale Image Determina como a imagem ir se adaptar a dimenso do elemento. Neste caso temos trs possibilidades: a. Clip: A dimenso da imagem no alterada. b. Fill frame: A imagem se adapta a dimenso do elemento, incluindo deformidades (padro). c. Retain shape: A imagem se adapta ao elemento mantendo as propores originais. Isso significa que a imagem ir se alterar em propores idnticas, ocorrendo s vezes o no preenchimento total determinado pela rea do elemento Image. 2. On error type Determina o que ocorrer caso a imagem no consiga ser carregada. Existem neste caso trs possibilidades: a. Error: Gera uma exceo Java, impedindo a renderizao do relatrio. o valor padro. b. Blank: A imagem no exibida, ficando em seu lugar um espao em vazio. c. Icon: Um cone impresso no lugar da imagem. 3. Vertical Alignment Determina o alinhamento vertical da imagem com relao rea desenhada do elemento. Assim como os anteriores, possui trs opes:
Pgina 76

www.integrator.com.br

a. Top: Alinha na parte superior do elemento. b. Middle: Alinha no centro do elemento. c. Bottom: Alinha na parte inferior do elemento. 4. Horizontal Alignment - Determina o alinhamento horizontal da imagem com relao rea desenhada do elemento. Assim como os anteriores, possui trs opes: a. Left: Alinha a imagem esquerda do elemento. b. Center: Alinha a imagem ao centro do elemento. c. Right: Alinha a imagem direita do elemento. 5. Is Lazy tima opo quando estamos carregando uma imagem de uma URL. Faz com que a imagem seja carregada quando o relatrio for exportado. Boa opo para relatrios que sero exportados no formato HTML. 6. Using cache - Esta opo mantm a imagem em memria para usar novamente se o elemento for reimpresso. A imagem s mantida em cache se o campo Image Expression Class for java.lang.String. 7. Evaluation Time - Define durante qual fase de criao do relatrio a expresso da imagem tem que ser processada. Ocorre que a avaliao de uma expresso pode ser feita quando o engine do JasperReports encontra o elemento durante a criao do relatrio, ou tambm pode ser adiado em alguns casos particulares, como por exemplo, sobre um determinado clculo. Existem seis possibilidades neste caso: a. Now: A expresso avaliada imediatamente. b. Report: A expresso avaliada somente no final do relatrio. c. Page: A expresso avaliada somente no final da pgina. d. Column: Avalia a expresso ao trmino da coluna. e. Group: Avalia a expresso do grupo que determinado na seleo Evaluation Group (8). f.Band: Avalia esta expresso aps a avaliao da band atual (usado para avaliar expresses de subrelatrios que retornam valores). 8. Evaluation Group Determina o tempo de avaliao de um determinado grupo para a imagem a ser exibida.

Pgina 77

www.integrator.com.br

Captulo 5
"Tudo que uma pessoa pode imaginar, outras podem tornar real." Jlio Verne Gerando relatrios com grupos, parmetros e executando por uma aplicao desktop Os relatrios mais utilizados em aplicaes, sejam desktop ou Web, com toda certeza, os dinmicos. Aqueles relatrios que transmitimos uma determinada informao e este nos trazem aqueles determinados dados. Poucas vezes tambm criamos relatrios com somente uma tabela. Isso se deve ao fato de que toda aplicao possuir sempre diversas entidades relacionais e de que os dados sempre esto espalhados por entre estas entidades. Neste captulo voc aprender a criar um relatrio mais complexo, utilizando mais de uma entidade (tabela) no desenvolvimento, agrupando informaes e filtrando-as atravs de parmetros. Por fim, aprender a chamar este relatrio utilizando uma aplicao Desktop.

O relatrio que ser desenvolvido O relatrio final ser composto por quatro tabelas, resultando em um grupo formado por pedidos efetuados com seus respectivos produtos adquiridos. A Figura 1 ilustra o resultado do relatrio.

Figura 1 Exemplo final do relatrio com grupos

Gerando o relatrio Para comear, pegue Relatorio_Agrupado. o relatrio zebrado feito no captulo anterior. Salve como

Apague os itens existentes e mantenha apenas os elementos das bands pageHeader, columnHeader e pageFooter. Em detail mantenha apenas o Frame.
Pgina 78

www.integrator.com.br

Em pageHeader altere o rtulo para Pedidos Efetuados. Quanto aos quatro rtulos encontrados na band columnHeader altere como mostra a Tabela 1 a seguir.
Tabela 1 Alteraes nos rtulos

Static Text em columnHeader staticText-2 staticText-3 staticText-4 staticText-5

Texto a ser exibido Produto Qtd. Preo Unitrio R$ Total Parcial R$

Adicione mais uma linha separadora, atravs da ferramenta Line, para ficar abaixo dos rtulos de columnHeader. Deixe a formatao dos elementos apenas para o final do relatrio construdo. A Figura 2 ilustra como ficar seu relatrio com os elementos existentes e adicionados at o momento.

Figura 2 Detalhe no painel Document structure e relatrio

Criando a query do relatrio A query utilizar quatro das cinco tabelas existentes. Para alterar a atual query, v ao menu Data e clique em Report Query. Na caixa de dilogo Report query clique no boto Query designer. Em Query designer, atravs do segundo quadro a esquerda, selecione as tabelas clientes, detalhes_pedido, produtos e pedidos atravs de um duplo clique sobre seus respectivos nomes. Esta seleo pode ser atravs do arrastar para o quadro da direita tambm, caso ache mais prtico. Com as quatro tabelas adicionadas no quadro direito, marque os seguintes campos, mostrados na Tabela 2 a seguir:

Pgina 79

www.integrator.com.br

Tabela 2 Campos selecionados das tabelas para gerar a query

Tabela pedidos clientes produtos detalhes_pedido

Campo PedidoID dataPedido nome ProdutoNome Imagem precoVenda quantidade

Veja os campos selecionados na Figura 3.

Figura 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. Confirme logo aps.

Pgina 80

www.integrator.com.br

Figura 4 Adicionando uma ordenao atravs do query designer

Nota: Aproveite e retire o * encontrado do relatrio antigo, clicando com o direito do mouse sobre ele e selecionando o item remove.

Retornando ao Report query, modifique o nome dos alias retirando os prefixos referentes aos nomes das tabelas. Confirme logo aps. Veja na Figura 5 como ficar:

Figura 5 - Detalhe dos alias dos campos encontrados na query SELECT

Criando o grupo Para que o relatrio exiba os produtos por pedido, voc tem que criar um grupo por cada campo PedidoID da tabela pedidos. V ao menu View e clique no item Report Groups. Alternativamente pode acessar Report Groups pelo cone na barra de ferramentas principal.

Pgina 81

www.integrator.com.br

Figura 6 Item Report Groups do menu View e da barra de ferramentas principal

Na caixa de dilogo clique no boto New. Na caixa de dilogo Add/modify group digite PedidoGroup em Group Name. Em Group Expression clique no cone Open the expression editor. Na caixa de dilogo Expression editor d um duplo clique em PedidoID e confirme no boto Apply. Confirmado o grupo feito pelo campo PedidoID da tabela Pedidos, confirme no boto OK de Add/modify group.

Figura 7 Detalhe do boto Open the expression editor

Podemos ter diversos grupos em um determinado relatrio. Todos eles podem ser modificados, caso haja necessidade, atravs desta caixa de dilogo. Como voc possui apenas um, se houver necessidade de alterao, selecione o grupo e clique no boto que se ativar chamado de Modify. Para confirmar, apenas feche essa caixa.
Pgina 82

www.integrator.com.br

Figura 8 Grupos existentes no relatrio

Uma alternativa para criar um grupo H outra forma de se criar um grupo. um assistente que talvez voc ache mais prtico. V ao menu Edit e clique no item New Report Group Wizard.

Figura 9 Acessando o assistente de criao de grupos no iReport

Ao surgir o assistente de grupos, na primeira etapa, em Criteria, voc determina o nome do grupo, no campo Group name e seleciona o campo que deseja usar para agrupar em Group by following report object. Em Next voc encontra a segunda etapa, que determina se voc vai criar apenas o grupo de cabealho, de rodap ou os dois (padro). Terminado o assistente, basta finalizar com o boto Finish.

Pgina 83

www.integrator.com.br

Figura 10 Assistente de grupos do iReport com duas etapas (Criteria e Details)

Ao adicionar o grupo, seja por assistente ou no, voc ver duas novas bands adicionadas ao seu design do relatrio. A band superior, chamada de PedidoGroupHeader e a inferior, PedidoGroupFooter.

Figura 11 Adio das bands PedidoGroupHeader (1) e PedidoGroupFooter (2)

Adicionando os elementos na band PedidoGroupHeader Na band PedidoGroupHeader adicione o elemento Rectangle fazendo-o ocupar todo o espao disponvel. Altere suas propriedades Background e Foreground para uma determinada cor. Adicione em pares, um ao lado do outro, trs Static Text e Text Fields respectivamente. Na Tabela 3 a seguir, voc tem as propriedades (painel Properties) de cada elemento que devero ser alterados.
Pgina 84

www.integrator.com.br

Tabela 3 Alteraes dos elementos encontrados em PedidoGroupHeader

Elemento Static Text 1 Text Field 1 Static Text 2 Text Field 2 Static Text 3 Text Field 3

Propriedade Text Bold Expression Exp. class Text Bold Expression Exp. class Text Bold Expression Exp. class Pattern

Valor Pedido N.: True (checar) $F{PedidoID} java.lang.Integer Cliente: True $F{nome} java.lang.String Data: True $F{dataPedido} java.util.Date dd/MM/yyyy

Sempre que utilizar um Pattern para representar um determinado valor, clique nos trs botes da propriedade no painel Properties. Existem diversos padres que podem ser selecionados para que os dados sejam exibidos corretamente no relatrio.

Figura 12 Caixa de dilogo Pattern editor com Date selecionado

Pgina 85

www.integrator.com.br

Mas caso no encontre exatamente o pattern que deseja utilizar para desenvolver a exibio da data, voc pode personalizar. A seguir voc tem a Tabela 4 para a criao de padres de letras para datas e horas.
Tabela 4 O Pattern para Datas e horas

Letra G y M w W D d F E a H k K h m s S z Z

Para que serve? Designa a Era Ano Ms no ano Nmero da semana no ano Nmero da semana no ms Nmero do dia no ano Dia no ms Nmero do dia da semana no ms Dia da semana AM/PM Formato de hora de 0 23 Formato de hora de 1 24 Hora em AM/PM (0 a 11) Hora em AM/PM (1 a 12) Minutos em uma hora Segundos no minuto Milissegundos Time zone Time zone

Exibe por exemplo AD 2007, 07 04, April 27 2 152 5 2 Tuesday AM 0 24 0 12 25 30 150 Pacific Standard Time, PST, GMT08:00 -0800

Dessa forma, voc pode criar vrios tipos de padres para exibir o tempo em seus relatrios. A Tabela 5 exibe alguns exemplos para melhor compreenso:

Pgina 86

www.integrator.com.br

Tabela 5 Exemplos de padres para formatos de tempo no relatrio JasperReports

Formato dd/MM/yyyy dd/MMMM/yy hh:mm hh:mm:ss dd' de 'MMMM' de 'yyyy

Como exibe (Locale Brasil) 25/04/2007 25/Abril/07 12:25 12:25:35 25 de Abril de 2007

Criando variveis com clculos no iReport Cada venda efetuada possui uma determinada quantidade e um valor que foi vendido. Como o relatrio visa no somente mostrar a quantidade e o preo, mas tambm o total parcial ganho por cada produto, voc dever fazer um clculo. A idia simples: Quantidade X Preo da Venda Para criar varivel, v ao menu View e clique em Variables. Alternativamente voc pode acessar atravs da barra de ferramentas principal o cone Report fields, variables and parameters.

Figura 13 Detalhe de Variables no menu View e do cone Report fields, variables and parameters

Ao surgir caixa de dilogo, voc possui trs guias: Fields, Variables e Parameters. Para criar uma nova varivel, coloque em Variables e clique no boto New.

Pgina 87

www.integrator.com.br

Figura 14 Adicionando uma nova varivel ao iReport

Outra forma de adicionar uma varivel com o direito do mouse sobre um dos elementos encontrados no painel Document structure. No menu de contexto selecione Add e clique sobre Variable.

Figura 15 Adicionando variveis atravs do painel Document structure

Na caixa de dilogo Add/modify variable digite MULT_QTD_PRECOVND em Variable Name. Selecione em Variable Class Type o tipo java.lang.Double. Clique no boto Open the expression editor no campo Variable Expression. No Expression editor selecione Wizards em Objects and expressions e d um duplo clique no item Multiplication (*). Este assistente ajudar voc a criar a expresso de multiplicao necessria para a varivel em questo.
Pgina 88

www.integrator.com.br

Na caixa de dilogo Arithmetic operation selecione quantidade em Value 1 e precoVenda em Value 2. Observe que ao centro, entre um valor e outro existe uma caixa de combinao contendo o smbolo de asterisco, caracterizando a multiplicao. Evidentemente existem os demais operadores aritmticos ali. Confirme no boto OK. Observe o resultado efetuado pelo assistente: new Double( ($F{quantidade}.intValue()) *($F{precoVenda}.doubleValue()) ) Clique no boto Apply para confirmar a expresso criada.

Figura 16 Criando uma expresso com operao aritmtica de multiplicao

Pgina 89

www.integrator.com.br

Retornando a caixa de dilogo Add/modify variable, voc deve ter uma configurao semelhante Figura 17 mostrada a seguir. Confirme novamente clicando no boto OK.

Figura 17 Varivel configurada completamente com a expresso definida

Observe que no painel Document structure agora existe em Variables a varivel criada. Neste mesmo painel, no caso de editar esta varivel, clique com o direito do mouse e selecione no menu de contexto o item Edit. Se precisar excluir, clique com o direito do mouse e selecione o item Delete.

Ateno: Como estamos usando um relatrio criado anteriormente com outra query, possvel que variveis indesejveis estejam ainda neste relatrio, como por exemplo voc pode ter a varivel SUM_ProdutoID_1. Esta varivel poder atrapalhar na compilao do relatrio, uma vez que ela no possui mais o campo ProdutoID, portanto faa o Delete pelo menu de contexto do painel Document structure. Adicionando os elementos na band detail Na band detail est o Frame deixado do relatrio anterior. Este frame possui um estilo com o efeito de cores alternadas, o que ser perfeito para separar os diversos produtos adquiridos em cada pedido.
Pgina 90

www.integrator.com.br

Adicione quatro Text Fields sobre o Frame da band detail. Altere suas propriedades conforme a Tabela 6 a seguir:
Tabela 6 Configurando os Text Fields da band detail

Elemento Text Field 4 Text Field 5 Text Field 6

Propriedade Expression Exp. class Expression Exp. class Expression Exp. class Pattern

Valor $F{ProdutoNome} java.lang.String $F{quantidade} java.lang.Integer $F{precoVenda} java.lang.Double #,##0.00 $V{MULT_QTD_PRECOVND} java.lang.Double #,##0.00

Text Field 7

Expression Exp. class Pattern

Observe que no ltimo Text Field houve a mudana de Field ($F{}) para Variable ($V{}). Portanto, em Expression editor, selecione Variables em Objects and expressions para selecionar a varivel MULT_QTD_PRECOVND. Ajuste os elementos e execute o relatrio - Build > Execute (with active connection) -para verificar se est sendo exibido tudo corretamente.

Figura 18 Detalhe da multiplicao da quantidade pelo preo unitrio

Pgina 91

www.integrator.com.br

Totalizando por pedido Como voc j possui o total parcial por produto comprado, agora nos resta criar o total geral do pedido. No painel Library arraste Total para a band PedidoGroupFooter.

Figura 19 Painel Library com Total selecionado

Na caixa de dilogo, em Select Object to Sum (selecione o objeto para Soma), d um duplo clique em Variables para expandir. Clique na varivel criada MULT_QTD_PRECOVND. Confirme no boto OK.

Figura 20 Selecionando a varivel MULT_QTD_PRECOVND para somar

Pelo painel Document structure SUM_MULT_QTD_PRECOVND_1.

voc

observar

que

fora

criada

varivel

Ajuste o campo na band PedidoGroupFooter e adicione um Static Text. Digite Total do Pedido na propriedade Text.
Pgina 92

www.integrator.com.br

Finalizando a aparncia do relatrio Para finalizar a aparncia do relatrio, execute os passos mostrados a seguir: 1. Aumente o tamanho da band PedidoGroupHeader e mova os Static Texts que esto na band columnHeader para baixo do retngulo; 2. Altere Band Header para 0 nas propriedades de columnHeader; 3. Adicione linhas com a ferramenta Line e alinhe os Text Fields e Static Texts para que tenham uma aparncia similar ao mostrado no incio do captulo, na Figura 1; Caso queira ter uma base, a Figura 21 demonstra o relatrio no formato final pelo design.

Figura 21 Aparncia do design do relatrio

Adicionando parmetros ao relatrio Antes de construirmos um aplicativo para chamar o relatrio, voc vai criar um parmetro para exibir um determinado pedido. Assim como adicionar variveis, voc pode ir ao menu View e clicar em Parameters, ou pela barra de ferramentas. Mas no caso vamos utilizar o painel Document structure, com o direito do mouse sobre um dos elementos, selecionando no menu de contexto Parameter em Add.

Pgina 93

www.integrator.com.br

Figura 22 Adicionando parmetros pelo painel Document structure

Na caixa de dilogo Add/modify parameter digite PAR_PEDID. Selecione java.lang.Integer em Parameter Class Type. Isso significa que at o momento voc ter um parmetro chamado PAR_PEDID com o tipo Integer. Como precisamos testar o relatrio, voc vai selecionar 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 adicion-lo no campo Parameter Description, como mostrado na Figura 23 e confirme. Esta descrio aparecer na caixa de dilogo que ser exibida quando chamar o relatrio pelo iReport.

Pgina 94

www.integrator.com.br

Figura 23 A adio do parmetro PAR_PEDID

Resta agora adicionar este parmetro query. V ao menu Data e clique na opo Report Query. Na caixa de dilogo Report query clique no boto Query Designer. Na caixa de dilogo SQL Query Designer, no quadro a direita, na tabela pedidos, clique com o boto direito do mouse sobre o campo PedidoID. No menu de contexto (veja Figura 24), selecione o item add where condition.

Figura 24 Adicionando um campo condio SQL WHERE pelo SQL Query Designer

Pgina 95

www.integrator.com.br

Ao surgir a caixa de dilogo condition.edit, a parte superior estar preenchida com o campo PedidoID. Resta apenas manter a condio de igualdade e digitar na parte inferior o parmetro criado. O parmetro comea com $P{PAR_PEDID}. Sua caixa de dilogo se parecer com a da Figura 25.

Figura 25 O parmetro adicionado a condio de pesquisa sobre o nmero de pedido

Aps a confirmao, voc ver na construo da query a condio WHERE contendo a comparao do nmero do pedido com o parmetro (Figura 26).

Figura 26 Condio WHERE configurada com o parmetro

Pgina 96

www.integrator.com.br

Voltando a caixa de dilogo Report query voc ter a sua instruo SQL com a condio WHERE contendo o PedidoID comparada ao parmetro $P{PAR_PEDID}. Confirme a caixa de dilogo. ... WHERE pedidos.`PedidoID` = $P{PAR_PEDID} ... Execute o relatrio. Observe que antes de exibir o relatrio, o iReport exibe um prompt chamado de Parameter prompt. O campo j vem preenchido com o valor padro, esperando digitar um novo nmero. Abaixo aparece o tipo aceito e a descrio, caso tenha feito, do parmetro. Mesmo que apague o parmetro padro, se precisar testar o relatrio com este nmero, clique no boto Use default.

Figura 27 Parameter prompt com o cdigo padro e a descrio abaixo

Chamando o relatrio por uma aplicao desktop Assim como criar um relatrio, muito fcil cham-lo por uma aplicao. O primeiro exemplo utilizar uma aplicao desktop simples, sem interface grfica, apenas com o intuito de ensin-lo a chamar sua aplicao. Para compilar sua aplicao, voc vai precisar de sete arquivos JARs, por enquanto, listados a seguir: 1. 2. 3. 4. 5. 6. 7.
Pgina 97

commons-beanutils-1.7.jar commons-collections-2.1.jar commons-digester-1.7.jar commons-javaflow-20060411.jar commons-logging-api-1.0.2.jar itext-1.3.1.jar jasperreports-2.0.2.jar

www.integrator.com.br

Este sete arquivos se encontram no diretrio lib do iReport. claro que como voc est trabalhando com banco de dados, haver a necessidade de ter o JAR da ponte JDBC do seu banco de dados. Como no livro estamos usando o MySQL, voc pode utilizar o que est dentro do diretrio lib do prprio iReport ou pegar um mais novo. A verso da biblioteca JDBC do MySQL no iReport antiga, e no momento em que este livro escrito, representado pelo arquivo mysql-connector-java-3.1.11-bin.jar. Caso voc queira trabalhar com uma verso mais moderna, entre no endereo a seguir: http://dev.mysql.com/downloads/ Procure pelo MySQL Connector/J. Voc ter a verso 5.0, que pode ser baixada compactada em formato .ZIP ou Tarball. Dentro do arquivo compactado, voc extrai o arquivo mysql-connectorjava-5.0.7-bin.jar.

O cdigo para executar o relatrio O cdigo para executar o relatrio e gerar sua sada uma chamada ao arquivo compilado, no caso, chamado de Relatorio_Agrupado.jasper. A seguir voc tem o cdigo na integra da classe Main.

Main.java package br.com.integrator; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.HashMap; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.view.JasperViewer; public class Main { public static void main(String[] args) { Connection conn = null; try { Pgina 98

www.integrator.com.br

//cria a conexo com o banco de dados Class.forName("com.mysql.jdbc.Driver"); String db = "jdbc:mysql://localhost:3306/relatorios"; conn = DriverManager.getConnection(db,"edson","integrator"); System.out.println("Gerando relatrio..."); HashMap<String, Integer> parameterMap = new HashMap<String, Integer>( ); //o Nome do parmetro e o valor passado ao HashMap parameterMap.put("PAR_PEDID", 10248); //pega o caminho fsico at o arquivo .jasper String arquivo = System.getProperty("user.dir") + "/src/br/com/integrator/relatorio/Relatorio_Agrupado.jasper"; //chama fillReport JasperPrint jp = JasperFillManager.fillReport(arquivo, parameterMap, conn); //exibe o relatrio com viewReport JasperViewer.viewReport(jp, false); } catch (SQLException ex) { ex.printStackTrace(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (JRException e) { e.printStackTrace(); } finally { try { if (!conn.isClosed()) { conn.close(); } System.out.println("Finalizado!"); } catch (SQLException ex) {} } Pgina 99

www.integrator.com.br

} }

O processo de gerar um relatrio no JasperReports, seja por um template ou por um arquivo Jasper, conhecido como filling. O relatrio ocupado programaticamente, por um mtodo chamado fillReport(), de net.sf.jasperreports.engine.JasperFillManager. Esta ocupao feita por trs parmetros: 1. Arquivo o arquivo colocado em um caminho fsico ou relativo, depende da situao, para que seja montado o relatrio. No caso, o caminho fsico foi obtido por um relatrio compilado; 2. Parmetro o parmetro passado um java.util.HashMap(), que define se haver um ou mais parmetros. O parmetro criado no relatrio possui um nome, e este que deve ser utilizado neste HashMap: PAR_PEDID (referindo-se a $P{PAR_PEDID}. Como se trata de uma chave string e de um valor numrico inteiro, graas ao mtodo put(Key, Value), o exemplo passa o pedido de nmero 10248 da seguinte forma: parameterMap.put("PAR_PEDID", 10248). Caso no haja parmetros, um HashMap() vazio passado ao mtodo fillReport:
JasperFillManager.fillReport(arquivo, new HashMap(), conn);

3. Conexo a conexo com o banco de dados transmitida no terceiro parmetro. Em caso de no haver conexo alguma, por no precisar de acesso a banco de dados, este terceiro parmetro recebe o mtodo JREmptyDataSource() de net.sf.jasperreports.engine.JREmptyDataSource.

Pgina 100

www.integrator.com.br

Captulo 6
Desenvolvendo Relatrios com NetBeans IDE Este captulo o instruir no desenvolvimento de relatrios JasperReports bsicos utilizando o novo plugin iReport for NetBeans, que o NetBeans IDE 6 agora possui. No momento em que este livro escrito, sua verso ainda no final. Nota: Este captulo parte integrante do livro Desenvolvendo aplicaes Web com NetBeans IDE 6, portanto, os exemplos aqui ditos so baseados em outras tabelas.

Desenvolvendo relatrios com NetBeans O iReport um bem-sucedido programa Open Source, capaz de criar visualmente os mais complexos relatrios para aplicaes Java no formato da biblioteca JasperReports. Atualmente, alm de ser um programa grfico independente, h tambm uma verso disponvel que se integra ao NetBeans IDE 6.0. Atravs de uma interface grfica e intuitiva, o desenvolvedor capaz de criar qualquer tipo de relatrio de forma simples e rpida. O iReport para NetBeans desenvolve um formato XML usado pelo JasperReports, evitando naturalmente a edio no cdigo. Neste captulo voc aprender onde obter, como instalar, criar seu relatrio e integr-lo a suas aplicaes Web conhecendo algumas caractersticas do iReport.

Obtendo e instalando o iReport para NetBeans Para obter o iReport para NetBeans, primeiramente voc precisar baixar o plugin. Para isso, o endereo oficial para baix-lo : http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=4424. Clique no boto Download. Voc obter o arquivo .nbm para instalao.

Ateno: No momento em que este livro est sendo escrito, este plugin ainda se encontra em verso BETA, sem algumas funcionalidades encontradas no iReport.

V ao menu Tools e clique no item Plugins. Na caixa de dilogo Plugins, v guia Downloaded e clique no boto Add Plugins, selecionando, atravs da caixa de dilogo o arquivo de extenso .nbm pertencente ao iReport para NetBeans. Ao faz-lo, clique no boto Install.

Pgina 101

www.integrator.com.br

Figura 1 Adio do plugin ireport-designer

Ao clicar no boto Install, a caixa de dilogo NetBeans IDE Installer surgir. Clique no boto Next para prosseguir com a instalao.

Figura 2 Incio da instalao do plugin ireport-designer

Na etapa seguinte, voc dever aceitar os termos de licena. Clique na opo I accept the terms in all of the license agreements e clique no boto Install.
Pgina 102

www.integrator.com.br

A caixa de dilogo Validation Waring surgir, dizendo que o plugin a ser instalado no foi assinado e que potencialmente inseguro. Clique em Continue.

Figura 3 Validao do plugin

Ao terminar a instalao, clique no boto Finish. Retornando a caixa de dilogo Plugins, observe, na guia Installed, que o plugin ireport-designer est instalado. Clique no boto Close para fechar a janela.

Figura 4 Plugin instalado

Pgina 103

www.integrator.com.br

Criando um relatrio com o plugin Crie um projeto, pode ser Web. Em Web Pages, por exemplo, crie um diretrio chamado relatorios. Clique com o direito neste diretrio e no menu de contexto selecione New e clique em Other. Na caixa de dilogo New File selecione JrxmlTemplate.jrxml, em Reports. Em alternativa, caso esteja aparecendo a opo JrxmlTemplate.jrxml no menu New, selecione-a. Na segunda etapa, digite o nome do seu relatrio. Se preferir seguir o livro, chame-o de relatrio e conclua o assistente.

Figura 5 Criando um documento JasperReports

A estrutura e propriedades de um relatrio JasperReports Ao finalizar o assistente, o Designer do iReport para NetBeans surgir. Alm do Design, voc possui a possibilidade de visualizar em formato XML e fazer um Preview. Um relatrio no JasperReports possui diversas sees, separadas por linhas horizontais ao qual so chamadas de Bands (bandas). O comportamento de cada Band depende da funcionalidade para a qual est preparada. Quando o relatrio junta aos dados para fazer 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. Embora as bands j estejam adicionadas e com espaamentos pr-definidos inicialmente, voc pode com o cursor, entre cada uma delas, nas linhas horizontais que as separam, e mov-las.

Pgina 104

www.integrator.com.br

Ao arrastar, voc percebe que a altura de cada band se expande, empurrando as demais, aps a alterada, para baixo ou vice-versa. Embora o desenvolvedor possa alterar a sua altura, em casos como a band detail, sua alterao implica na visibilidade e espaamento dos elementos impressos na gerao do relatrio. Porm, nem todas as bands so organizadas dinamicamente pelo contedo, como o caso de Column Footer, Page Footer e Last Page Footer.

Figura 6 Estrutura do relatrio JasperReports

Na janela Outline Window, voc encontra os parmetros (Parameters), campos da tabela da sua query (Fields), variveis pr-definidas e criadas (Variables) e as bands do relatrio. Por padro, algumas bands esto desativadas ou com sua altura no valor zero, o que a torna invisvel no design (como a band background).

Pgina 105

www.integrator.com.br

Figura 7 A janela Outline e os componentes do relatrio

Na janela Palette voc encontra os elementos de um relatrio.

Figura 8 A janela Palette e os ReportElements

Seguindo a imagem da Figura 8 voc tem as seguintes ferramentas: Chart Gera um grfico atravs de valores determinados transmitidos. Mais adiante haver um captulo exclusivamente para grficos. Image Utilizado para exibir imagens em seu relatrio. Podem ser imagens dinmicas (preenchidas por um banco de dados, por exemplo) ou estticas. 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.

Pgina 106

www.integrator.com.br

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. Ellipse Desenha elipses no relatrio. Line Em um relatrio JasperReports uma linha definida por um elemento retangular com uma linha diagonal. A linha pode ser desenhada em uma reta perfeita, na horizontal, vertical ou em ngulo se pressionada a tecla <Shift> antes de arrastar. A linha segue o grid. Static Text Utilizado para criar rtulos de relatrios. Na parte inferior, da janela Palette se encontra as Properties. Quando um elemento selecionado aparece nesta janela suas propriedades para serem alteradas.

Figura 9 A janela Properties do relatrio

Pgina 107

www.integrator.com.br

Nas propriedades do relatrio, voc possui o grupo Page size. Neste grupo voc pode definir a largura da pgina (Page width) e a altura da pgina (Page height), bem como a Orientao (Orientation). Em Orientation, temos Portrait (Retrato) ou Landscape (Paisagem). No grupo Columns voc pode definir quantas colunas seu relatrio possuir em uma pgina, no item Columns. Column Width automaticamente se altera quando voc adiciona mais de uma coluna, dividindo sem o valor em partes iguais. Column Spacing determina o espaamento entre colunas, que tambm influi em Column Width automaticamente. No grupo More... possvel especificar instrues para a impresso do relatrio. Nele se encontram: Scriptlet Class - Onde voc define um scriptlet, que nada mais que uma classe Java cujos mtodos so executados conforme so especificados os eventos durante a criao do relatrio, como o incio de uma nova pgina ou o fim de um grupo. Resource Bundle - o nome do pacote de recursos usado para internacionalizar um relatrio. o Resource Bundle do Java, onde voc define em um arquivo os textos traduzidos como rtulos. Cada linguagem corresponde a um arquivo especfico. When Resource Missing Type Se um pacote de recurso (Resource Bundle) no est disponvel, voc escolhe uma das opes na caixa de combinao. Representa o atributo whenResourceMissingType no JasperReports. Neste caso, voc tem as seguintes opes: 1. Type Null (Nulo) Imprime a string Null. Esta a opo padro. 2. Type Empty (Vazio) No imprime nada. Recebe como valor Empty no atributo whenResourceMissingType de JasperReports. 3. Type the Key (Chave) Imprime o nome chave que falta. Recebe como valor Key no atributo whenResourceMissingType de JasperReports. 4. Rise an Error (Erro) Lana uma exceo parando o processo. Recebe como valor Error no atributo whenResourceMissingType de JasperReports. Query Text Determina a query criada para o relatrio. Query Language Determina a linguagem utilizada para a instruo. Pode ser: SQL, HQL(Hibernate Query Language), XPath, EJBQL, MDX e XMLA-MDX. Properties Determina as propriedades para o objeto selecionado. Title on a new page - Quando ativa, especifica se a banda title ser impressa e em seguida criada uma nova pgina, gerando uma quebra de pgina. Summary on a new page - Esta opo similar a anterior (Title on a new page), mas com a diferena de ser a banda summary que ser impressa como a ltima pgina. Floating column footer - As bandas columnFooter so impressas por padro no fim das pginas. Se na impresso do relatrio no houver dados suficientes para preencher uma pgina, um espao em branco aparecer entre a coluna e o rodap da coluna (columnFooter). Se voc quer que o texto encontrado na banda columnFooter seja impresso logo aps a impresso da coluna, marque a opo Floating column footer. Esta opo permite forar a impresso da banda columnFooter imediatamente aps a ltima interao da banda detail e no do trmino de todas as colunas. Esta opo geralmente usada quando voc quer criar tabelas usando os elementos de relatrios. Ignore pagination - Ignora a paginao ao preencher o relatrio, impossibilitando a visualizao das demais pginas caso haja mais que uma. Quando ativa, esta opo implica at mesmo na visualizao correta dos dados caso haja mais de uma coluna. Print Order - A ordem de impresso (Print Order) determina como os dados impressos na pgina sero organizados em mais de uma coluna. O padro para a ordem de impresso Vertical. Com a ordem Vertical, primeiro os dados so impressos um embaixo do outro, passando para uma nova
Pgina 108

www.integrator.com.br

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. When no data - Quando o nmero de dados para a impresso vazio (query SQL sem dados, por exemplo), o relatrio pode ter comportamentos diferentes para apresentar a pgina ao usurio. Neste caso existem quatro opes, listadas a seguir: 1. Type No Pages (Sem Pginas) O padro. O resultado final um buffer vazio. 2. Type a Blank Page (Pginas em branco) Exibe uma pgina em branco caso no haja dados. 3. Type All Sections, No Detail (Todas as sees, nenhum detalhe) Mostra todas as sees existentes no relatrio, menos os detalhes da banda detail. 4. Type No Data section Seo sem dados. Utiliza a band noData, ou seja, voc adiciona um contedo esttico (ou dinmico sem usar o banco de dados) neste local. Caso no haja dados em uma determinada pesquisa ou sem conexo com o banco de dados, esta seo ser exibida. Language Determina a linguagem a ser utilizada no relatrio. Neste caso, somente as duas linguagens oficiais do JVM so possveis, por enquanto: Java ou Groovy. Format Factory Class - Recebe uma string com o nome da classe de formatos, habilitando o uso de datas personalizadas e formatos de nmeros. Representa o atributo formatFactoryClass de JasperReports e implementa a interface net.sf.jasperreports.engine. Exibindo o Grid Voc pode exibir o Grid para desenhar o relatrio, v ao menu Designer e clique em Show Grid. Tambm possvel alinhar os elementos dentro do relatrio se selecionar a opo Snap To Grid.

Figura 10 Exibindo o Grid no Design

Adicionando uma conexo a um relatrio em branco Para a construo deste relatrio, vamos utilizar o banco de dados livraria. V ao menu Data e clique em Connections/Data Sources, ou na barra de ferramentas Designer.

Pgina 109

www.integrator.com.br

Figura 11 Connections / Datasources no menu Data e ferramentas Designer

Na caixa de dilogo Connections / Datasources, clique no boto New. Em Datasource selecione o item NetBeans Database JDBC connection e clique no boto Next.

Figura 12 Seleo do datasource NetBeans Database JDBC connection

Na segunda etapa, selecione em Connection a conexo livraria usada neste livro e digite livraria em Name. Clique no boto Test. Se a caixa de dilogo Connection test successful! surgir, confirme e clique no boto Save.

Pgina 110

www.integrator.com.br

Figura 13 Configurando a conexo livraria

Para uma modificao da conexo, na caixa de dilogo Connections / Datasources temos o boto Modify. Basta selecionar a linha da sua conexo que deseja alterar e clicar neste boto. A caixa de dilogo de propriedades da conexo reabre. Basta alterar e salvar (Save). Em mais de uma conexo, voc tem o boto Set as default. Basta selecionar a conexo que deseja tornar padro (Default) e clicar neste boto. Observe que na caixa de dilogo a coluna Default apresenta a conexo padro com uma caixa de checagem ativa. Caso voc precise levar as configuraes da sua conexo para outra mquina, ou quer guard-la para uma futura reutilizao, clique no boto Export. A caixa de dilogo para salvar a conexo aparecer. Basta selecionar o local e dar o nome. Caso tenha mais de uma conexo, todas sero exportadas. Se precisar importar uma conexo do prprio iReport, basta clicar no boto Import. Depois de configurado, basta fechar a caixa de dilogo.

Figura 14 Conexo criada e disponvel

Pgina 111

www.integrator.com.br

Criando a query do relatrio Para criar a query do relatrio, v ao menu File e clique no item Report query. Alternativamente voc pode ir ao cone Report query, acima do design do relatrio.

Figura 15 Abrindo o Report query

Ao abrir a caixa de dilogo Report Query, clique no boto Query designer. Outra caixa de dilogo surgir, chamada de SQL Query Designer, mas desta vez para a criao da instruo SQL visual. Observe que h trs quadros na janela. O primeiro, esquerda, define a exibio da query de forma visual, separando os elementos padronizados de uma seleo de dados (SELECT, FROM, WHERE e etc.). A cada coluna de sua tabela selecionada, automaticamente a query adicionar na parte superior, em SELECT, o campo e um alias. Em FROM surgir a, ou, as tabelas que esto relacionadas para tal seleo. Voc vai selecionar, atravs do segundo quadro a esquerda, a tabela autores, dando um duplo clique sobre seu respectivo nome. Esta seleo pode ser atravs do arrastar para o quadro da direita tambm, caso ache mais prtico. Existem duas formas de voc selecionar todos os campos de uma tabela, no Query designer. A primeira ir at a tabela (no caso autores) e clicar no menu de mesmo nome, selecionando a opo select all. A segunda forma clicando com o direito do mouse e selecionando a opo add expression, no quadro da esquerda, em SELECT.

Figura 16 Adicionando uma expresso

Neste caso, voc digita o que deseja fazer, na caixa de dilogo expression.edit. Para o caso, digite * e confirme.
Pgina 112

www.integrator.com.br

Ao final, voc possuir uma configurao da sua query SELECT similar ao mostrado na Figura 17 a seguir:

Figura 17 Query desenhada na caixa de dilogo SQL Query Designer

Se voc clicar em SQL, a guia abaixo, ao lado de Builder (a atual), voc ver a query construda. Confirme no boto OK. Retornando a caixa de dilogo Report query, voc ainda pode fazer alteraes na query criada. Na parte superior da janela, existe o boto Save query, caso deseje armazenar a consulta construda para uso posterior em outro relatrio. Se esse for o caso, o carregamento de uma consulta armazenada pode ser feito atravs do boto Load query. Como a opo Automatically Retrieve Fields est selecionada, na parte inferior aparece cada campo selecionado, em uma tabela, com seus respectivos nomes e o tipo de dados em Java de cada um. importante manter selecionada esta opo, uma vez que na digitao ou alterao de uma query, possveis erros podem ser encontrados graas exibio dos campos nesta tabela. Caso esta opo no esteja selecionada, qualquer alterao na query SQL no reflete automaticamente abaixo, o que necessitar clicar no boto Read Fields. Confirme logo aps no boto OK.

Pgina 113

www.integrator.com.br

Figura 18 Query final gerada pela caixa de dilogo SQL Query Designer

Desenhando o relatrio O desenho do relatrio ser uma etapa importante para a sua compreenso prtica dos elementos existentes para se criar um e tambm sobre as bands (bandas) em sua gerao. Para comear na criao do desenho do relatrio, voc vai configurar inicialmente as bands que no sero exibidas. Com o cursor entre uma band e outra, voc deve arrastar para cima, at que ela se encontre com a superior. Isso diminui a sua altura at zero, o que exatamente o valor necessrio para esta desaparecer. As alturas de cada band para a criao do relatrio exibida conforme a Tabela 2 mostrada a seguir:
Tabela 2 Alturas das bands utilizadas na construo do relatrio

Band title pageHeader columnHeader detail columnFooter


Pgina 114

Altura da Banda 0 Mantenha como est Mantenha como est Mantenha como est 0

www.integrator.com.br

pageFooter summary

Mantenha como est Mantenha como est

Ateno: Voc pode configurar as propriedades de cada band selecionando-a atravs da janela Outline Window e alterando em Properties, no campo Band height. Neste caso, a alterao no precisa ser aplicada (alterou o valor da propriedade, confirmou com a tecla ENTER, mudou).

Adicionando os textos estticos Antes de iniciar a criao do desenho, voc tem na Figura 19 como ser o resultado final.

Figura 19 Aparncia final do relatrio no Designer

Para criar a aparncia vista na Figura 19, os seguintes passos sero feitos: 1. Na janela Palette, arraste o elemento Static Text (Label) e o dimensione a um tamanho qualquer na band pageHeader. D um duplo clique neste elemento desenhado e digite: Autores Cadastrados. Na janela Properties altere em Font Size para 24 e clique no boto Bold. Mude tambm para Center em Horizontal Alignment e para Middle em Vertical Alignment. 2. Na categoria Box properties, na janela Properties, com o label Autores Cadastrados selecionado, altere Border para 1 Point e coloque None em Left Border e Right Border. 3. Adicione um elemento Rectangle na band columnHeader e altere a cor em Background a sua escolha, na janela Properties. 4. Adicione quatro elementos Static Text sobre o elemento Rectangle adicionado. Digite ID, Nome, E-mail e Nascimento respectivamente (ver Figura 19). Altere seu tamanho a sua escolha e coloque em Bold. Para alinhar, o editor visual do iReport para NetBeans possui linhas auxiliares para o alinhamento, herdado do Sun's Visual Library API do NetBeans. 5. Na janela Outline, expanda Fields e arraste cada campo para a band detail, no Design. Olhe a posio conforme a Figura 19 apresenta. Dimensione a largura de cada componente a gosto. Observe os campos arrastados so Text Fields.

Pgina 115

www.integrator.com.br

Figura 20 Fields criados a partir da instruo SQL gerada

6. Selecione, no Design, o Text Field que representa o campo nascimento. Na janela Properties, v at o item Pattern e de um clique no boto com trs pontos ou em sua seleo, pressione Ctrl+Space. Na caixa de dilogo Text field Pattern, selecione Date em Category e em Type selecione o formato de data usado no Brasil. Observe na parte inferior, em Pattern, o formato dd/MM/yyyy.

Figura 21 Seleo do pattern para o formato de data

7. Expanda Variables, na janela Outline, e arraste para a band pageFooter e o posicione no canto direito.

Pgina 116

www.integrator.com.br

Figura 22 A varivel PAGE_NUMBER selecionada

8. Para finalizar, adicione um Static Text ao lado desta varivel PAGE_NUMBER e digite Pgina:. Clique em Preview para visualizar o relatrio. Observe que os dados encontrados na band detail sero repetidos at o seu fim, criando uma nova pgina sucessivamente at a ltima linha encontrada em sua tabela. Na parte inferior voc v o nmero da pgina.

Figura 23 Preview do relatrio criado

Em caso de erro, observe a sada encontrada na parte inferior, na janela iReport output.

Pgina 117

www.integrator.com.br

Figura 24 Sada executada pelo iReport para NetBeans na compilao e exibio do relatrio

Pgina 118

www.integrator.com.br

Apndice A
O MySQL MySQL um sistema de gerenciamento de banco de dados relacional, multiencadeado, de cdigofonte aberto e nvel corporativo. O MySQL foi desenvolvido por uma empresa de consultoria na Sucia chamada inicialmente de TcX, depois, com a popularidade do MySQL, passou a se chamar MySQL AB. Seu desenvolvimento ocorreu quando estavam precisando de um sistema de banco de dados que fosse extremamente rpido e flexvel. Foi, assim ento, que eles criaram o MySQL, que vagamente baseado em outro sistema de gerenciamento de banco de dados chamado de mSQL. O MySQL rpido, flexvel e confivel. utilizado em muitos lugares por todo o mundo.

Obs.: A propsito, parte ''AB'' do nome da companhia o acrnimo para a palavra sueca ''aktiebolag'', ou ''sociedade annima''. Ela traduzida para ''MySQL, Inc.'' De fato, MySQL Inc. e MySQL GmbH so exemplos de subsidirias da MySQL AB. Elas esto localizadas nos EUA e Alemanha, respectivamente.

O que um banco de dados relacional? Um banco no mundo de cimento e tijolo o lugar onde guardamos dinheiro. Um banco de dados tambm guarda, s que neste caso so dados. Chamamos de dados tudo que possamos inserir no computador, nmeros, letras, caracteres, imagens e etc. Um banco de dados relacional uma composio de tabelas e colunas que se relacionam entre si. Esses relacionamentos so baseados em um valor-chave que contido em cada tabela, em uma coluna. Instalando o banco de dados O MySQL tem diferentes formas de instalao quando se trata de sistemas operacionais. No caso do Windows, voc pode baixar a ltima distribuio atravs do site: http://www.mysql.com/downloads. Instalando no Windows Procure pelo formato executvel. O arquivo vem compactado no formato .zip. Descompacte e instale. A instalao, como no poderia deixar de ser, feita por um assistente. Siga os passos at a finalizao. Caso sua mquina tenha o sistema operacional Windows pertencente a famlia NT( NT, 2000 ou XP), o MySQL instalado como servio. Ento basta iniciar ou parar o servio, encontrado no Painel de Controle>Ferramentas Administrativas>Servios. Voc tambm pode utilizar o comando pelo prompt, desde que voc saiba o nome do servio do seu MySQL:

Pgina 119

www.integrator.com.br

Para iniciar o servio:


net start mysql

Para parar o servio:


net stop mysql Instalando o MySQL no Linux O MySQL Server pode ser instalado no Linux de vrias formas. A forma recomendada a que est em formato RPM. Voc deve baixar dois arquivos para instalar o MySQL na sua mquina. Esses arquivos so: MySQL-server-[verso].i386.rpm para instalar o servidor mysqld no Linux MySQL-client-[verso].i386.rpm para instalar o cliente mysql para executar os comandos no Linux. A instalao poder ser feita atravs do comando rpm, no Shell do seu Linux. Um exemplo seria: Shell> rpm ivh MySQL-server-5.0.1.i386.rpm MySQL-client-5.0.1.i386.rpm A verso RPM j vem com pr-configuraes e assim que ocorrer a instalao, para iniciar ou parar o servidor, a seguinte sintaxe poder ser feita: Shell>/etc/init.d/./mysql start para iniciar o servidor MySQL Shell>/etc/init.d/./mysql stop para parar o servidor MySQL Acessando o banco de dados MySQL No Windows Se voc estiver usando o sistema operacional Windows e utilizou a instalao padro do programa, abra o prompt de comando e digite a seqncia: cd\mysql\bin Lembrando que voc deve estar no drive em que o MySQL est instalado. Por padro voc o instala no drive C. Digitando o comando a seguir voc entra no MySQL. mysql u root -p

Pgina 120

www.integrator.com.br

Tecle ENTER e receber o pedido de senha: password Digite a senha que voc configurou na instalao e tecle ENTER novamente.

Nota: Verses mais modernas do MySQL para o sistema operacional Windows no necessitam de tantos passos para iniciar, bastando ir at o atalho encontrado no menu Iniciar do sistema e no atalho do MySQL iniciar o prompt de comando encontrado neste local. No Linux Se voc utilizou a instalao binria, em rpm (recomendado), basta abrir o terminal e digitar a seqncia: shell>mysql u root -p Se j estiver logado como root, no seu sistema operacional, no h necessidade de colocar o u root -p depois do comando mysql. Somente p caso haja uma senha. Os comandos CREATE e DROP Quando pensar nos comandos CREATE e DROP, voc deve imaginar equipamentos de terraplanagem, caminhes basculantes e guindastes, porque so ferramentas que voc utiliza para criar o seu banco de dados. Esses comandos, embora raramente utilizados, so os mais importantes. O comando CREATE H muitas maneiras diferentes de criar banco de dados no MySQL. Ao criar um banco de dados, voc normalmente ter o layout inteiro pronto. Normalmente adicionaria as tabelas imediatamente depois de criar o banco de dado, mas, teremos uma etapa por vez. A primeira etapa para criar um banco de dados no MySQL inserir o comando CREATE DATABASE nome_banco_de_dados da SQL (Structured Query Language) no monitor MySQL, onde nome_banco_de_dados o nome do banco de dados que voc est criado. No prompt de comando, no monitor do MySQL, insira o seguinte comando: mysql> CREATE DATABASE relatorios; Note que no foi utilizado acentuao e em casos de palavras compostas no insira espaos, se for o caso insira sublinhado _ .

O comando USE Depois de confirmado a criao do banco de dados, voc dever utilizar o comando USE para utilizar o banco de dados relatorios.

Pgina 121

www.integrator.com.br

USE relatorios; Um ponto importante que o MySQL no torna ativo o banco de dados que voc criou, isso deve ser implcito. O comando DROP O comando DROP semelhante ao comando CREATE. Enquanto o ltimo cria um banco de dados, o primeiro exclui. O comando DROP do SQL imperdovel. No h caixas de confirmao para ver se voc tem certeza. Este comando exclui o banco de dados e tudo o que estiver nele. s ir at o prompt de comando e no monitor do MySQL e digitar: mysql> DROP DATABASE relatorios; Isso excluir o banco de dados veculos e tudo o que estiver nele. Criando tabelas Criar tabela no MySQL uma tarefa relativamente fcil. Para se criar uma tabela basta usar a seqncia: shell>mysql u root p shell>DIGITE AQUI SUA SENHA Aps estar no monitor do MySQL digite a seguinte seqncia: mysql> CREATE DATABASE relatorios; mysql> USE relatorios; mysql> CREATE TABLE categorias ( -> CategoriaID int(11) NOT NULL auto_increment, -> categoria varchar(40) NOT NULL, -> descricao longtext, -> PRIMARY KEY (CategoriaID), -> KEY categoria (categoria) -> ) ENGINE=InnoDB O comando SHOW Assim que criada sua primeira tabela. Para ver o resultado basta digitar a seqncia:
Pgina 122

www.integrator.com.br

SHOW TABLES FROM relatorios; Para ver as colunas que existem na sua tabela digite: SHOW COLUMNS FROM categorias; Ou DESCRIBE. O comando DESCRIBE Se preferir, o comando DESCRIBE faz a mesma coisa que SHOW, mostrando as colunas existentes em sua tabela. DESCRIBE categorias; Ou simplesmente: DESC categorias;

Alterando tabelas existentes Agora que voc criou a sua tabela o que aconteceria se voc precisasse alterar algo que fez? Confira os seguintes exemplos para alterar o nome da tabela, tipo de dados e o nome da coluna: Alterando o nome da coluna Usando a clusula CHANGE voc pode alterar o nome da coluna da sua tabela: ALTER TABLE produtos CHANGE prod_nome produto_nome VARCHAR(150); Alterando o tipo de coluna O tipo pode ser alterado usando a clusula MODIFY: ALTER TABLE categorias MODIFY CategoriaID VARCHAR(200) NOT NULL; Renomeando uma tabela Renomear o nome de uma tabela, tambm se usa ALTER TABLE, mas com a clusula RENAME: ALTER TABLE produtos RENAME tb_categorias; Excluindo / adicionando colunas e tabelas Como voc pode ver quando uma coluna criada ou uma tabela estas no so escritas na pedra e podem ser alteradas facilmente. Isso tambm implica em adicionar colunas em uma tabela existente ou exclu-la.
Pgina 123

www.integrator.com.br

Eliminando tabelas e colunas O comando DROP tambm utilizado para eliminar as colunas de uma tabela. Para excluir uma tabela existente execute a seguinte seqncia: DROP TABLE categorias; Para excluir somente uma coluna execute a seguinte seqncia: ALTER TABLE categorias DROP descricao ; Isso excluir a coluna e todas as informaes que voc armazenou. Adicionando colunas O comando ADD o responsvel pela insero de uma nova coluna. ALTER TABLE categorias ADD descricao TEXT;

Adicionando colunas aps uma outra determinada O comando AFTER adiciona a nova coluna na tabela aps o nome mencionado. ALTER TABLE categorias ADD descricao TEXT AFTER categoria;

Utilizando ndices Um ndice um arquivo estruturado que facilita o acesso a dados. Isso significa que um ndice na coluna correta aumentar a velocidade de uma consulta consideravelmente. Um ndice trabalha da mesma forma que pastas com separador alfabtico em um gabinete de arquivo ele permite pular para a parte do alfabeto que voc est procurando.

Decidindo quais colunas incluir no ndice Voc deve colocar um ndice na(s) coluna(s) que utilizar com mais freqncia como filtro em suas consultas. Os ndices tambm funcionam melhor em colunas que contm dados nicos. Essa uma das razes pela as quais chaves so normalmente suas melhores escolhas para ndices. Essa tambm pode ser uma das razes que as pessoas confundem chaves e ndices. Uma chave ajuda a definir a estrutura de um banco de dados, ao passo que ndice apenas aprimora o desempenho. Um ndice pode ser composto de uma ou mais colunas. Voc tambm pode ter mais de um ndice em uma tabela.

Pgina 124

www.integrator.com.br

Criando um ndice Por padro, o MySQL cria um ndice se voc declara uma coluna como uma chave primria. No h necessidade de criar um ndice nessa coluna; caso contrrio voc teria dois ndices em uma mesma coluna. A sintaxe para criar um ndice em uma coluna: ALTER TABLE categorias ADD INDEX idx_cat(categoria);

Excluindo ndices Excluir um ndice to simples quanto criar. A sintaxe a mesma que excluir uma coluna ou uma tabela: DROP INDEX nomedoindice ON nomedatabela; Ou... ALTER TABLE nomedatabela DROP INDEX nomedoindice; Para alterar uma tabela eliminando uma chave primria, utilize a seguinte sintaxe: ALTER TABLE nomedatabela DROP PRIMARY KEY;

Nota: Se voc estiver usando uma coluna com AUTO_INCREMENT, voc no excluir a chave primria enquanto no retirar esse modificador. Tipos de tabelas O MySQL possui uma caracterstica um pouco diferente dos outros sistemas gerenciadores de banco de dados, uma vez que no MySQL possvel escolher o tipo da tabela no momento da criao. O formato de armazenamento dos dados, bem como alguns recursos do banco de dados so dependentes do tipo de tabela escolhido. A definio do tipo de tabela pode ser feita na criao da tabela, como voc pode ver a seguir: CREATE TABLE teste ( id INT NOT NULL, nome VARCHAR(30) NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM;

Pgina 125

www.integrator.com.br

No comando criado, o tipo da tabela, indicado em TYPE=MyISAM, significa que voc est criando uma tabela com o tipo MyISAM, que o padro das tabelas, caso no seja informado o TYPE. A partir da verso 4.0.18 voc pode utilizar ENGINE como sinnimo de TYPE. Os tipos mais comuns de tabelas criadas so o MyISAM (padro) e o InnoDB(suporta transaes): O tipo MyISAM Este o tipo de tabela padro do MySQL. Caso no seja informado o tipo de tabela, o MySQL criar a tabela do tipo MyISAM. O tipo de tabela padro pode ser alterado incluindo-se no arquivo de configurao, chamado de my.cnf (no Linux) ou my.ini (no Windows), a opo a seguir: default-storage-engine=INNODB

As tabelas MyISAM so armazenadas em 3 arquivos, com o mesmo nome da tabela, mas com extenses diferentes: .FRM que armazena a definio da tabela. .MYD que contm os dados. .MYI contendo os ndices. Estas tabelas so de grande desempenho para leitura, uma vez que os seus ndices so armazenados em rvores binrias balanceadas, o que prov um ganho para o acesso s informaes. O MyISAM no trabalha com transaes (commit ou rollback) e tambm no possui integridade referencial, isto , ao incluir uma chave estrangeira com alguns constraints, esta servir apenas como documentao, mas as restries no sero respeitadas pelo banco. O tipo InnoDB O tipo InnoDB do tipo de tabela transacional, desenvolvido pela InnoDBase Oy. A partir da verso 4.0 do MySQL ele passa a ser parte integrante das distribuies do MySQL. O InnoDB apresenta, alm da capacidade transacional, outros recursos que so realmente teis na utilizao de tabelas:
Integridade referencial, com implementao dos constraints SET NULL, SET DEFAULT, RESTRICT e CASCADE; Ferramenta de backup on-line (ferramenta comercial, no GPL); Lock de registro, como Oracle, DB2, etc; Nveis de isolamento; Armazenamentos de dados em tablespace.

Por se tratar de um tipo de tabela com recursos mais avanados, requer mais espao em memria e disco, alm de se apresentar, em determinadas situaes, um pouco mais lento que tabelas do tipo MyISAM. Apesar disto, o tipo InnoDB tem se mostrado extremamente rpido se comparado com outros SGBDs transacionais. Alterando o tipo de uma tabela Com o comando ALTER TABLE no possvel alterar o tipo da tabela, por isso, voc pode alterar da seguinte maneira:
Pgina 126

www.integrator.com.br

ALTER TABLE departamentos ENGINE=INNODB; Tipo de dados Como a maioria dos sistemas de gerenciamento de banco de dados relacional (Relational Database Management Systems RDBMS), o MySQL tem tipos de dados especficos de coluna. O MySQL tem vrios tipos de dados que suportam funes diferentes. Um tipo de dados a definio das informaes que uma coluna armazenar. Pode haver muitos tipos de dados em uma tabela, mas cada coluna armazenar seu prprio tipo de informaes especficas. H quatro tipos de grupos de formatos de dados. O primeiro o numrico. O segundo tipo o formato de caractere ou string. Esse formato consiste em letras e nmeros ou qualquer coisa que voc coloque entre aspas. O terceiro grupo formado por datas e horas. O tipo final uma forma de miscelnea. Ele consiste em tudo que no se encaixa em qualquer uma das outras categorias. Tipos numricos Os tipos numricos destinam-se somente a nmeros. Os diferentes tipos de nmeros ocupam uma quantidade diferente de espao na memria. Um bom exemplo voc tentando comprar um chocolate em uma loja e ao passar no caixa a voc descobre que deve pagar pela caixa inteira. Voc diz que no precisa de tudo, mas atacado e s e vendido de caixa. Se voc vai utilizar 3 nmeros, por que ocupar um espao na memria como se estivesse utilizando 100? Lembre-se: voc s deve pagar pelo que vai usar. Tabela 1 - Armazenamento numrico Nome do tipo TINYINT SMALLINT MEDIUMINT INT BIGINT FLOAT(Inteiro,Decimal) DOUBLE(Inteiro,Decimal) DECIMAL(Inteiro,Decimal) Espao na memria 1 byte 2 bytes 3 bytes 4 bytes 8 bytes 4 bytes 8 bytes O valor de bytes Inteiro + 2

Se a coluna numrica e declarada UNSIGNED, o intervalo dobra para o tipo dado. Por exemplo, se voc declara que uma coluna que UNSIGNED TINYINT, o intervalo dessa coluna de 0 a 255. Declarando dessa forma voc faz com que essa coluna tenha somente valores positivos.

Pgina 127

www.integrator.com.br

Tabela 2 -Tipos numricos Nome do tipo


TINYINT SMALLINT MEDIUMINT INT BIGINT FLOAT(Inteiro,Decimal) DOUBLE(Inteiro,Decimal) DECIMAL(Inteiro,Decimal)

Intervalo de valor
-128 a 127 -32768 a 32767 -8388608 a 83888607 -2147483648 a 2147483647 -9223372036854775808 9223372036854775807 Varia dependendo dos valores Varia dependendo dos valores Varia dependendo dos valores

Sem sinal
0 255 0 65535 0 - 16777215 0 - 4294967295 a 0 - 18446744073709550615

FLOATs, DOUBLEs e DECIMALs so tipos numricos que podem armazenar fraes. Os outros no. Utilize DECIMAL para nmeros realmente grandes. DECIMALs so armazenados de maneira diferente e no tm limites. Modificadores AUTO_INCREMENT, UNSIGNED e ZEROFILL Esses modificadores s podem ser utilizados com tipos de dados numricos. Eles utilizam operaes que somente podem ser feitas com nmeros. AUTO_INCREMENT O modificador de coluna AUTO_INCREMENT automaticamente aumenta o valor de uma coluna adicionando 1 ao valor mximo atual. Ele fornece um contador que timo para criar valores nicos. Voc tambm pode incluir um nmero. Se quiser que uma coluna AUTO_INCREMENT inicie com 9.000, por exemplo, s declarar explicitamente um ponto inicial utilizando a seguinte sintaxe:

mysql> CREATE TABLE teste ( -> id INT NOT NULL PRIMARY KEY AUTO_INCREMENT -> ) AUTO_INCREMENT=9000;

UNSIGNED UNSIGNED depois de um tipo inteiro significa que ele s pode ter um zero ou valor positivo. ZEROFILL O modificador de coluna ZEROFILL utilizado para exibir zeros esquerda de um nmero com base na largura de exibio.
Pgina 128

www.integrator.com.br

Como todos os tipos de dados numricos tm uma largura de exibio opcional, se voc declara um INT(8) ZEROFILL e o valor armazenado 23, ele ser exibido como 00000023. Para isso utilize a seguinte sintaxe: CREATE TABLE teste (id INT(4) ZEROFILL); Tipos de caractere ou de dados de string O outro grupo importante de tipo de dados so os tipos de strings ou de caractere. Uma string um conjunto de caracteres. Um tipo de string pode armazenar dados como So Paulo ou Avenida So Joo, n. 255. Qualquer valor pode ser armazenado em um tipo de dados de string. Tabela 3 - Tipos string Nome de tipo CHAR(X) VARCHAR(X) TINYTEXT TINYBLOB TEXT BLOB MEDIUMTEXT MEDIUMBLOB LONGTEXT LONGBLOB Tamanho mximo 255 bytes 255 bytes 255 bytes 255 bytes 65.535 bytes 65.535 bytes 1,6 MB 1,6 MB 4,2 GB 4,2 GB Espao armazenamento X bytes X + 1 byte X + 1 byte X + 2 bytes X + 2 bytes X + 2 bytes X + 3 bytes X + 3 bytes X + 4 bytes X + 4 bytes de

CHAR e VARCHAR Fora todos esses tipos, os tipos VARCHAR e CHAR so os mais utilizados. A diferena entre eles que o VARCHAR tem um comprimento varivel e o CHAR no. Os tipos CHAR so utilizados para comprimentos fixos. Voc utilizar esse tipo quando os valores no variam muito. Se voc declara um CHAR(10), todos os valores armazenados nessa coluna tero 10 bytes de comprimento, mesmo se ele tiver 3 bytes de comprimento. O MySQL preenche esse valor para ajustar o tamanho que foi declarado. O tipo VARCHAR faz o contrrio. Se voc declara um VARCHAR(10) e armazena um valor que tem somente 3 caracteres de comprimento, a quantidade total de espao de armazenamento de 4 bytes (o comprimento mais um). A vantagem de utilizar os tipos CHAR que as tabelas que contm esses valores fixos so processadas mais rapidamente que aquelas que so compostas pelo tipo VARCHAR. A desvantagem de utilizar o tipo CHAR o espao desperdiado. De um modo geral no se pode utilizar os dois na mesma tabela, pois quando feito o MySQL converte automaticamente uma coluna com o tipo CHAR em VARCHAR.

Pgina 129

www.integrator.com.br

A nica exceo quando voc declara uma coluna como VARCHAR(3), o MySQL converte automaticamente em CHAR(3). Isso acontece porque valores de 4 caracteres ou menores so muito pequenos para o tipo VARCHAR. TEXT e BLOB TEXT e BLOB(Binary Large Object) so tipos variveis de comprimento que podem armazenar grandes quantidades de dados. Voc utilizar esses tipos quando quiser armazenar imagens, sons ou grandes quantidades de textos, como pginas da Web ou documentos. Um bom exemplo se voc estiver querendo armazenar valores de uma <TEXTAREA> de uma sesso de comentrios em uma pgina da Web, o tipo TEXT seria uma boa escolha. Tipos variados H basicamente trs tipos variados; os tipos ENUM, SET e DATE/TIME. Tipo ENUM O tipo ENUM uma lista ENUMerada. Significa que essa coluna pode armazenar apenas um dos valores que esto declarados na lista dada. Voc pode ter at 65.535 itens em sua lista enumerada. uma boa escolha para caixas de combinao. Tipo SET O tipo SET muito parecido com o tipo ENUM. O tipo SET, como o tipo ENUM, armazena uma lista de valores. A diferena que no tipo SET, voc pode escolher mais de uma opo para armazenar. Um tipo SET pode conter at 64 itens. O tipo SET uma boa escolha para opes em uma pgina da Web em que o usurio pode escolher mais de um valor. Tipos de data e hora (DATE/TIME) O MySQL suporta vrios tipos de data e hora. Esses so mostrados na tabela a seguir: Tabela 4 - Tabela de data e hora Tipo
DATE TIME DATETIME TIMESTAMP[(F)]

Intervalo
1000-01-01 a 9999-12-31 -838:59:59 a 838:59:59

Descrio
Datas. Ser exibida como YYYYMM-DD Hora. Ser HH:MM:SS exibida como

1000-01-01 00:00:00 a Data e Hora. Ser exibida como 9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:00 Um registro de data/hora, til para relatrio de transao. O formato de exibio depende do formato de F. Um ano. Voc pode especificar 2 ou 4 formatos de dgitos. Cada um desses tem um intervalo diferente, como mostrado.

YEAR[(2 | 4)]

70-69 (1970-2069) 1901-2155

Pgina 130

www.integrator.com.br

Modificadores adicionais de coluna O MySQL tem vrias palavras-chave que modificam a maneira como uma coluna funciona. Como vimos acima, temos AUTO_INCREMENT e ZEROFILL e como eles afetam a coluna em que so utilizados. Alguns modificadores se aplicam apenas em colunas de um certo tipo de dado. Tabela 5 - Tabela de Modificadores Nome de modificador AUTO_INCREMENT BINARY DEFAULT NOT NULL NULL PRIMARY KEY UNIQUE UNSIGNED ZEROFILL Tipos aplicveis Todos os tipos INT CHAR, VARCHAR Todos, exceto BLOB, TEXT Todos os tipos Todos os tipos Todos os tipos Todos os tipos Tipos numricos Tipos numricos

O modificador BINARY faz com que os valores armazenados sejam tratados como strings binrias, fazendo-os distinguir letras maisculas e minsculas. Ao classificar ou comparar essas strings, a distino entre maisculas e minsculas ser considerada. Por padro os tipos CHAR e VARCHAR no so armazenados como binrios. O modificador DEFAULT permite especificar o valor de uma coluna se no existir um valor. Os modificadores NULL e NOT NULL especifica se na coluna deve haver um valor ou no. Por exemplo; se voc especificar a coluna como NOT NULL voc forado a colocar um valor, pois esse campo requerido. PRIMARY KEY um ndice que no deve conter valores nulos (NULL). Cada tabela deve conter uma chave primria, isso facilita uma consulta de dados. Abordarei essa questo mais adiante. O modificador UNIQUE impe a regra que todos os dados dentro da coluna declarada devem ser nicos, mas aceita valores nulos. Sintaxe bsica da SQL A primeira coisa que devemos fazer quando criamos um banco de dados e depois uma tabela e utiliz-la inserindo dados. Comando INSERT O comando INSERT INTO adiciona dados em uma tabela. A sua sintaxe :

Pgina 131

www.integrator.com.br

mysql> INSERT INTO departamentos (dept_nome) -> VALUES ('Livros'); O nome da tabela em que voc ir inserir dever ser declarada logo no incio INSIRA DENTRO nomedatabela (colunas) VALORES (valores inseridos dentro de cada coluna); importante salientar que strings ficam entre aspas ou apstrofos e valores numricos (declarados como tipo de dados numricos) no precisam de aspas ou apstrofos. Para inserir mais de um valor separe-os por vrgula: mysql> INSERT INTO nomedatabela(colunas) VALUES (valores inseridos 1), ->(valores inseridos 2), ->(e assim por diante);

Comando SELECT A instruo SELECT provavelmente a mais utilizada de todas as instrues de SQL. A instruo SELECT somente retornar os dados que so armazenados no banco de dados dentro de uma tabela. O MySQL realiza essa instruo mais rpido que qualquer outro banco de dados do mercado. A sintaxe : SELECT nomedacoluna FROM nomedatabela WHERE condies; No caso do nosso banco de dados relatorios: mysql>SELECT * FROM categorias; # o asterisco indica todas as colunas

A clusula WHERE Com a clusula WHERE voc filtra informaes de acordo com a condio passada: mysql>SELECT * FROM categorias WHERE id=3; Nesse caso foi colocada uma condio que dentre todos os registros s dever aparecer os dados ONDE a coluna id for igual 3. A clusula WHERE especifica o critrio utilizado para selecionar linhas particulares. O nico sinal igual utilizado para testar igualdade observe que isso diferente do Java e fcil se confundir. Alm da igualdade, o MySQL suporta um conjunto completo de operadores e expresses regulares. Na tabela a seguir esto listadas as mais utilizadas por voc:

Pgina 132

www.integrator.com.br

Tabela 6 - Tabela de Operadores no MySQL Operador


= > < >= <= != ou <> IN NOT IN IS NOT IS NULL BETWEEN Endereo no nulo Endereo nulo promocao is null Testa se o campo no contm um valor Testa se o campo tem valores entre um e outro

Nome
igual maior que menor que

Exemplos
autor_id = 1 Quantidade > 50 Quantidade < 50

Descrio
Testa se os dois valores so iguais Testa se um valor maior que o outro Testa se um valor menor que o outro Testa se um valor maior ou igual ao outro Testa se um valor menor ou igual ao outro Testa se um valor diferente do outro Testa se o valor est em um conjunto particular Testa se o valor no est em um conjunto particular

maior ou igual Quantidade >= 50 a menor ou igual Quantidade <= 50 a diferente de


Quantidade !=0 cidade in (So Paulo, Minas Gerais) cidade not in (So Paulo, Minas Gerais)

valor BETWEEN 200 AND 350 Quantidade entre um valor e outro

Funes que trabalham com a instruo SELECT Vistas ao longo desse livro, sejam aplicadas ou comentadas, voc tem a explicao mais detalhada a seguir:

LIMIT Funo que limita resultados exibidos na tela. SELECT * FROM tabela LIMIT 2; Limita a visualizao de 2 linhas de dados. SELECT * FROM tabela LIMIT 2,5;

Pgina 133

www.integrator.com.br

Limita a visualizao da linha 2 a linha 5 de dados. Esta instruo foi utilizada para paginao de dados.

COUNT( ) Conta a quantidade de linhas encontradas, de acordo com a coluna passada entre os parnteses. Para contar uma determinada quantidade de dados em uma coluna: SELECT COUNT(coluna) FROM tabela; Isso no reflete a quantidade total existente na tabela, pois um valor NULL pode existir. Para contar o total de linhas existentes em uma tabela, use: SELECT COUNT(*) FROM tabela; Conta quantas linhas de dados existem em todas as linhas.

Nota: Em caso de fazer a contagem em campo de valor NULL a contagem ser diferente da no valor total. ORDER BY Ordena os resultados de acordo com a coluna estabelecida (crescente ou decrescente): SELECT * FROM tabela ORDER BY coluna; Ordena de forma crescente pela coluna dada. ORDER BY ... DESC SELECT * FROM tabela ORDER BY coluna DESC; Coloca os dados selecionados em ordem decrescente pela coluna. LIKE Usado para filtrar dados em uma coluna que armazena strings (varchar, text e etc). Sua sintaxe como mostrada a seguir: mysql>SELECT * FROM clientes WHERE nome LIKE 'em%'; Neste caso pode-se fazer uma busca por apenas a inicial do valor desejado.
Pgina 134

www.integrator.com.br

O sinal de %(porcentagem) o caractere curinga que significa qualquer caractere. mysql>SELECT * FROM clientes WHERE nome LIKE '%em%'; Colocando a % no incio e no fim, com um valor no meio, possvel buscar todos os valores que contenham as letras em, seja no comeo, meio ou fim. Esta instruo foi feita para os exemplos que utilizavam um sistema de auto-completar (caixa de sugestes). Comando UPDATE O comando UPDATE permite editar os valores de dados existentes. A sintaxe para modificar os valores : UPDATE tabela SET coluna= valor WHERE coluna=valor; Atualiza os dados da coluna determinada em SET na condio passada em WHERE. Comando DELETE A instruo DELETE muito semelhante instruo SELECT. A nica diferena em vez de selecionar registros para visualizar, essa instruo exclui esses registros. A instruo DELETE tem a seguinte sintaxe: DELETE FROM tabela WHERE coluna=valor; Trabalhando com Junes As junes so uma parte integrante de um banco de dados relacional. As junes permitem ao usurio de banco de dados tirar proveito dos relacionamentos que foram desenvolvidos na fase do projeto do banco de dados. Uma JUNO o termo utilizado para descrever o ato em que uma ou mais tabelas so unidas entre si para recuperar dados necessrios com base nos relacionamentos que so compartilhados entre elas. Criando uma juno com INNER JOIN A seguinte sintaxe cria uma juno: SELECT tabela1.coluna, tabela2.coluna FROM tabela1 INNER tabela1.coluna_de_valor_identico=tabela2.coluna_de_valor_identico; INNER JOINs so provavelmente as mais comuns de todas as junes. Uma INNER JOIN significa que todos que todos os registros que esto sem correspondncia so descartados. Somente as linhas correspondidas sero exibidas no conjunto de resultados. Os dados aparecem na ordem em que voc especifica. JOIN tabela2 on

Pgina 135

www.integrator.com.br

Chaves variadas do MySQL O que uma chave? Uma chave em uma tabela em um banco de dados fornece um meio de localizar rapidamente informaes especficas. Embora uma chave no precise significar qualquer coisa para o usurio humano do banco de dados, as chaves so uma parte vital da arquitetura de banco de dados e pode influenciar significativamente o desempenho. Como as chaves funcionam Uma chave existe como uma tabela extra no banco de dados, embora pertena sua tabela pai. Ela ocupa espao fsico no disco rgido (ou outras reas de armazenamento) do banco de dados. Pode ser to grande quanto a tabela principal e, teoricamente, at maior. Voc define a chave para se relacionar com uma ou vrias colunas em uma tabela especfica. Como os dados em uma chave so totalmente derivados da tabela, voc pode eliminar e recriar uma chave sem qualquer perda de dados. Benefcios de usar uma chave A utilizao adequada de chaves pode aprimorar significativamente o desempenho do banco de dados. Para utilizar a analogia de um ndice de livro, considere o pouco nmero de pginas que necessrio no ndice de um livro para dar viso rpida dos temas importantes. Compare quanto tempo voc levaria se estivesse pesquisando pelo volume, pgina por pgina. Suporte de chaves do MySQL O MySQL suporta os seguintes comandos para criar chaves nas tabelas existentes: ALTER TABLE nome_tabela ADD (KEY | INDEX) nome_do_ndice (nome_da_coluna [,...]); ALTER TABLE nome_tabela ADD UNIQUE nome_do_ndice (nome_da_coluna[,...]); ALTER TABLE nome_tabela ADD PRIMARY KEY nome_do_ndice (nome_da_coluna[,...]); Observe que no MySQL, chave e ndice so sinnimos. Esses so os formatos preferidos para adicionar chaves a tabelas existentes. Para compatibilidade com outras implementaes de SQL, o MySQL tambm suporta os seguintes: CREATE INDEX nome_do_ndice ON nome_tabela (nome_da_coluna[,...]); CREATE UNIQUE INDEX [nome_do_ndice] ON nome_tabela (nome_da_coluna[,...]); CREATE PRIMARY KEY ON nome_tabela (nome_da_coluna,...); Voc pode definir as chaves quando cria uma tabela:
Pgina 136

www.integrator.com.br

CREATE TABLE nome_da_tabela (nome_da_coluna tipo_de_campo [NULL | NOT NULL], KEY col_index (nome_da_coluna)); Chaves primrias (Primary Key) Uma chave primria semelhante em princpio a uma chave nica, seus dados devem ser nicos, mas a chave primria de uma tabela tem um status mais privilegiado. Apenas uma chave primria pode existir para cada tabela e seus valores de campo nunca podem ser nulos. Uma chave primria geralmente utilizada como um link estrutural no banco de dados, definindo o relacionamento entre as tabelas diferentes. Sempre que quiser unir uma tabela a outra, voc deve ter a chave primria dessa tabela. O MySQL no requer que voc especifique que a coluna em que estiver a chave primria seja NOT NULL(no nula) *, mas porm se tentar colocar um valor idntico na coluna chave, esta retornar um erro que no pode haver duplicao.

* Este caso somente para chaves primrias em tabelas cuja coluna selecionada seja INT ou semelhante. Em casos de ser VARCHAR, CHAR e etc, exigida a utilizao do NOT NULL. Caso isso no ocorra, voc ter como resultado um erro. Se desejar que seja nulo o campo, coloque uma chave UNIQUE. Chaves estrangeiras (Foreign Key) As chaves estrangeiras no so atualmente suportadas no MySQL pelas tabelas do tipo MyIsam. A mais usada e recomenda para transaes so as tabelas do tipo InnoDB. A seguir voc tem o comando necessrio para criar uma chave estrangeira no seu banco de dados: ALTER TABLE produtos ADD CONSTRAINT fk_categoria FOREIGN KEY (CategoriaID) REFERENCES categorias (CategoriaID) ON DELETE CASCADE ON UPDATE CASCADE; Excluindo uma chave estrangeira Para excluir uma chave estrangeira, use o comando: ALTER TABLE produtos DROP FOREIGN KEY fk_ categoria;

Administrando o MySQL Um sistema de MySQL pode ter muitos usurios. O usurio root geralmente deve ser utilizado somente para propsitos de administrao, por razes de segurana. Para cada usurio que precisar utilizar o sistema, voc precisar configurar uma conta e senha. No obrigatrio configurar senhas para usurios, mas recomendo que voc configure senhas para todos os usurios que forem criados. Entendendo o sistema de privilgios do MySQL O MySQL suporta um sofisticado sistema de privilgios. Um privilgio um direito que um usurio tem para realizar uma ao particular em um objeto particular.
Pgina 137

www.integrator.com.br

Quando voc cria um usurio no MySQL, voc concede a ele um conjunto de privilgios para especificar o que ele pode e no pode fazer dentro do sistema. Configurando usurios Os comandos GRANT e REVOKE so utilizados para fornecer e retirar direitos dos usurios do MySQL. Ele pode ser concedido nos seguintes nveis: Global Banco de dados Tabela Coluna O comando para criar um usurio com privilgios como mostrado a seguir: GRANT privilgios [colunas] ON item TO nome_do_usuario [IDENTIFIED BY senha] [WITH GRANT OPTION] As clusulas entre colchetes so opcionais. Para conceder privilgios ao um usurio no banco livraria, voc deve criar um usurio com os seguintes privilgios: mysql> grant all -> on relatorios.* -> to edson identified by 'integrator'; Com isso voc concede todos os privilgios de manipulao do banco de dados livraria somente ao usurio edson, com a senha integrator. Confirmando o novo usurio Para confirmar a criao do novo usurio, voc deve executar o comando a seguir: flush privileges;

Pgina 138

www.integrator.com.br

Revogando privilgios Para revogar esse privilgio voc deve fazer o seguinte comando: mysql> revoke all -> on relatorios.* -> from edson;

Obtendo informaes com SHOW Se voc desejar visualizar todos os privilgios que um usurio tem, execute o seguinte comando: SHOW GRANTS FOR edson; Para visualizar todos os usurios existentes no seu MySQL execute; SHOW GRANTS;

Pgina 139

www.integrator.com.br

Apndice B
Contexto de desenvolvimento Web em Java Para desenvolver os exemplos das aplicaes Web escritas em Java, voc primeiro precisa criar um contexto de desenvolvimento de sua aplicao Web, para que tudo funcione perfeitamente. Crie um diretrio chamado de Site no local que desejar. Para que voc no tenha dvidas, se voc estiver usando o Windows crie, por exemplo, no drive C. No Linux pode ser criado dentro do diretrio home do seu usurio. Dentro desse diretrio, crie os demais diretrios como apresentados: Site/ WEB-INF/ classes/ lib/ Note que dentro do diretrio Site existe o diretrio WEB-INF. No diretrio WEB-INF, existem dois diretrios, um chamado de classes e outro de lib. No diretrio WEB-INF No diretrio WEB-INF adicione o arquivo web.xml: web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Texto mostrado no manager</display-name> <description> Descritor do contexto de desenvolvimento. </description> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> Pgina 140

www.integrator.com.br

O arquivo WEB-INF/web.xml o descritor de contexto de uma aplicao web, segundo a especificao Java Servlet/J2EE. As informaes nele contidas so as configuraes especficas da aplicao. Instalando uma aplicao Web em outro local Talvez voc queira criar uma aplicao Web em um caminho diferente do habitual webapps do Tomcat. Nesse caso, voc dever configurar um arquivo de contexto, contendo o nome da aplicao e o caminho onde se encontra: context.xml <Context path="/Site" docBase="C:\Site" debug="0"> <!-- Link to the user database we will get roles from --> <ResourceLink name="users" global="UserDatabase" type="org.apache.catalina.UserDatabase"/> </Context>

No atributo docBase voc coloca o caminho fsico da sua aplicao Web, no Windows, como mostrado a seguir ou no Linux, por exemplo: docBase="/var/www/Site". No URL do navegador, digite como mostrado a seguir, nos exemplos: No Windows
http://localhost/manager/deploy?path=/Site&config=file:/C:/Site/context.x ml

No Linux
http://localhost/manager/deploy?path=/Site&config=file:/home/Site/context. xml

A mensagem a seguir ser mostrada no navegador, o que indicar que a aplicao foi configurada com sucesso: OK - Deployed application at context path /Site

Pgina 141

www.integrator.com.br

Apndice C
Trabalhando com Datas Um problema comum no desenvolvimento de aplicaes Web a formatao de Datas, que pela complexidade da mesma, contm diversas formas de trabalho. Para formatar a representao de um objeto Date voc pode utilizar a classe SimpleDateFormat. Essa classe fornece um conjunto de caracteres padro para formatao do objeto Date. Veja a seguir uma tabela retirada da documentao do Java onde cada campo de uma data tem uma representao String. Tabela 1 Smbolo G y M d h H m s S E D F w W a k K z Significado Era ano Ms no ano Dia no ms Hora em am/pm (1~12) Hora em um dia (0~23) minute in hour segundos milissegundos Dia em um ano Dia da semana no ms Semana no ano Semana no ms am/pm Hora (1~24) Hora em am/pm (0~11) time zone Apresentao (Text) (Number) (Number) (Number) 12 (Number) 0 (Number) (Number) (Number) (Number) (Number) (Number) (Number) (Text) (Number) (Number) 0 (Text) Pacific Standard Time 30 55 978 Tuesday 189 2 (2nd Wed in July) 27 2 PM 24 Exemplo AD 1996 10

(Text & Number) July & 07

Dia em uma semana (Text)

Para melhor entendimento, voc tem a seguir alguns exemplos de formataes de datas: dd/MM/yy = 10/09/06 dd/MMM/yyyy = 23/MAI/2006

Pgina 142

www.integrator.com.br

At 3 dgitos voc tem um valor resumido, acima de quatro a representao de strings sem abreviao. Neste exemplo abaixo voc pode conferir como simples utilizar o objeto SimpleDateFormat para melhorar a sada dos seus programas Java: Date hoje = new Date( ); SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); System.out.println("A data formatada : "+ formato.format(hoje)); formato = new SimpleDateFormat("EEEE, dd de MMMM de yyyy"); System.out.println("Hoje : "+ formato.format(hoje)); A sada da execuo deste programa : A data de hoje : Sun Sep 10 22:56:13 GMT-03:00 2006 A data formatada : 10/09/2006 Hoje : Domingo, 10 de Setembro de 2006 A classe SimpleDate pode ser usada para formatar a representao de um objeto Date para a data do seu usurio. O trecho de cdigo a seguir apresenta a utilizao dessa classe: Locale brasil = new Locale ("pt","BR"); DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, brasil); System.out.println("Brasil: "+ df.format(hoje)); df = DateFormat.getDateInstance(DateFormat.LONG, Locale.US); System.out.println("USA: "+ df.format(hoje)); Aps criar um objeto Locale que representa o Brasil, voc pode instanciar um objeto DateFormat e utilizar os mtodos para formatao representando a localidade.

Pgina 143

www.integrator.com.br

Apndice D O Tomcat Tomcat tem suas origens no incio da tecnologia servlet. A Sun Microsystems criou o primeiro continer servlet, o Java Web Server, para demonstrar a tecnologia, mas no era um servidor robusto, para uso na Web como se necessitava. Ao mesmo tempo, o Apache Software Foundation (ASF) criou JServ, um servlet engine que integrava com o servidor Web Apache. Em 1999, a Sun Microsystems doou o cdigo do Java Web Server para o ASF, e os dois projetos se fundiram para criar o Tomcat. A verso 3.x foi primeira da srie Tomcat e teve a descendncia direta do cdigo original que a Sun Microsystems doou ao ASF. Em 2001, o ASF liberou a verso 4.0 do Tomcat, que era uma completa arquitetura redesenhada do Tomcat no qual teve um novo cdigo base. A srie Tomcat, verso 4.x um RI (reference implementation) de especificaes Servlet 2.3 e JSP 1.2. A verso Tomcat 6.0.x a atual e a RI de especificaes Servlet 2.5 e JSP 2.1, no momento em que este livro foi escrito. Tecnicamente, o Tomcat um Container Web, mas tem a capacidade de atuar tambm como servidor Web/HTTP assim como pode funcionar integrado a um servidor web dedicado como o Apache ou o Microsoft IIS. O Tomcat, porm, no implementa at o momento um container EJB.

Servlets e JSP J2SE (Standard Edition) planejado para desenvolvimento do lado cliente e pode ser usada para desenvolver as tradicionais aplicaes baseadas em cliente/servidor. As aplicaes para Web esto aladas em Java EE (Enterprise Edition). A implementao de aplicaes Web usando o padro Java EE bastante complexa. Servlets e JSP so duas tecnologias desenvolvidas pela Sun Microsystems para desenvolvimento de aplicaes Web a partir de componentes Java que executem do lado servidor.

Instalando o Tomcat Para instalar o Tomcat, inicialmente, voc dever ter tambm instalado o Java em sua mquina. Se voc apenas for rodar aplicaes no Tomcat, basta ter o JRE (mquina virtual do Java) instalado. Mas se voc desenvolve, o ambiente JDK dever estar instalado. O Tomcat 6 que focado no J2SE 5.0 ou superior, com uma nova modelagem de vrios componentes estruturais visando maior desempenho, estabilidade e facilidade de manuteno. Para quem utiliza o J2SE 1.4, o Tomcat 5.0.x ainda o mais recomendado.

Baixando e instalando o Apache Tomcat Instalar o Tomcat simples como no caso do JDK. Voc dever baixar a verso desejada no site. Entre no link http://tomcat.apache.org/download-60.cgi e selecione a distribuio binria desejada.

Pgina 144

www.integrator.com.br

No Windows Existe mais de uma forma de instalar o Tomcat na sua mquina, em Windows. Em Binary Distributions, na pgina, voc tem o item Core, que permite selecionar o arquivo compactado "zipado", "tarball" ou como Windows Executable. Como executvel voc ter a instalao em forma de assistente. No caso, iremos dar preferncia ao arquivo compactado, baixando para o Windows no formato zip. Descompacte-o e coloque-o em um diretrio chamado de Tomcat, tornando assim fcil o seu acesso ao diretrio. Se voc der preferncia pela instalao por assistente, voc poder rod-lo como servio ou no, dependendo de voc.

Adicionando a varivel CATALINA_HOME %CATALINA_HOME% o diretrio onde voc escolheu para instalar o seu Tomcat. No Windows, em verso NT (2000, XP e Vista), entre no Painel de controle e abra Sistema: Iniciar > Configuraes > Painel de Controle > Sistema Crie uma varivel chamada de CATALINA_HOME e coloque em seu valor o caminho da instalao. No Windows 9x, voc deve entrar no arquivo autoexec.bat e adicionar a linha: set CATALINA_HOME=C:\tomcat Lembrando que o caminho apresentado o local onde eu escolhi para instalao do Tomcat. No Linux No Linux voc tem a possibilidade de instalao como no Windows, baixando o arquivo com extenso tar.gz (tarball) ou .zip se assim preferir. Descompacte o arquivo com o seguinte comando, no diretrio onde se encontra o arquivo baixado: shell# tar xpvzf apache-tomcat-6.0.14.tar.gz /usr/local/tomcat Aps a descompactao, no arquivo /etc/profile adicione a varivel CATALINA_HOME: CATALINA_HOME=/usr/local/tomcat export CATALINA_HOME Iniciando o Tomcat Aps instalar o Tomcat, voc dever inici-lo. Embora existam dois sistemas operacionais sendo abordados, a inicializao no caso ser idntica, desde que no haja a instalao por assistente no Windows.

Pgina 145

www.integrator.com.br

No Windows Para iniciar no Windows, v at o diretrio %CATALINA_HOME% e no diretrio bin d um duplo clique no arquivo startup.bat. Se voc quiser rodar pelo prompt de comando, execute a seguinte linha: %CATALINA_HOME%\bin\startup.bat No Linux Para o Linux, voc deve iniciar atravs do comando: shell # $CATALINA_HOME/bin/startup.sh Parando o Tomcat Assim como voc inicia, voc tambm pode parar o Tomcat. No Windows Para parar o Tomcat no Windows use o comando: %CATALINA_HOME%\bin\shutdown.bat Se preferir, voc pode ir at onde o Tomcat est instalado e no diretrio bin dar um duplo clique no arquivo shutdown.bat. No Linux Pare o Tomcat com o comando a seguir no Linux: $CATALINA_HOME/bin/shutdown.sh O Tomcat em operao Depois de instalado e iniciado o Tomcat, voc pode v-lo trabalhando abrindo um navegador e digitando em sua barra de endereos: http://localhost:8080

Pgina 146

www.integrator.com.br

O que voc encontra no livro Dominando Relatrios JasperReports com iReport


Este e-book um pequeno resumo do livro Dominando Relatrios JasperReports com iReport. No livro, como chamar seu relatrio por sua aplicao Web, seja usando NetBeans IDE ou Eclipse. Alm disso, h tambm como utilizar o framework JavaServer Faces para chamar o relatrio e resoluo de problemas.

Livro Dominando Relatrios JasperReports com iReport

Sub-relatrios Os sub-relatrios so relatrios dentro de outros, tambm conhecidos como relatrios do tipo mestre-detalhe. A idia bsica para a criao de um relatrio mestre-detalhe ter duas entidades relacionadas, onde a primeira possui um cadastro principal da qual a outra depende e origina-se diversos outros cadastros. Estes relatrios, embora possam parecer complexos, so simples de desenvolver em JasperReports, principalmente se utilizada a ferramenta iReport. Neste captulo voc aprender a criar sub-relatrios em seu relatrio usando o iReport e acesso a dados, conhecer a band noData na prtica e depois o chamar atravs de uma aplicao Web com JSP e Servlets.

O relatrio mestre-detalhe que ser desenvolvido O relatrio final, 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 sub-relatrio. A Figura 1 ilustra o resultado final do relatrio.

Pgina 147

www.integrator.com.br

Figura 1 Exemplo final do relatrio mestre-detalhe

Figura 2 Exibio do relatrio gerado em PDF

Pgina 148

www.integrator.com.br

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

Figura 3 Seleo do item Hibernate connection

Na segunda etapa, digite o nome de sua conexo em Name e clique no boto Test logo aps.

Figura 4 Criando e testando a conexo com o Hibernate

Pgina 149

www.integrator.com.br

O primeiro relatrio utilizando o Hibernate mostrado na Figura 5.

Figura 5 Resultado final do primeiro relatrio com Hibernate

Sub-relatrio com Hibernate O segundo relatrio utilizando o Hibernate mostrado na Figura 6.

Figura 6 Relatrio mestre-detalhe gerado com o uso do Hibernate

Relatrios usando EJB QL O uso de Java Persistence API se tornou muito intenso no ltimo ano, e como no poderia deixar de ser, o JasperReports possui suporte a esta especificao atravs de EJB QL. Esta linguagem de queries muito similar 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 (JavaBeans Query Language).
Pgina 150

www.integrator.com.br

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

Figura 7 Criando e testando a conexo EJBQL

Desenvolvendo o relatrio O relatrio que ser criado com sub-relatrio.

Figura 8 Design do relatrio mestre-detalhe feito para utilizar EJBQL

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

Pgina 151

www.integrator.com.br

Figura 9 Exibio final do relatrio mestre

Exemplo da JP-QL utilizada:

Figura 10 Uma query com apenas alguns objetos/valores

Gerando relatrios com outras fontes de dados O JasperReports rico no desenvolvimento de relatrios e fornece ao desenvolvedor uma gama de outras fontes de dados acessveis para que o mesmo possa criar relatrios.

Pgina 152

www.integrator.com.br

Diversos sistemas costumam exportar dados em diversos tipos, 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.

Figura 11 Selecionando XML file data source

O design do relatrio com XML mostrado na Figura 12.

Figura 12 O design do relatrio usando XML

O resultado pode ser visto na Figura 13.

Pgina 153

www.integrator.com.br

Figura 13 Resultado compilado do relatrio utilizando XML

Relatrio utilizando CVS:

Figura 14 Definindo os campos de um arquivo CSV

Relatrio sem Fonte de dados existente.

Pgina 154

www.integrator.com.br

Figura 15 Configurada e testada a conexo JavaBeans como fonte de dados

O relatrio simples e o design proposto est na Figura 16 mostrado a seguir.

Figura 16 Design montado com o JavaBean Produto

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 se manipular e muito similar a linguagens de scripting, Groovy um pouco mais complexo. Aplicaes com Groovy podem ser pr-compiladas em bytecodes Java, para ser integrada suas aplicaes Java.
Pgina 155

www.integrator.com.br

Graas a um Java Specification Request (JSR-241), Groovy se tornou a segunda linguagem oficial padro do Java Virtual Machine (JVM), depois de Java, claro. Desde a verso 0.6.6 do JasperReports, h suporte a linguagem Groovy. Com isso, quem ganha o desenvolvedor, que tem em suas mos uma maior simplicidade no desenvolvimento de expresses em seus relatrios. Por outro lado, h tambm uma aproximao de no-desenvolvedores, onde a utilizao do iReport como ferramenta de relatrios passa a ser mais amigvel em BI (Business Intelligence). Neste captulo voc vai construir um relatrio utilizando Groovy, trabalhando com expresses e aprender como rodar o relatrio criado em suas aplicaes tambm usando Groovy. O resultado final do relatrio utilizando a linguagem Groovy mostrada a seguir, na Figura 17.

Figura 17 Resultado final do relatrio com a linguagem Groovy

Criando grficos e subdataset em seus relatrios Como todo bom relatrio, no poderia faltar os grficos. Simples e eficazes, os grficos exibem uma situao visualmente impactante, possibilitando um entendimento muito maior, e mais rico, do que apenas nmeros e textos. O JasperReports possui um suporte a vrios formatos de grficos, facilitando o desenvolvimento do relatrio. Neste captulo ser apresentado como criar grficos em um relatrio JasperReports usando o iReport, alm de aprender a trabalhar com consultas diferentes no mesmo relatrio, o que chamamos de Subdataset.

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

Pgina 156

www.integrator.com.br

Figura 18 Relatrio gerado completo

Subdatasets Subdatasets so fontes de dados secundrias que so adicionadas dentro de um relatrio. So utilizadas at o momento para criar grficos em relatrios cuja query principal est focada exclusivamente em alimentar o relatrio. Esta fonte de dados secundria tem seus prprios parmetros, variveis, fields, outro data source, alm de sua prpria instruo SQL (HQL, EJBQL, etc.). Seu conceito similar ao de sub-relatrios, onde a fonte de dados pode ser agrupada em um ou mais grupos, o que significa que podemos ter mais de um subdataset em um nico relatrio. Utilizando Grficos com Subdatasets em um relatrio com Hibernate Para criar o mesmo exemplo, mas utilizando o Hibernate, os passos so muito similares, mas com a diferena das entidades. Internacionalizando relatrios e imagens de fundo Internacionalizar aplicaes atualmente uma situao muito comum entre os desenvolvedores. No seria diferente no caso do desenvolvimento de relatrios. O JasperReports introduziu esta caracterstica a partir da verso 0.6.2 e desde ento seu suporte foi acrescentado ao iReport, facilitando mais ainda seu desenvolvimento. Outra situao comum a criao de relatrios com imagens de fundo, no estilo marca dgua, onde muitas empresas a colocam para exibir sua logo marca.
Pgina 157

www.integrator.com.br

Este captulo ensinar voc a criar relatrios internacionalizados e tambm a adicionar imagens de fundo em seus relatrios.

Figura 19 Relatrio com a exibio a internacionalizao aplicada

Figura 20 Execuo final do relatrio no navegador dentro do Eclipse IDE

Pgina 158

www.integrator.com.br

Crosstabs Crosstabs (cross-tabulation), no JasperReports, so tabelas cruzadas, muito comuns no desenvolvimento de relatrios com a utilizao de planilhas eletrnicas, tambm conhecidas por tabelas dinmicas ou tabelas de referncia 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 uso do 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.

Figura 21 Detalhes da guia crosstab

Figura 22 Resultado das alteraes na execuo do relatrio

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

Pgina 159

www.integrator.com.br

Figura 23 Resultado final na execuo do relatrio

Criando um Crosstab com Subdataset Para este exemplo, voc precisar criar um novo relatrio. Vamos partir da hiptese que voc deseja visualizar um relatrio contendo as compras efetuadas por cada cliente, agrupados por produto.

Figura 24 Relatrio contendo Crosstab e Subdataset

Pgina 160

www.integrator.com.br

Outras caractersticas da gerao de relatrios Gerar relatrio JasperReports com o iReport uma tarefa muito fcil, como voc vem acompanhando ao longo do livro. Neste captulo voc conhecer algumas outras caractersticas da ferramenta iReport, que no foram apresentadas at o momento, como traduo do programa, compilao de relatrios grandes, formatao tanto com estilos prprios do JasperReports como em HTML, alm da resoluo de problemas comuns na construo de relatrios. Tratando relatrios grandes O virtualizador de relatrios uma forma de minimizar a criao de relatrios JasperReports grandes. Esta opo ajuda a minimizar a limitao fsica, economizando na memria usada e empregando outras formas avaliadas (geralmente o disco rgido) para salvar pginas completas durante a impresso de um relatrio. Isso evita que relatrios grandes recebam a mensagem de exceo Out of Memory.

Exibindo somente um grupo por pgina Voc aprendeu a criar grupos e percebeu o quanto isto simples. Mas talvez voc queira exibir cada grupo por pgina.

Reiniciando o nmero de pginas Caso o seu grupo seja efetuado por datas, por exemplo, talvez voc queira reiniciar o nmero de pginas e total de pginas a cada novo grupo.

Alinhamento de objetos no design do relatrio O iReport possui uma caracterstica comum em ferramentas de desenho, ao qual podemos utilizar linhas guias (guidelines), para colocar os elementos dentro do relatrio perfeitamente alinhados s rguas.

Formatao entre textos no seu relatrio Em alguns casos, voc vai precisar embeber em um texto uma formatao de cor, tamanho, negrito ou at mesmo sublinhado.

Pgina 161

www.integrator.com.br

Figura 25 Campos no Design e na execuo do relatrio

Apndice A - Exportando para outros formatos Este apndice uma referncia sobre a API do JasperReports na exportao para outros formatos atravs de sua aplicao, seja desktop ou Web. Os formatos discutidos aqui no so todos os suportados para exportao pelo JasperReports, mas so os principais: RTF, XLS, CSV, HTML e ODF.

Pgina 162

www.integrator.com.br

Você também pode gostar