Desenvolvendo Relatórios
Profissionais com iReport™
para NetBeans IDE
filho do Ângelo e de sua esposa Erica, grandes amigos e agora pais.
Primeiramente quero agradecer a minha família, pelo apoio e compreen-são da minha ausência.
Agradeço o apoio da Editora Ciência Moderna, em especial ao editor Pau-lo André P. Marques, pePau-lo incentivo e crédito em mais este livro.
Um agradecimento especial ao JUG Leader e Founding Java Champion, Daniel deOliveira, pelo apoio que uma comunidade de grande peso como o DFJUG tem sobre meu trabalho.
Nem bem havia feito um ano que meu primeiro livro sobre relatórios JasperRe-ports usando iReport havia sido iniciado e, acompanhando o site oficial da ferra-menta, recebo uma excelente notícia: o iReport irá rodar sobre o NetBeans IDE.
Na prática, isso significa que você, como desenvolvedor, poderá criar, testar e utilizar seus relatórios diretamente na IDE, sem a necessidade de abrir outro aplica-tivo. De fato, isso é um grande salto para as ferramentas gratuitas, que anos atrás, não tinham essa característica.
Embora o iReport permaneça com sua estrutura, praticamente inalterada, hou-veram mudanças visuais para que o mesmo se incorporasse ao NetBeans.
Espero que gostem deste livro tanto quanto gostei de reescrevê-lo.
RELATÓRIOS
COM
I
R
EPORT
Em 2001, nasceu o JasperReports, criado por Teodor Danciu, quando teve a ta-refa de avaliar ferramentas de relatórios para um projeto que estava trabalhando. As soluções existentes eram muito caras para o orçamento do projeto e, em uma situação comum no mundo do desenvolvimento, ele decidiu escrever sua própria ferramenta de relatórios, que ao liberá-la para a comunidade, ficou imensamente popular em pouco tempo.
O JasperReports é uma biblioteca escrita em Java, de código fonte open source, projetada para ajudar o desenvolvedor com a tarefa de criar relatórios para aplica-ções, tanto Desktop como Web, fornecendo uma API que facilita sua geração.
Embora o JasperReports tenha simplificado o desenvolvimento de relatórios, o desenvolvedor, além da necessidade de conhecer seu formato XML, utilizado para criar os relatórios, também dependia de cálculos para determinar a posição de cada componente no relatório de forma harmônica.
Em 09 de outubro de 2002, o italiano Giulio Toffoli lançou, de forma indepen-dente, uma ferramenta para gerar relatórios visuais, chamando-a de iReport. Sua característica era de desenvolver relatórios gerando o formato XML no padrão Jas-perReports. Isso tornou mais acessível e intuitivo o uso dos relatórios escritos em JasperReports.
Em 2005, com a popularidade do iReport, a JasperSoft (empresa mantenedora do JasperReports) tornou esta ferramenta oficial na construção de relatórios para o JasperReports.
Com seis anos de existência, o iReport é reescrito para trabalhar dentro do Ne-tBeans IDE, após o seu criador ter visto uma palestra no JavaOne 2007 a respeito de um desenvolvedor que estava criando tal ferramenta para gerar relatórios Jas-perReports.
Este livro é a mais que uma orientação, é um guia que o ensinará a utilizar o iRe-port para NetBeans para construir relatórios JasperReiRe-ports, criando desde os mais simples relatório até os mais sofisticados, utilizando desde uma linguagem SQL até as mais sofisticadas linguagens orientadas a objetos como HQL do Hibernate e EJB QL (Enterprise JavaBeans Query Language), passando por sub-relatórios, relatórios com gráficos, crosstab, passagem de parâmetros e outros.
Também será visto a exportação para diversos formatos suportados pelo Jasper-Reports, como PDF, MS Excel, RTF, ODF, entre outros.
O leitor também aprenderá a chamar seus relatórios através de aplicações desktop e Web criadas unicamente no NetBeans.
Q
UEM
DEVE
LER
ESTE
LIVRO
?
Este livro foi escrito para desenvolvedores com experiência na linguagem Java, que possuem pouca ou nenhuma familiaridade com a construção de relatórios, seja em JasperReports com iReport ou com outra ferramenta qualquer neste sentido.
É também desejável que o leitor esteja bem familiarizado tanto com o desen-volvimento desktop Java Swing, como em aplicações Web envolvendo Servlets, JSP e JavaServer Faces. O conhecimento de frameworks Java ORM, como o Hibernate e TopLink, de EJB 3 e IoC, como o Spring, é importante para um melhor aproveita-mento dos exemplos.
A
NTES
DE
COMEÇAR
Em algumas partes deste livro, você encontrará apenas o trecho do código pro-duzido, focado no assunto em questão, possuindo uma simbologia indicativa de que o restante não está sendo mostrado. Este símbolo é mostrado a seguir:
... Indica que acima ou abaixo contém mais código, mas que não está sendo exi-bido, sendo necessário recorrer ao exemplo completo, para visualizá-lo na íntegra, que pode ser baixado gratuitamente no site do autor.
O
S
S
OFTWARES
REQUERIDOS
Os aplicativos criados nesse livro não exigem software proprietário. Portanto ao longo dos capítulos você não só aprenderá a usá-los, como também onde encontrá-los na Internet, caso precise de uma atualização.
Esse livro não está focado especialmente em um sistema operacional, portanto a sua escolha é livre neste sentido.
H
ARDWAREREQUERIDOUma boa configuração de hardware se faz necessário para trabalhar com apli-cações escritas em Java. Um computador para rodar bem o iReport para NetBeans deve ter as seguintes configurações para uma confortável utilização, segundo o autor:
Processador: Pentium 4 (similar) ou superior
Memória: 512 MB de RAM mínimo (recomendo 2 GB de RAM no uso do NetBe-ans IDE completo)
HD: 100 MB de espaço livre (1GB caso esteja utilizando o NetBeans IDE) Monitor: 17 polegadas ou superior
C
ÓDIGOSDOSEXEMPLOSCRIADOSNOLIVROTodos os códigos dos exemplos criados se encontram no site do autor: http://
www.integrator.com.br.
Caso não encontre algum exemplo entre em contato pelo e-mail edson@integrator.
com.br.
V
ISÃO
GERAL
DOS
CAPÍTULOS
Embora este livro esteja completamente focado na utilização do iReport para NetBeans, ainda assim, você terá ao longo desta obra alguns códigos para desenvol-ver. Em grande parte, o código está sendo mostrado apenas no trecho que importa, focado para funcionar em aplicativos. Os exemplos completos estão no SITE do
AUTOR, que possui a separação por capítulo, para sua melhor orientação.
O livro é completamente ilustrado, possuindo dezenas de figuras espalhadas ao longo de todos os seus capítulos, incluindo sempre o foco em detalhes, para que você não se perca. Dicas também são dadas para que o leitor possa ter uma melhor compreensão do que está sendo desenvolvido, incluindo os passos para executar cada exemplo.
A seguir, você tem uma sinopse de cada um dos capítulos do livro, incluindo também o apêndice:
C
APÍTULO
1 - C
ONHECENDO
O
I
R
EPORT
PARA
N
ET
B
EANS
IDE
O iReport para NetBeans IDE é um programa Open Source, capaz de criar visual-mente os mais complexos relatórios para aplicações Java no formato da biblioteca JasperReports.
Através de uma interface gráfica intuitiva, o desenvolvedor é capaz de criar qual-quer tipo de relatório de forma simples e rápida. Mesmo sabendo que o iReport desenvolve um formato XML usado pelo JasperReports, o que não é difícil de ma-nipular, há uma vantagem em usar esta ferramenta. Se o desenvolvedor é um usuá-rio iniciante no formato XML do JasperReports, o iReport supre suas necessidades evitando que seja necessário fazer modificações no código fonte. Caso seja expe-riente neste formato, o iReport minimiza o tempo na criação dos mais complexos relatórios.
Neste capítulo você aprenderá onde obter, os requerimentos necessários para executar, como instalar e entender sobre algumas das mais importantes caracterís-ticas do iReport.
C
APÍTULO
2 - I
NICIANDO
NO
I
R
EPORT
PARA
N
ET
B
EANS
O iReport é uma ferramenta que está preparada para construir visualmente os mais complexos relatórios dentro dos limites do JasperReports.
Embora o primordial de iReport seja de desenhar relatórios, existem também suas características para configurações.
Este capítulo o introduzirá ao desenvolvimento básico de relatórios usando o iReport para NetBeans, partindo de sua execução inicial e suas configurações bási-cas.
C
APÍTULO
3 - E
STRUTURA
DE
UM
RELATÓRIO
E
SEU
DESENVOLVIMENTO
Um relatório é uma maneira agradável de apresentar as informações vindas de alguma base de dados com sua aparência formatada. Na maioria das vezes, relató-rios são usados para agrupar as informações vindas de um conjunto de dados, rela-cionados entre si, oriundos de diversas tabelas. Como resultado você tem apenas os campos determinados na construção do seu relatório e exposto como tal de forma a simplificar a compreensão das informações. Vindo em um formato padronizado para imprimir, como um texto feito em um editor de textos, você só precisa mandar para a impressão ou exportá-los para outro formato de uso maior.
Neste capítulo você irá conhecer a estrutura de um relatório JasperReports na ferramenta iReport para NetBeans e suas propriedades.
C
APÍTULO
4 - C
RIANDO
UM
RELATÓRIO
SEM
O
USO
DE
ASSISTENTES
Para uma maior compreensão dos diversos elementos que compõem um relató-rio no JasperReports, através do iReport para NetBeans, é importante a um desen-volvedor aprender a desenhá-lo manualmente, isto é, sem o uso de assistentes.
Neste capítulo você irá aprender a criar um relatório manualmente, adicionando diversos elementos, configurando-os e trabalhando com banco de dados.
C
APÍTULO
5 - G
ERANDO
RELATÓRIOS
COM
GRUPOS
E
PASSAGEM
DE
PARÂMETROS
Os relatórios mais utilizados em aplicações, com toda certeza, são os dinâmi-cos. Aqueles relatórios que transmitimos uma determinada informação e este nos trazem determinados dados.
Neste capítulo você aprenderá a criar um relatório mais complexo, utilizando mais de uma entidade (tabela) no desenvolvimento, agrupando informações e fil-trando-as através de parâmetros.
C
APÍTULO
6 - C
HAMANDO
O
RELATÓRIO
POR
UMA
APLICAÇÃO
DESKTOP
Assim como criar um relatório, é muito fácil chamá-lo por uma aplicação. Este capítulo utilizará uma aplicação desktop simples, com interface gráfica Swing, cria-da no NetBeans IDE, apenas com o intuito de ensiná-lo a chamar sua aplicação.
C
APÍTULO
7 - S
UB
-
RELATÓRIOS
Os sub-relatórios são relatórios dentro de outros, também conhecidos como relatórios do tipo “mestre-detalhe”.
A idéia básica para a criação de um relatório mestre-detalhe é ter duas entidades relacionadas.
Estes relatórios, embora possam parecer complexos, são simples de desenvolver em JasperReports.
Neste capítulo você aprenderá a criar sub-relatórios em seus relatórios usando o iReport para NetBeans e acesso a dados, conhecerá a band noData na prática e depois o chamará através de uma aplicação Web com JSP e Servlets.
C
APÍTULO
8 - R
ELATÓRIOS
COM
H
IBERNATE
Criar relatórios com o uso do Hibernate como camada de acesso a banco de dados é um caso comum no desenvolvimento de aplicações Web.
O Hibernate é hoje o mais popular projeto de gerenciamento de dados per-sistentes em Java e também o que possui uma gama de soluções para problemas comuns.
Neste capítulo você aprenderá a desenvolver seus relatórios utilizando o Hiber-nate para acessar os dados, incluindo um exemplo com sub-relatório.
C
APÍTULO
9 - R
ELATÓRIOS
USANDO
EJB QL
O uso de Java Persistence API se tornou muito intenso, e como não poderia deixar de ser, o JasperReports possui suporte a esta especificação através de EJB QL. Esta linguagem de queries possui uma semelhança à HQL do Hibernate e também a tradicional instrução SQL.
Com a especificação do EJB3, na introdução da JPA, Java Persistence API, ficou muito popular o uso de JPQL, Java Persistence Query Language, que é uma é uma extensão da EJB QL (Enterprise JavaBeans Query Language).
Neste capítulo você vai aprender a configurar um arquivo de persistência e criar um relatório com sub-relatório utilizando a EJB QL.
C
APÍTULO
10 - G
ERANDO
RELATÓRIOS
COM
OUTRAS
FONTES
DE
DADOS
O JasperReports é rico no fornecimento de outras fontes de dados acessíveis para que possamos gerar relatórios.
Muitos sistemas costumam exportar diversos tipos de dados, sendo os mais comuns o formato CSV e XML.
Este capítulo tratará de outras formas de acesso que não utilizam um banco de dados diretamente.
C
APÍTULO
11 - S
IMPLIFICANDO
RELATÓRIOS
COM
G
ROOVY
Groovy é uma linguagem dinâmica escrita para a plataforma Java, inspirada em linguagens como Ruby, Python e Smalltalk. Embora seja simples de manipular e mui-to similar as linguagens de scripting, Groovy é um pouco mais complexo. Aplicações com Groovy podem ser pré-compiladas em bytecodes Java, para ser integrada à suas aplicações Java.
Graças a um Java Specification Request (JSR-241), Groovy se tornou a segunda linguagem oficial padrão do Java Virtual Machine (JVM), depois de Java, claro.
Desde a versão 0.6.6 do JasperReports, há suporte a linguagem Groovy. Com isso, quem ganha é o desenvolvedor, que tem em suas mãos uma maior simplicida-de no simplicida-desenvolvimento simplicida-de expressões em seus relatórios.
Neste capítulo você vai construir um relatório utilizando Groovy, trabalhando com expressões e aprenderá como rodar o relatório criado em suas aplicações tam-bém usando Groovy.
C
APÍTULO
12 - C
RIANDO
GRÁFICOS
E
SUBDATASET
EM
SEUS
RELATÓRIOS
Como todo bom relatório, não poderia faltar os gráficos. Simples e eficazes, os gráficos exibem uma situação visualmente impactante, possibilitando um entendi-mento muito maior, mais rico, do que apenas números e textos.
O JasperReports possui suporte a geração de gráficos, facilitando o desenvolvi-mento do relatório, através da biblioteca JFreeChart.
Neste capítulo será apresentado como criar gráficos em um relatório JasperRe-ports usando o iReport para NetBeans, além de aprender a trabalhar com consultas diferentes no mesmo relatório, o que chamamos de Subdataset.
C
APÍTULO
13 - I
NTERNACIONALIZANDO
RELATÓRIOS
Aplicações internacionalizadas são muito comuns no mundo do desenvolvimen-to. Não seria diferente no caso dos relatórios. O JasperReports introduziu esta ca-racterística na versão 0.6.2 e desde então seu suporte foi acrescentado ao iReport, facilitando mais ainda seu desenvolvimento.
Neste capítulo será criada uma aplicação Java desktop simples, pelo NetBeans, para ser usada com um relatório internacionalizado gerado pelo iReport.
C
APÍTULO
14 - C
ROSSTABS
Crosstabs (cross-tabulation), no JasperReports, são tabelas cruzadas, comuns no desenvolvimento de relatórios com a utilização de planilhas eletrônicas, também conhecidas por tabelas dinâmicas ou tabelas de referências cruzada.
Diferente dos demais relatórios criados até o momento no livro, um relatório crosstab possui uma tabela contendo um número de linhas e colunas que não se conhece em tempo de design.
Graças ao iReport, você pode contar com o uso de um assistente, tornando esta tarefa não muito complicada.
Neste capítulo você aprenderá a criar crosstabs no iReport, modificar, formatar e usar também subdatasets para relatórios mais complexos.
C
APÍTULO
15 - O
UTRAS
CARACTERÍSTICAS
DA
GERAÇÃO
DE
RELATÓRIOS
Neste capítulo você conhecerá outras características da ferramenta iReport, além do JasperReports, que não foram apresentadas até o momento, sendo passadas em formato de dicas, como adicionar um trecho da query em um relatório, minimizar o consumo de memória, imagem de fundo no relatório e outras.
C
APÍTULO
16 - S
CRIPTLET
Um scriptlet é uma classe Java desenvolvida unicamente para executar durante a geração da impressão do relatório na tela. O scriptlet possui métodos que são invocados na geração de relatórios possibilitando manipulá-los, como a ocorrência da criação de uma nova página ou o acesso a um determinado parâmetro.
Neste capítulo será visto como escrever um simples scriptlet, qual a sua utilida-de e como usá-lo em seu relatório.
C
APÍTULO
17 - D
ESENVOLVENDO
SEUS
PRÓPRIOS
T
EMPLATES
Quando usamos um assistente de criação de relatórios, na última etapa fazemos uso de templates. Algumas vezes pode ser útil criar um ou vários templates para usar no assistente.
Neste capítulo você vai aprender a criar seus próprios templates e utilizá-los no iReport.
A
PÊNDICE
A - E
XPORTANDO
PARA
OUTROS
FORMATOS
Este apêndice é uma referência sobre a API do JasperReports na exportação para outros formatos através de sua aplicação, seja desktop ou Web.
Os formatos discutidos aqui são os mais utilizados para exportação pelo Jasper-Reports: RTF, XLS, CSV, HTML e ODF.
P
ARA
D
OWNLOAD
: A
PÊNDICES
B, C, D
E
E
Para Download, veja “CÓDIGOS DOS EXEMPLOS CRIADOS NO LIVRO”, além dos arquivos referentes aos exemplos contidos no livro, há também os seguintes apên-dices:
A
PÊNDICE
B – O M
Y
SQL
A
PÊNDICE
C – C
ONTEXTO
DE
DESENVOLVIMENTO
W
EB
EM
J
AVA
A
PÊNDICE
D – T
RABALHANDO
COM
D
ATAS
EM
J
AVA
A
PÊNDICE
E – O T
OMCAT
Capítulo 1 - Conhecendo o iReport para NetBeans IDE ... 1
Antes de utilizar o iReport para NetBeans IDE ... 3
Obtendo e instalando o Java SE ... 3
A instalação no Windows ... 4
Em Windows versão 9x ... 5
A instalação no Linux ... 5
Obtendo e instalando o iReport para NetBeans IDE ... 7
Algumas características do iReport para NetBeans IDE ... 8
Instalando o iReport ... 9
No Windows com instalador ... 9
No Windows e Linux sem instalador ... 10
Como instalar o plug-in iReport for NetBeans ... 10
Compilando o fonte do iReport para NetBeans ... 11
Capítulo 2 - Iniciando no iReport para NetBeans ... 13
Abrindo o iReport para NetBeans pela primeira vez ... 15
Um relatório com iReport para NetBeans ... 16
O banco de dados usado ... 16
O primeiro relatório no iReport para NetBeans na versão Standalone ... 17
Visualizando o primeiro relatório ... 21
Configurando o iReport para NetBeans ... 21
A compilação do iReport para NetBeans no preview ... 22
A versão do iReport para NetBeans como plug-in ... 22
O arquivo de propriedades do iReport como plug-in ... 23
Abrindo um relatório no iReport para NetBeans ... 23
iReport para NetBeans em inglês ... 24
Capítulo 3 - Estrutura de um relatório e seu desenvolvimento ... 25
A estrutura do relatório ... 27 Title ... 29 Page Header ... 29 Column Header ... 30 Detail ... 30
Demonstração
Column Footer ... 31
Page Footer ... 31
Last Page Footer ... 32
Summary ... 32
Background ... 33
noData ... 33
Compreendendo as propriedades de um relatório ... 33
Dimensões de um relatório ... 34
Capítulo 4 - Criando um relatório sem o uso de assistentes ... 45
Iniciando um relatório manualmente ... 47
A janela Palette ... 47
Adicionando uma conexão a um relatório vazio ... 49
Criando a query do relatório ... 51
Os elementos da query registrados no JasperReports ... 55
Desenhando o relatório ... 56
Os símbolos para exibir o formato de números ... 63
Conhecendo melhor o Text Field ... 64
Criando o efeito zebra em seu relatório ... 65
Estilos no JasperReports ... 67
Exibindo imagens em seu relatório ... 68
Um pouco mais sobre o elemento image ... 69
Adicionando links em elementos ... 74
Contando registros e exibindo na band Summary ... 77
Salvando em outros formatos ... 78
Capítulo 5 - Relatórios com grupos e passagem de parâmetros ... 79
O relatório que será desenvolvido ... 81
Gerando o relatório ... 81
Criando a query do relatório ... 83
Criando o grupo ... 85
No arquivo JasperReports ... 86
Adicionando os elementos na band PedidoGroupHeader ... 87
Padrões para datas ... 88
Criando variáveis com cálculos ... 89
Adicionando os elementos na band detail ... 90
Totalizando por pedido ... 92
Finalizando a aparência do relatório ... 93
Adicionando parâmetros ao relatório ... 94
Capítulo 6 - Chamando o relatório por uma aplicação desktop ... 97
A aparência final do aplicativo ... 99
As bibliotecas necessárias para obter o relatório ... 100
A biblioteca JDBC para a conexão com o banco de dados ... 100
O projeto no NetBeans IDE para executar o relatório ... 101
Executando o relatório ... 103
Executando o projeto ... 111
Capítulo 7 - Sub-relatórios... 113
O relatório mestre-detalhe que será desenvolvido ... 115
Criando e configurando o relatório principal ... 116
Gerando a query ... 117
Definindo a posição dos campos ... 118
O formato para a exibição do número de páginas ... 120
Adicionando conteúdo na band noData ... 120
Gerando o sub-relatório ... 121
Configurando a aparência do sub-relatório ... 121
Modificando a query do sub-relatório ... 123
Adicionando o sub-relatório ao relatório ... 124
No arquivo JasperReports ... 125
Alterando as propriedades do sub-relatório ... 127
Retornando valores do sub-relatório ... 128
Chamando o relatório por uma aplicação web ... 131
Criando marcadores para o relatório em PDF ... 137
Capítulo 8 - Relatórios com Hibernate ... 141
O Hibernate ... 143
Criando um projeto usando Hibernate no NetBeans IDE ... 144
As bibliotecas do JasperReports e MySQL JDBC ... 145
Criando as entidades ... 145
Mapeando as tabelas ... 147
Configurando o Hibernate ... 151
Compilando o projeto ... 154
Sobre Hibernate Annotations no iReport ... 154
Configurando o Hibernate no iReport para NetBeans ... 154
Criando a conexão com o Hibernate no iReport para NetBeans ... 155
Desenvolvendo o relatório ... 156
Criando um relatório com sub-relatório usando Hibernate ... 157
A aplicação usando o Hibernate ... 161
Finalizando o projeto no NetBeans com Hibernate e o relatório criado .. 162
Relatório usando o Hibernate através do Spring ... 167
Capítulo 9 - Relatórios usando EJB QL ... 169
O conceito da API de persistência ... 171
Sobre Java Annotations ... 172
Criando as entidades ... 173
O relacionamento ... 178
Onde encontrar o TopLink ... 182
Criando a conexão EJBQL no iReport ... 182
Desenvolvendo o relatório ... 183
O sub-relatório ... 186
Adicionando o sub-relatório ao relatório mestre ... 188
Adicionando o parâmetro especial para manter a sessão ... 188
Selecionando apenas alguns objetos com EJB QL ... 190
Como visualizar um relatório com EJB QL no seu aplicativo ... 191
Alterando o relatório para utilizar no projeto do NetBeans IDE ... 192
Finalizando o projeto no NetBeans IDE ... 192
Capítulo 10 - Gerando relatórios com outras fontes de dados ... 197
Usando XML para criar relatórios ... 199
Criando um relatório com XML ... 199
Relatórios com XML remoto ... 204
Usando CSV para criar relatórios ... 204
Registrando os campos de um arquivo CSV ... 206
Relatórios sem fonte de dados ... 207
Relatórios usando JavaBeans como fonte de dados ... 208
Relatórios usando uma fonte de dados personalizada ... 213
Capítulo 11 - Simplificando relatórios com Groovy ... 219 Criando um relatório usando Groovy ... 221 Iniciando o desenvolvimento do relatório ... 221 O design do relatório ... 223 Resultado final do relatório com Groovy ... 226 Chamando seu relatório com Groovy ... 226 Criando um projeto no NetBeans com Groovy ... 226 Capítulo 12 - Criando gráficos e subdataset em seus relatórios ... 231 Criando um gráfico simples ... 233 Links em seu gráfico ... 238 Subdatasets ... 238 Utilizando Subdatasets em seu gráfico ... 241 Gráficos de linhas ... 244 Utilizando Gráficos em um relatório com Hibernate ... 248 Capítulo 13 - Internacionalizando relatórios ... 249 Criando seu relatório internacionalizado ... 251 Capítulo 14 - Crosstabs ... 257 Criando seu primeiro relatório Crosstab ... 259 No JasperReports ... 263 Compreendendo a disposição da Crosstab ... 263 Modificando uma célula na Crosstab ... 264 Adicionando grupos de linhas e colunas ... 265 Compreendendo as Measures ... 268 Criando uma Crosstab com Subdataset ... 269 Capítulo 15 - Outras características da geração de relatórios ... 275 Tratando relatórios grandes ... 277 Trechos SQL no relatório ... 279 Adicionando uma imagem de fundo ... 280 Exibindo somente um grupo por página ... 281 Reiniciando o número de páginas ... 281 Alinhamento de objetos no design do relatório ... 281 Formatação entre textos no seu relatório ... 281
Data atual no relatório ... 284 Stored Procedures e Functions ... 284 Erros na compilação ... 284 Capítulo 16 - Scriptlet ... 287 A classe JRAbstractScriptlet ... 289 Um exemplo da utilização de Scriptlets ... 292 A classe Scriptlet ... 293 O projeto no NetBeans para usar Scriptlet em um relatório ... 295 Desenvolvendo o relatório ... 296 A conexão com o arquivo CSV ... 296 Adicionando o scriptlet ao relatório ... 297 Criando as variáveis do relatório ... 298 Editando a query do relatório ... 299 Criando o design do relatório ... 299 Como evitar valores repetidos em um relatório ... 301 Forçando o valor a aparecer ao menos uma vez em cada página ... 301 Criando métodos personalizados com Scriptlets ... 302 Capítulo 17 - Desenvolvendo seus próprios Templates ... 303 Criando um relatório modelo ... 305 Configurando o template criado no iReport ... 307 O uso do template no assistente do iReport ... 308 Imagem de preview do template no assistente ... 308 Apêndice - Exportando para outros formatos ... 311 Exportando para o formato RTF ... 313 Exportando para o formato Excel ... 313 Exportando para HTML ... 314 Exportando para CSV ... 314 Exportando para ODF ... 315
Bibliografia ... 317 Livros Nacionais ... 319 Livros Internacionais ... 319 Sites ... 319 Acesso para pesquisa ... 320 Tutoriais ... 320
1
C
ONHECENDO
O
I
R
EPORT
PARA
N
ET
B
EANS
IDE
“Começar já é metade de toda a ação.”
provérbio grego
O iReport para NetBeans IDE é um programa Open Source, capaz de criar visual-mente os mais complexos relatórios para aplicações Java no formato da biblioteca JasperReports.
Através de uma interface gráfica intuitiva, o desenvolvedor é capaz de criar qual-quer tipo de relatório de forma simples e rápida. Mesmo sabendo que o iReport desenvolve um formato XML usado pelo JasperReports, o que não é difícil de ma-nipular, há uma vantagem em usar esta ferramenta. Se o desenvolvedor é um usuá-rio iniciante no formato XML do JasperReports, o iReport supre suas necessidades evitando que seja necessário fazer modificações no código fonte. Caso seja expe-riente neste formato, o iReport minimiza o tempo na criação dos mais complexos relatórios.
Neste capítulo você aprenderá onde obter, os requerimentos necessários para executar, como instalar e entender sobre algumas das mais importantes caracterís-ticas do iReport.
A
NTES DEUTILIZAR O IR
EPORT PARAN
ETB
EANSIDE
O iReport para NetBeans IDE, por ser uma ferramenta Java, precisa do Sun Java 2 SDK 1.5 instalado em sua máquina, ou superior. Perceba que não é apenas a JVM (Java Virtual Machine) que deve estar instalada. Isso porque, para compilar os arqui-vos jasper, é necessária a instalação da distribuição do Java SE, sendo impossível somente com a JRE (Java Runtime Environment).
O
BTENDOE INSTALANDOOJ
AVASE
Atualmente, o JDK (Java ™ SE Development Kit) está em sua versão 6 e possui suporte para as seguintes plataformas:
Microsoft Windows Linux Sun Solaris Mac Os Entre outros
Demonstração
A página Web oficial sobre a linguagem Java da Sun se encontra no endereço
http://java.sun.com.
A Sun publica periodicamente releases do JDK e costuma numerá-los através do que chamam atualmente de updates.
Para obter o Kit de Desenvolvimento Java, que até o momento em que este livro é escrito está na versão 6 update 6 (JDK 6u6), conhecido como Java SE 6.0, acesse o endereço: http://java.sun.com/javase/downloads/index.jsp.
Na página de download do Java SE 6.0, existem vários produtos para download. Logo a seguir há uma descrição de alguns dos produtos do qual você encontra para download:
• JDK 6 Update 6 – Este é o kit de desenvolvimento Java. Este kit consiste em um compilador (javac), uma ferramenta de execução (java), uma ferramenta para geração de documentação (javadoc), um conjunto de bibliotecas prontas para o uso e etc.
• Java Runtime Environment (JRE) 6 Update 6 – Este é o ambiente runtime do Java, usado apenas para executar os programas feitos em Java.
• Java SE 6 Documentation – A documentação do J2SE. Esta documentação contém as informações sobre todas as bibliotecas do Java.
Clique no botão-link Download. Para efetuar o download do JDK, você deve aceitar os termos de uso do Java SE, clicando na opção “Accept”. Após a página recarregar, haverá a possibilidade de baixar a versão que você precisa para a sua pla-taforma. Observe que na página 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 instalação.
A
INSTALAÇÃO NOW
INDOWSTendo em vista que o Windows no qual será descrito está na versão XP ou supe-rior, inicie o assistente com um duplo clique sobre o arquivo executável, que como tantos outros desta plataforma, basta avançar até concluir.
Para configurar qualquer variável de ambiente em um sistema Windows na ver-são NT, você deve entrar no Painel de Controle, Sistema e na guia Avançado clique no botão Variáveis de Ambiente.
As variáveis de ambiente são seqüências de caracteres que contêm informações como unidade, caminho ou nome de arquivo. As variáveis de ambiente controlam o comportamento de vários programas. Como exemplo de variáveis de ambiente:
PATH, CLASSPATH, USER, TEMP, JAVA_HOME e etc.
Estas variáveis de ambiente são utilizadas por muitos programas, para definir um espaço em memória principal (RAM), onde alguns processamentos serão exe-cutados
Em Variáveis do sistema, clique em Nova. Adicione o nome da variável como
JAVA_HOME e no valor o caminho onde você instalou o JDK.
A variável JRE_HOME é similar a anterior, mudando apenas para o valor onde se encontra a máquina virtual Java.
Na variável PATH, você tem que adicionar a variável JAVA_HOME, acrescida do caminho para os binários. Após o último valor, coloque um ponto-e-vírgula (“;”) e adicione %JAVA_HOME%\bin.
Ao confirmar as caixas de diálogo, teste se o Java está funcionando na sua má-quina em um prompt de comando, como mostrado a seguir:
java -version
E
MW
INDOWSVERSÃO9
XVocê deve editar o arquivo autoexec.bat, encontrado em C:\autoexec.bat e adi-cionar as variáveis como o exemplo a seguir:
set JAVA_HOME= C:\jdk1.6.0_06
Onde o local indicado no exemplo, é onde você tem instalado o JDK.
A
INSTALAÇÃO NOL
INUXNo momento em que este livro está sendo escrito, a versão baixada para o siste-ma operacional Linux é a jdk-6u6-linux-i586.bin.
Entre no terminal do seu Linux, após baixar o arquivo, e mude para o usuário Root ou administrativo do sistema e altere a permissão do arquivo para executável, assim você poderá instalá-lo:
shell# chmod +x jdk-6u6-linux-i586.bin
Execute o arquivo:
shell# ./jdk-6u6-linux-i586.bin
Assim como ocorre em sistemas operacionais Windows, você terá um assistente para instalação, só que com a diferença de não ser gráfico.
Entre no arquivo profile em /etc/profile e adicione as linhas em seu final: JAVA_HOME=/jdk1.6.0_06
JRE_HOME=/jdk1.6.0_06/jre export JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/lib export MANPATH=$MANPATH:$JAVA_HOME/man
As variáveis usadas são explicadas rapidamente a seguir, dando a você noção do que cada uma faz:
JAVA_HOME - Diretório onde a JDK está instalada
JRE_HOME - Diretório onde a máquina virtual está instalada PATH - Diretório dos executáveis, onde inclui o do Java CLASSPATH - Diretório das libs
MANPATH - Diretório do manual, acessível por man javac.
Faça logout no sistema e logon e execute no terminal o seguinte comando:
java -version
Surgindo as informações mostradas a seguir, a instalação foi feita com sucesso.
java version “1.6.0_06”
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Figura 1.1 – Verificando a versão de instalação do Java no Linux
O
BTENDO EINSTALANDOO IR
EPORT PARAN
ETB
EANSIDE
Para baixar o iReport para NetBeans IDE, entre no endereço oficial http://www.
jasperforge.org/ireport ou http://ireport.sourceforge.net/. Até o momento em que
este livro é escrito a versão atual do iReport para NetBeans IDE está em 3.1.2. Esta versão tem suporte completo ao JasperReports 3.1.2.
Clique no link Download iReport para ser redirecionado ao SourceForge.net, onde está alocado para baixar. Clique no item iReport-nb-3.1.2 e confirme no botão
Browse Package. Copie o link existente em Location e o cole na barra de
endere-ços.
Se você estiver usando o sistema operacional Microsoft Windows, baixe a versão
iReport-nb-3.1.2-windows-installer.exe, ao qual inclui um instalador, ou o arquivo iReport-nb-3.1.2.zip, sem instalador. Para os demais sistemas operacionais,
incluin-do Linux, baixe a versão iReport-nb-3.1.2.tar.gz. O código fonte pode ser encontra-do baixanencontra-do-se o arquivo iReport-nb-3.1.2-src.zip.
Se estiver utilizando o NetBeans e desejar apenas incluir o plug-in, selecione
iReport Plugin for NetBeans e baixe o arquivo iReport-nb-3.1.2-plugin.zip.
Atenção: As explicações neste tópico estão atreladas a versão atual do site, no
momento em que este livro é escrito.
A
LGUMAS CARACTERÍSTICASDO IR
EPORT PARAN
ETB
EANSIDE
O iReport possui diversas características que o tornam uma ferramenta de de-senvolvimento de relatórios profissional, no mesmo padrão de outros do mesmo tipo consagrados pelo mundo do desenvolvimento. A seguir você tem algumas de suas principais características que fazem deste programa visual o Oficial para desen-volvimento de relatórios JasperReports:
• Suporte a 100% das tags XML do JasperReports;
• Editor WYSIWYG para criação de relatórios, possuindo ferramentas que in-cluem desenhos de retângulos, linhas, elipses, caixas de texto, rótulos, gráfi-cos, sub-relatórios, códigos de barras e etc.;
• Um editor para escrever as expressões incluindo destaques (highlights) nas sintaxes;
• Suporte para Unicode e línguas não latinas como: Russo, Chinês, Japonês, Coreano entre outras;
• Integração para compilar e exportar;
• Suporte para todos os bancos de dados acessíveis pela ponte JDBC; • Suporte virtual para todos os tipos de DataSources;
• Assistentes para criar relatórios rapidamente; • Suporte para sub-relatórios;
• Backup para o código fonte;
• Suporte para modelos de documentos (templates); • Suporte para fontes TrueType;
• Extensão através de plug-ins; • Suporte integrado para scriptlets; • Suporte a gráficos;
• Gerenciamento de bibliotecas de objetos padrão tais como numeração de páginas;
• Arrastar e Soltar (Drag’n Drop); • Ilimitados Desfazer e Refazer; • Biblioteca de estilos e etc.
I
NSTALANDOO IR
EPORTComo há mais de uma forma de instalar o iReport para NetBeans, você verá to-das aqui. A primeira forma de instalação que será mostrada é no sistema operacio-nal Windows com o assistente. A segunda forma será sem o uso de assistente, neste caso tanto no sistema operacional Windows como no Linux será mostrada.
A última forma será no NetBeans IDE, em forma de plug-in.
N
OW
INDOWSCOM INSTALADORO assistente para instalar o iReport para NetBeans no Windows é similar aos demais utilizados em outros programas neste sistema operacional. Dê um duplo clique no arquivo iReport-nb-3.1.2-windows-installer.exe para iniciar o processo de instalação pelo assistente.
1. Na primeira etapa você tem a tela inicial do iReport nb-3.1.2. Clique no botão
Next para prosseguir.
2. Na segunda etapa do assistente você deve aceitar a licença de uso do iReport
nb-3.1.2. Caso você não conheça a licença GNU (General Public License),
reco-mendo lê-la antes de prosseguir. Clique no botão I Agree para continuar. 3. Na terceira etapa você define os componentes que serão instalados. Como no
caso há apenas um, clique no botão Next para prosseguir.
4. A quarta etapa é o local onde será instalado o iReport. Por padrão ele é de-finido dentro do diretório JasperSoft\iReport-nb-3.1.2 em Arquivos de
pro-gramas do seu sistema operacional Windows. Caso precise mudar, clique no
botão Browse e selecione o novo local em que deseja instalar. Para prosseguir, clique no botão Next.
5. No quinto passo você define o local de acesso no menu Iniciar do Windows. Caso concorde com a atual configuração, basta clicar no botão Install para iniciar o processo de instalação. Caso deseje alterar o acesso, basta digitar no local selecionado, em JasperSoft\iReport-nb-3.1.2.
6. Após a instalação, a opção Run iReport nb-3.1.2 estará selecionada. Clicando no botão Finish, abrirá imediatamente o iReport para trabalhar. O instalador também criará um atalho na área de trabalho para acesso rápido ao programa, através do arquivo iReport.exe.
Atenção: O instalador cria, além do arquivo ireport.exe, um arquivo chamado ire-port_w.exe, que inicializa o iReport para NetBeans com o prompt de comando.
N
OW
INDOWS EL
INUX SEM INSTALADORCaso você prefira a versão sem instalador, existem os dois arquivos compacta-dos iReport-nb-3.1.2.zip (recomendável para o sistema operacional Windows) ou
iReport-nb-3.1.2.tar.gz (para o sistema operacional Linux). Descompacte o de sua
preferência em um local desejado.
No Linux, você deve executar antes o comando para descompactação:
shell# tar –xpvzf iReport-nb-3.1.2.tar.gz
Ao descompactar o iReport, entre no diretório e execute a permissão de execução:
shell# cd iReport-nb-3.1.2/ shell# chmod +x ireport
Para o Windows existem os arquivos ireport.exe e ireport_w.exe para inicializar, bastando um duplo clique. No sistema operacional Linux, basta entrar no terminal e executar o Shell, como mostrado a seguir:
shell# ./ireport
C
OMOINSTALAR OPLUG-
IN IR
EPORT FORN
ETB
EANSCaso já exista o NetBeans IDE instalado em sua máquina, não há a necessidade de instalação separada do iReport.
O plug-in do iReport se integra a ferramenta, suavizando o trabalho com seus aplicativos sem necessitar abrir outra IDE para criar relatórios.
Baixe o arquivo iReport-nb-3.1.2.nbms.zip para obter apenas o plug-in e des-compacte-o.
Para o exemplo, será instalado o plug-in no NetBeans IDE 6.5 beta, a versão mais atual no momento em que este livro é escrito.
1. No seu NetBeans IDE, vá ao menu Tools>Plugins e clique na guia Downloaded. 2. Clique no botão Add Plugins e selecione todos os arquivos encontrados na
descompactação do iReport-nb-3.1.2.nbms.zip.
Figura 1.2 – Selecionando os arquivos do plug-in iReport for NetBeans
3. Clique no botão Install para iniciar a instalação do plug-in na ferramenta. 4. Ao surgir a caixa de diálogo NetBeans IDE Installer clique em Next. Aceite os
termos de licença em I accept the terms in all of the license agreements e confirme no botão Install.
Se a caixa de diálogo Verify Certificate surgir, apenas clique em Continue para prosseguir com a instalação do plug-in.
Após a instalação, você encontra o plug-in ireport-designer, na guia Installed.
C
OMPILANDOO FONTEDO IR
EPORT PARAN
ETB
EANSO projeto do iReport para NetBeans foi criado na versão 6.0 da ferramenta Ne-tBeans IDE. Isso significa que você deve baixar esta versão para abrir o projeto e, somente então, compilá-lo.
A versão do NetBeans utilizado está no arquivo platform.properties, expandin-do iReport>Important Files, danexpandin-do um duplo clique em NetBeans Platform Config. A última linha, mais especificamente em nbplatform.active, antes de compilar, deve ter o valor substituído para default.
Para compilar, clique com o direito do mouse sobre iReport, na janela Projects, e selecione Build ZIP Distribution, no menu de contexto. No source do iReport, surgirá um arquivo “zipado” dentro do diretório dist.
Figura 1.3 – Projeto do iReport aberto no NetBeans IDE 6.0
2
I
NICIANDO
NO
I
R
EPORT
PARA
N
ET
B
EANS
“Especialize-se em um setor determinado e procure
conhecer mais sobre ele que qualquer outra pessoa“.
Joseph Murphy
O iReport é uma ferramenta que está preparada para construir visualmente os mais complexos relatórios dentro dos limites de JasperReports.
Embora o primordial de iReport seja de desenhar relatórios, existem também suas características para configurações.
Este capítulo o introduzirá ao desenvolvimento básico de relatórios usando o iRe-port para NetBeans, partindo de sua execução inicial e suas configurações básicas.
A
BRINDO
O
I
R
EPORT
PARA
N
ET
B
EANS
PELA
PRIMEIRA
VEZ
Quando o iReport executa pela primeira vez ele carrega informações de con-figurações regionais de seu sistema operacional e cria um diretório chamado de
.ireport no diretório do usuário em home no Linux, em Document and Settings de
seu Windows XP ou AppData\Roaming no seu usuário em Windows Vista. Neste diretório você encontra diversos arquivos.
Figura 2.1 – Símbolo do iReport
Suas configurações pessoais e as configurações do programa estão gravados neste diretório, em seu arquivo ireport.properties, dentro de .ireport/dev/config/
Preferences/com/jaspersoft.
Atenção: Se não for criado o diretório .ireport, alguns problemas indesejáveis
podem ocorrer na execução do programa, além da impossibilidade de gravação das configurações personalizadas.
U
M
RELATÓRIO
COM
I
R
EPORT
PARA
N
ET
B
EANS
Antes de continuar nas configurações do iReport, você vai se ambientar na ferra-menta, criando um primeiro relatório. Isso possibilitará uma melhor compreensão da geração de relatórios JasperReports.
Para a geração deste relatório, você vai utilizar o assistente de relatórios existen-te na ferramenta. Isso facilitará na velocidade do desenvolvimento.
O
BANCO DE DADOSUSADOO MySQL 5 será o gerenciador de banco de dados usado neste livro para a exe-cução dos exemplos de relatórios. Apesar de ser o MySQL, os exemplos mostrados poderão ser feitos em Oracle, SQL Server, PostgreSQL e etc.
O banco de dados chamado de relatorios será usado em todos os capítulos ao lon-go do livro, sendo as tabelas que o compõe são apresentadas na Figura 2.2 a seguir.
Figura 2.2 – Diagramação do banco de dados usado no livro
Observação: As tabelas foram baseadas no banco de dados de exemplo
Nor-thwind, encontrado no MS Office Access ® e no banco de dados MS SQL Server ®, ambos da Microsoft (MS).
Atenção: O arquivo relatorios.sql contendo o banco de dados relatorios e suas ta-belas devidamente populadas se encontra no site do autor, citado no início deste
livro, em “Códigos dos exemplos criados no livro”.
O
PRIMEIRO RELATÓRIO NOIR
EPORT PARAN
ETB
EANSNA VERSÃOS
TANDALONEO banco de dados a ser criado é composto por cinco entidades, sendo quatro delas principais para o cenário proposto. Para o exemplo, você vai criar o primeiro relatório usando apenas a tabela de produtos.
Vá ao menu File do iReport para NetBeans e selecione no menu o item Report
Wizard.
Figura 2.3 – Selecionando o item de menu Report Wizard
Ao surgir à caixa de diálogo do assistente, chamada de New Report, você deverá seguir os seguintes passos para criar seu relatório:
1. Para a primeira etapa, coloque o nome do seu relatório em Report name.
Chame de PrimeiroRelatorio se quiser ter um nome similar ao do livro. No botão Browse você pode alterar a localização de onde será salvo o relatório. Clique no botão Next para prosseguir.
2. A segunda etapa necessita da criação de uma conexão com o banco de dados.
Como ainda não fora feito nenhuma, clique no botão New, ao lado do campo
Con-nections/Data Sources.
a. Na caixa de diálogo de Datasource selecione o item Database JDBC connec-tion. Clique no botão Next para prosseguir.
b. Como o driver JDBC usado é do MySQL, por padrão, a segunda etapa das
pro-priedades de conexão surgirá com esta opção selecionada no campo JDBC Driver, contendo com.mysql.jdbc.Driver. Não há necessidade, neste caso, de se adicionar a biblioteca JDBC na sua aplicação.
c. No campo Name digite relatorios. No campo JDBC URL complete deixando jdbc:mysql://localhost/relatorios. Coloque o nome de usuário no campo User Name
e sua respectiva senha em Password. Marque a opção Save password.
Figura 2.4 – Definindo as propriedades de conexão
d. Clique no botão Test para verificar se a conexão foi estabelecida com sucesso.
Caso apareça a mensagem “Connection test successful!”, significa que você configu-rou tudo corretamente e que agora há uma comunicação com o banco de dados.
e. Salve as informações de conexão com o banco de dados através do botão Save
da caixa de diálogo.
Onde o iReport armazena minha conexão?
O iReport guarda as informações da configuração da conexão no diretório .ireport/
dev/config/Preferences/com/jaspersoft, dentro do arquivo ireport.properties.
Neste arquivo há a propriedade connection seguida por um “ponto” e um núme-ro, que indica a conexão, onde a primeira é zenúme-ro, a segunda é um e assim por dian-te. A string que existe como valor possui um XML, contendo uma compatibilidade com a versão do iReport que não está sobre a plataforma NetBeans.
f. Retornando ao assistente de relatório, na segunda etapa, concluída a conexão,
você só precisa definir a tabela e dados que serão exibidos. No campo Query (SQL) digite a instrução SQL, a seguir, que selecionará somente a tabela de produtos e, em seguida, clique no botão Next para prosseguir:
SELECT * FROM produtos
Figura 2.5 – Criando a consulta SQL na segunda etapa do assistente
3. Na terceira etapa do assistente, em Fields, adicione todos os campos exceto CategoriaID (utilizando o botão “>”) e clique no botão Next.
Figura 2.6 – Seleção de campos para a geração do relatório
4. Na quarta etapa simplesmente avance clicando no botão Next.
5. Na quinta etapa, você vai selecionar o layout que deseja utilizar em seu
rela-tório. Mantenha na opção Columnar layout e clique no botão Next.
6. Na última etapa, clique simplesmente no botão Finish para concluir o assistente.
Ao final você terá um relatório gerado com os campos selecionados em formato tabular, contendo sua visualização apenas estrutural.
Figura 2.7 - Estrutura do relatório gerado pelo assistente
Observação: O driver JDBC do MySQL já vem com o iReport, no diretório ide8/ modules/ext de sua instalação. Caso você deseje utilizar outro banco de dados ou
atualizar a versão JDBC da biblioteca do MySQL, que se encontra na versão
mysql-connector-java-5.0.7-bin.jar, adicione neste diretório.
V
ISUALIZANDOO PRIMEIRO RELATÓRIOAntes de iniciar qualquer alteração, você vai visualizar o relatório da forma bruta como foi criado.
Clique em Preview (ou pelo menu View>Editors>Preview) e aguarde a rende-rização do relatório.
O visualizador de relatórios para o formato JasperReports está embutido no iReport para NetBeans, diferente do que acontecia em versões que não utilizam a plataforma NetBeans.
C
ONFIGURANDO
O
I
R
EPORT
PARA
N
ET
B
EANS
Agora com a criação de um relatório básico, você está preparado para configurar o iReport para NetBeans em algumas de suas características.
Vá ao menu Tools e clique no item Options.
Ao surgir à caixa de diálogo Options, as configurações iniciais são do iReport. Como principais itens de configuração você tem:
Na guia General:
• Default unit – Indica a unidade utilizada para o trabalho com os relatórios.
Podem ser: mm, cm, pixels e polegadas.
• Limit the number of records – Quando selecionado, você pode definir o número
máximo de relatórios que podem ser exibidos, alterando em Max number of reports.
• Report locale – Define a localização atual da sua máquina, exibindo de forma
correta certos padrões numéricos como números, moedas e datas.
• Report timezone – Define a timezone da região, pegando automaticamente a
configuração do sistema operacional.
• Ignore pagination – Ignora a paginação de dados na geração dos relatórios. • Use virtualizer – Será visto mais adiante, em outro capítulo.
• Report defaults
o Language – A linguagem utilizada como padrão para os relatórios. Por pa-drão é Java, mas podemos usar nesta versão Groovy e JavaScript.
o Chart theme – Tema para o gráfico. Será visto mais adiante, em outro capítulo.
Em Classpath você pode adicionar bibliotecas e classes não disponíveis pelo iReport para compilar relatórios com acesso a dados de forma específica. Essa guia será utiliza-da mais adiante quando utilizar outras formas de conexão com o banco de utiliza-dados.
Na guia Viewers você pode selecionar cada um dos programas que deseja uti-lizar como visualizadores quando compilar e exportar o relatório em um determi-nado formato. Depois, para visualizar no formato desejado, dentro do programa selecionado, você seleciona no menu Preview.
Adicione um programa que deseja utilizar para cada tipo de arquivo, principal-mente o PDF que será muito utilizado ao longo do livro.
A
COMPILAÇÃO
DO
I
R
EPORT
PARA
N
ET
B
EANS
NO
PREVIEW
Por padrão, o iReport utiliza o seu diretório corrente do arquivo .jrxml, aberto do seu relatório, para guardar os arquivos compilados.
Se determinar outro programa como preview, ele exibirá tanto internamente como abrirá o programa configurado para exibir o formato desejado.
A
VERSÃO
DO
I
R
EPORT
PARA
N
ET
B
EANS
COMO
PLUG
-
IN
Diferente do que acontece com a versão Standalone, o plug-in iReport for NetBeans exi-ge a criação de um projeto, seja Web ou Desktop, para que seja possível criar um relatório.
Primeiro, antes de criar o relatório, selecione um diretório ou pacote onde vai criá-lo. Ao criar um novo arquivo, New File, você seleciona em Categories o item
Report e, em File Types, novamente Report para o assistente de relatórios.
Demonstração
Ao avançar, você define o nome do relatório, só que desta vez deve manter a extensão, como por exemplo: PrimeiroRelatorio.jrxml.
Na etapa de conexões siga os mesmos procedimentos feitos no passo número
2 da versão Standalone. Como extra, você pode selecionar uma conexão ativa já
existente do NetBeans IDE, com a opção NetBeans Database JDBC connection.
O
ARQUIVO DEPROPRIEDADES DO IR
EPORT COMOPLUG-
INDiferente da versão Standalone, a versão plug-in armazena o arquivo
ireport.pro-perties no diretório de configurações do NetBeans IDE. Neste caso, ele costuma se
en-contrar no diretório de usuário da sua máquina com o nome de .netbeans. O caminho para o arquivo é /.netbeans/dev/config/Preferences/com/jaspersoft/ireport.properties.
A
BRINDO UMRELATÓRIO NOIR
EPORTPARAN
ETB
EANSUm relatório criado em nosso idioma possui muitos acentos em rótulos, devido a nossa língua. Entretanto, no NetBeans, ainda na versão utilizada pelo iReport e não corrigida até o momento que este livro é escrito, há o problema com a codifica-ção de caracteres no sistema operacional Windows, que inicializa trabalhando com o padrão iso-8859-1.
Como o tipo aceito pelo iReport é UTF-8, o programa precisa criar arquivos neste padrão. Se isso não ocorrer, quando abrir um relatório com a codificação diferente de UTF-8, verá o erro mostrado na Figura 2.8.
Figura 2.8 – Erro ao ler um relatório criado com acentos
Para corrigir este problema, basta alterar o atalho que inicializa o programa, transmitindo o seguinte parâmetro: -J-Dfile.encoding=UTF-8.
Você pode resolver este problema simplesmente criando um arquivo .bat, no diretório bin da instalação do iReport, da seguinte forma:
ireport.exe -J-Dfile.encoding=UTF-8
Porém, pode ser que você acredite que esta solução seja muito ruim e quer algo mais profissional. Neste caso, basta alterar o arquivo de configurações chamado - que é o mesmo do NetBeans (netbeans.conf), porém, com outro nome.
Altere no arquivo, que se encontra no diretório etc, no local da instalação do seu iReport, na seguinte linha:
default_options=”-J-Xms24m -J-Xmx64m -J-Dfile.encoding=UTF-8”
Ao inicializar o iReport, ele carregará estas configurações, encontradas nesta linha, e inicializará os arquivos com essa codificação.
I
R
EPORT PARAN
ETB
EANS EMINGLÊSO suporte para o idioma nativo encontrado no sistema operacional é automático no NetBeans em que o iReport foi desenvolvido. Se desejar tê-lo somente em inglês, adicione as seguintes informações no arquivo ireport.conf, em default_options, junto aos demais parâmetros:
3
E
STRUTURA
DE
UM
RELATÓRIO
E
SEU
DESENVOLVIMENTO
“A única hora que você não pode falhar é na última
vez que tentar”.
Charles Kettering
Um relatório é uma maneira agradável de apresentar as informações vindas de alguma base de dados com sua aparência formatada. Na maioria das vezes, relató-rios são usados para agrupar as informações vindas de um conjunto de dados, rela-cionados entre si, oriundos de diversas tabelas. Como resultado você tem apenas os campos determinados na construção do seu relatório e exposto como tal de forma a simplificar a compreensão das informações. Vindo em um formato padronizado para impressão, como um texto feito em um editor de textos, você só precisa man-dar para a impressão ou exportá-los para outro formato de uso maior.
Neste capítulo você irá conhecer a estrutura de um relatório JasperReports na ferramenta iReport para NetBeans e suas propriedades.
A
ESTRUTURA
DO
RELATÓRIO
Um relatório no JasperReports possui diversas seções, separadas por linhas ho-rizontais ao qual são chamadas de Bands (bandas).
O comportamento de cada Band depende da funcionalidade para a qual está pre-parada. Quando o relatório se junta aos dados para rodar a impressão, estas seções são impressas na tela de diferentes maneiras, com diferentes tempos. Por exemplo, o cabeçalho da página (pageHeader) é repetido em todas as páginas, uma vez em cada página, enquanto que os detalhes onde serão exibidos os dados (detail), é gerado em uma seqüência elaborada de acordo com os dados existentes (query ou
datasource), repetindo-se uma vez para cada registro, incorporando-se ao desenho
do relatório.
As bands de um relatório JasperReports é dividido em dez seções pré-definidas para que novos grupos possam ser adicionados.
Demonstração
• Summary on a new page - esta opção é similar a anterior (Title on a new page), mas com a diferença de ser a banda summary que será impressa como
a última página.
• Floating column footer - as bandas columnFooter são impressas por padrão
no fim das páginas. Se na impressão do relatório não houver dados suficientes para preencher uma página, um espaço 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 após a impressão da coluna, marque a opção Floating column footer. Esta opção permite forçar a impressão da banda
columnFooter imediatamente após a última interação da banda detail e não do
término de todas as colunas. Esta opção é geralmente usada quando você quer criar tabelas usando os elementos de relatórios.
• Ignore pagination - ignora a paginação ao preencher o relatório,
impossibi-litando a visualização das demais páginas caso haja mais que uma. Quando ativa, esta opção implica até mesmo na visualização correta dos dados caso haja mais de uma coluna.
• Print order - a ordem de impressão determina como os dados impressos na
pági-na serão organizados em mais de uma colupági-na. O padrão para a ordem de impres-são é Vertical. Com a ordem Vertical, primeiro os dados impres-são impressos um em-baixo do outro, passando para uma nova coluna somente quando a coluna está totalmente preenchida no final da página. Na ordem Horizontal os dados são preenchidos em linha. Os dados passam por todas as colunas, adicionando uma nova linha somente quando a última coluna da página foi preenchida naquela determinada linha. A Figura 3.5 a seguir ilustra as duas ordens de impressão.
Figura 3.5 – Ordem de impressão na Vertical e na Horizontal
4
C
RIANDO
UM
RELATÓRIO
SEM
O
USO
DE
ASSISTENTES
“A imaginação é mais poderosa que o conhecimento. Ela
alarga a visão, estimula a inteligência, desafia o
impos-sível. Sem a imaginação, o pensamento estagnará.”
Albert Einstein
Para uma maior compreensão dos diversos elementos que compõem um relató-rio no JasperReports, através do iReport para NetBeans, é importante a um desen-volvedor aprender a desenhá-lo manualmente, isto é, sem o uso de assistentes.
No capítulo anterior foram apresentadas as bandas e as configurações iniciais de um relatório em branco através de suas propriedades. Neste capítulo você irá aprender a criar um relatório manualmente, adicionando diversos elementos, confi-gurando-os e trabalhando com banco de dados.
I
NICIANDO UMRELATÓRIO MANUALMENTEPara iniciar, crie um novo relatório. Na propriedade do relatório (selecione
re-port name na janela Rere-port Inspector) dê um nome para o seu relatório. Os
tama-nhos predefinidos serão mantidos.
Dica: Caso queira visualizar o Grid para desenhar o relatório, vá ao menu View>Report Designer Grid e clique em Show Grid.
A
JANELAP
ALETTEO iReport para NetBeans na lateral direita a janela Palette. Esta janela contém doze elementos que são muito usados na construção de um relatório. Estes ditos “elementos” são objetos gráficos que podem compor um relatório, como uma linha, rótulo ou uma elipse.
A Figura 4.1 apresenta as principais ferramentas que podem ser usadas tanto para a criação de elementos, como também para sua manipulação, em um relatório JasperReports.
Figura 4.1 - Ferramentas para a criação de elementos no relatório
1. Break – Quebra a página a partir dele. 2. Ellipse – Desenha elipses no relatório.
3. Line – Em um relatório JasperReports uma linha é definida por um elemento
retangular com uma linha diagonal. A linha pode ser desenhada em uma reta perfeita, na horizontal, vertical ou em ângulo se pressionada a tecla <Shift> antes de arrastar. A linha segue o grid.
4. Static Text – Utilizado para criar rótulos de relatórios.
5. Chart – Gera um gráfico através de valores determinados transmitidos. Mais
adiante haverá um capítulo exclusivamente para gráficos.
6. Frame – Cria quadros que podem conter outros elementos em seu interior,
com bordas ao seu redor.
7. Rectangle – Usado para desenhar retângulos ao redor de outros elementos,
criando destaques como uma formatação de parágrafo de um programa de edição de textos, este elemento pode também conter retângulos com cantos arredondados.
8. Subreport – Cria um relatório dentro de outro, o que chamamos de
mestre-deta-lhe. Mais adiante haverá um capítulo abordando exclusivamente este assunto.
9. Crosstab – Desenvolve o que chamamos em programas de planilhas
eletrô-nicas de tabela dinâmica (referência cruzada), muito utilizado em relatórios gerenciais (Business Intelligence). Mais adiante também haverá um capítulo abordando exclusivamente este assunto.
10. Image – Utilizado para exibir imagens em seu relatório. Podem ser imagens
dinâmicas (preenchidas por um banco de dados, por exemplo) ou estáticas.
11. Round Rectangle – Gera o elemento rectangle, porém, com a propriedade Radius já pré-definida com um valor.
12. Text Field – Utilizado para criar os campos dinâmicos dos relatórios. É neste
elemento que você se conecta a um determinado campo do banco de dados para exibir suas informações, por exemplo.