Você está na página 1de 80

Jasper iReport

Ferramenta para desenvolvimento e


gerao de relatrios utilizando Java
TJAVIREP
Setembro/2005
Apostila desenvolvida especialmente para a Target Informtica Ltda.
Sua cpia ou reprodu!o " e#pressamente proi$ida.
T@rgetTrust Treinamento e Tecnologia I
T@rgetTrust Treinamento e Tecnologia II
Sumrio
1. O que o iReport........................................................................1
Objetivos.......................................................................................................................................2
O que o iReport..........................................................................................................................3
O que o JasperReports................................................................................................................4
Exerccios......................................................................................................................................5
2. Instalando o iReport....................................................................1
Objetivos.......................................................................................................................................2
Aonde obter o iReport...................................................................................................................3
Requisitos mnimos do iReport.....................................................................................................4
nsta!ando o iReport......................................................................................................................5
3. Acesso ao banco de Dados...........................................................1
Objetivos.......................................................................................................................................2
"on#i$urando %ata&ource.............................................................................................................3
%e#inindo a "onex'o Ativa..........................................................................................................5
4. iReport Wizard............................................................................1
Objetivos.......................................................................................................................................2
"riando um re!at(rio no iReport...................................................................................................3
Exerccios......................................................................................................................................)
5. Modelo Relatrio iReport.............................................................1
Objetivos.......................................................................................................................................2
Estrutura de um re!at(rio..............................................................................................................3
*ari+veis, -ar.metros e campos.................................................................................................../
Arquivos $erados pe!o iReport...................................................................................................01
Exerccios....................................................................................................................................00
!. "usto#izando Relatrios.............................................................1
Objetivos.......................................................................................................................................2
"riando um re!at(rio.....................................................................................................................3
nserindo 2r+#icos no re!at(rio.............................................................................................3
Exerccios....................................................................................................................................03
$. "riando %ubrelatrios................................................................15
Objetivos.....................................................................................................................................04
O que um subre!at(rio..............................................................................................................0/
"riando um subre!at(rio.............................................................................................................0)
Exerccios....................................................................................................................................25
&. 'isualizando e %al(ando Relatrios.............................................2!
Objetivos.....................................................................................................................................2/
2erando o seu re!at(rio em #ormato -%5...................................................................................2)
2erando o seu re!at(rio em #ormato 6789...............................................................................31
Exerccios....................................................................................................................................32
T@rgetTrust Treinamento e Tecnologia III
T@rgetTrust Treinamento e Tecnologia IV
1.
1.
O que o iReport
O que o iReport
% &ue " o iReport
Objetivos
Sa$er o &ue " o iReport
Sa$er o &ue " o JasperReports
Entender para &ue serve o iReport
'iferenciar o iReport do JasperReports
% &ue " o iReport
O que o iReport
% iReport " uma ferramenta poderosa( intuit)va e fcil de usar &ue
constroi relatrios para JasperReports. % iReport " desenvolvido *++, em
Java.
Essa ferramenta permite ao usurio gerar relatrios comple#os com
imagens( grficos e su$relatrios. % iReport " integrado com o Jfree-.art( uma
das $i$liotecas Java de gera!o de grficos mais difundidas.
-om o iReport " poss)vel gerar relatrios em vrios formatos incluindo
P'/( 0T1L( 21L( 2LS( -VS(entre outros.
% &ue " o iReport
O que o JasperReports
JasperReport " a $i$lioteca de classes &ue torna poss)vel gerar os
relatrios. % iReport " apenas uma interface grfica &ue fa3 uso do
JasperReports.
S!o as classes e m"todos disponi$ili3ados pelo JasperReports &ue ser!o
usados para efitivamente gerar e e#portar os relatrios.
% &ue " o iReport
Exerccios
*. % &ue fa3 o iReport4
5. Para &ue serve o JasperReports4
% &ue " o iReport
Espao para anota6es
% &ue " o iReport
5.
5.
Instalando o iReport
Instalando o iReport
Instalando o iReport
Objetivos
Sa$er como o$ter o iReport
Sa$er instalar o iReport
Sa$er os re&uisitos m)nimos para se instalar o iReport
Instalando o iReport
Ao!e obter o iReport
% iReport est dispon)vel para download no site da Source/orge.net. %
iReport e o JasperReports s!o pro7etos dessa comunidade de desenvolvedores
de soft8are livre.
% endereo para download " .ttp9::ireport.sf.net
Instalando o iReport
Requisitos mimos !o iReport
Para &ue o iReport funcione corretamente no seu sistema " necessrio
&ue voc; ten.a a vers!o mais atuali3ada do J'< instalada no seu sistema.
-aso voc; ainda n!o ten.a o Java 'evelopment <it =J'<> instalado no seu
computador( voc; pode fa3er o do8nload no site da Sun9 .ttp9::7ava.sun.com
Instalando o iReport
"sta#a!o o iReport
A instala!o do iReport " $astante simples. ? preciso apenas
descompactar o ar&uivo .3ip &ue voc; $ai#ou do site da Source/orge.net.
Ao descompactar esse ar&uivo ele 7 vai criar toda a estrutura de
diretrios necessrios para &ue o iReport funcione.
@ma ve3 descompactado( $asta e#ecutar o ar&uivo iReport.$at =para
Aindo8s>( ou iReport.s. =para Linu#>( &ue o iReport ir ser e#eutado.
Instalando o iReport
Espao para anota6es
$.
$.
Acesso ao baco !e %a!os
Acesso ao baco !e %a!os
Acesso ao $anco de 'ados
Objetivos
-omo configurar o 'ataSource &ue vai ser utili3ado pelo iReport
-on.ecer os diferentes drivers para cone#!o com o Banco de
'ados.
Testar a cone#!o com o Banco de 'ados.
Acesso ao $anco de 'ados
&o'i(ura!o %ataSource
Logo &ue o iReport iniciar ser necessrio configurar o 'ataSource para
&ue se7a poss)vel acessar o $anco de dados( so$re &ual vamos tra$al.ar para
gerar nossos relatrios. A defini!o do 'ataSource n!o " o$rigatria. 1as se
voc; n!o tiver um $anco de dados dispon)vel n!o ser poss)vel testar o
relatrios &ue voc; estar criando.
Para definir a 'ataSource( cli&ue no menu C'ataSourceD e selecione a
op!o C-onnections:'ataSourceD. A 7anela mostrada na figura E.* vai
aparecer. -li&ue no $ot!o CFe8D para criar uma nova cone#!o.
/igura E.* G -one#6es : /ontes de 'ados
Ao clicar no $ot!o Fe8 a 7anela da figura E.5 vai se a$rir.
Vamos utili3ar uma cone#!o com o $anco de dados %racle. Ent!o
devemos preenc.er essa 7anela com os seguintes valores9
-onnection THpe: 'atasource9 'ata$ase J'B- connection
Fame9 -one#!o %racle
J'B- 'river9 oracle.7d$c.driver.%racle'river
Server Address9 oracled$.targettrust.com.$r
'ata$ase9 ireportd$
@sername9 7ava
Pass8ord9 7ava
Acesso ao $anco de 'ados
/igura E.5 G -onnections properties
Ao preenc.er todos os campos acima cli&ue no $ot!o Ai3ard. Ele ir
gerar a J'B- @RL para voc;.
A @RL gerada ser
7d$c9oracle9t.in9Ioracle.targettrust.com.$r9*J5*9ireportd$.
-aso a porta do seu $anco de dados oracle n!o se7a a *J5*( voc; pode
alterar manualmente. % $ot!o 8i3ard " s uma facilidade( se voc; 7 sou$er a
sua J'B- @RL( n!o precisa fa3er o Ai3ard( $asta digitar a @RL no campo J'B-
@RL.
@ma ve3 definida a sua J'B- @RL cli&ue no $ot!o Test para verificar se a
cone#!o est funcionando. -aso o teste for $em sucedido uma mensagem
popKup vai avisar &ue o teste da cone#!o foi $em sucedido. 'o contrrio.
Aparecer um mensagem de erro.
-li&ue no $ot!o Save e sua cone#!o estar salva e pronta para uso.
Acesso ao $anco de 'ados
%e'ii!o a &oex)o Ativa
Para indicar ao iReport para usar a cone#!o &ue aca$amos de criar como
a cone#!o padr!o( devemos definir a cone#!o &ue deve ficar ativa en&uanto
estamo gerando os nosso relatrios. Para isso $asta clicar no menu CBuildD e
selecionar CSet Active -onnectionD. A 7anela da figura E.E ir aparecer.
Selecione C%racle -onnectionD e cli&ue no $ot!o %<.
/igura E.E G Set Active -onnection
Isso far com &ue o iReport utili3e a cone#!o com o %racle para criar e
visuali3ar os relatrios.
Acesso ao $anco de 'ados
Espao para anota6es
*.
*.
iReport +i,ar!
iReport +i,ar!
iReport Ai3ard
Objetivos
Aprender a utili3ar o iReport Ai3ard
-riar um relatrio utili3ando o iReport
Visuali3ar o relatrio criado
iReport Ai3ard
&ria!o um re#at-rio o iReport
Vamos criar o nosso primeiro relatrio utili3ando o Ai3ard do iReport.
Fo menu /ile selecione o item CReport Ai3ardD. A 7anela de dilogo ir
guiar o processo para gera!o de um relatrio. Fa passo *( conforme mostra a
figura L.*( devemos colocar &ual o SML &ue vamos usar para gerar esse
relatrio. Fo nosso e#emplo( vamos listar todo o conteNdo da ta$ela vendas.
/igura L.* G Passo * do iReport Ai3ard.
Fo passo 5( vamos selecionar as colunas &ue dese7amos mostrar no relatrio.
Vamos selecionar todos os campos( conforme mostra a figura L.5.
iReport Ai3ard
/igura L.5 G Passo 5 do iReport Ai3ard.
Fo passo E( podemos escol.er se &ueremos agrupar o resultado por
alguma coluna. Fesse primeiro e#emplo vamos dei#ar em $ranco e seguir para
o passo L( conforme mostra a figura L.E.
/igura L.E G Passo E do iReport Ai3ard
iReport Ai3ard
Fo passo L( vamos selecionar o laHout do relatrio. % iReport 7 tem
alguns laHouts default para serem selecionados. %s laHouts podem ser ta$ular
ou dispostos em colunas. Vamos escol.er ta$ular e o laHout classicT.#ml(
conforme mostra a figura L.L.
/igura L.L G Passo L do iReport Ai3rd
Fo passo J $asta clicar finis. para finali3ar a cria!o do seu relatrio(
conforme mostra a figura.
iReport Ai3ard
/igura L.J G Passo J do iReport Ai3ard
Agora para visuali3ar o seu relatrio rec"m gerado( selecione no menu
CBuildD( a op!o CJRVie8er previe8D.
/igura L.O G 1enu Build
iReport Ai3ard
Aps selecionar o item mostrado na figura L.O( cli&ue no menu CBuildD e
selecione a op!o CE#ecute report =using active conn.>D. Vai aparecer uma
7anela pedindo para salvar o relatrio. Salve o relatrio e a visuali3a!o deve
aparecer( como mostra a figura L.P.
/igura L.P G Previe8 do relatrio gerado pelo Ai3ard.
Pronto voc; aca$a de construir o primeiro relatrio utili3ando o iReport.
iReport Ai3ard
Exerccios
*. @tili3ando o Ai3ard do iReport( crie um relatrio &ue liste todos os
produtos e &uantidades desses produtos e a &uantidade de cada um
deles agrupados por estado.
5. @tili3ando o Ai3ard do iReport( crie um relatrio &ue apresente o total
das &uantidades de produtos em cada estado. @tili3e o SML a$ai#o para
efetuar a pes&uisa9
SELE-T @/( S@1=MT'E> AS T%TAL /R%1 VEF'AS QR%@P BR @/
E. -om o Ai3ard do iReport crie um relatrio CcolumnarD &ue mostre o
nome e o preo dos produtos da ta$ela produto.
a. -li&ue em /ile S Report Ai3ard
$. Entre o comnado SML Cselect T from produtoD
c. -li&ue Fe#t
d. Selecione as colunas CprecoD e CnomeD e cli&ue Fe#t.
e. -li&ue Fe#t novamente
f. Selecione C-olumnarD da com$o$o# de laHout e cli&ue no template
classic-.#ml. -li&ue Fe#t.
g. -li&ue em /inis.
.. Salve o relatrio com o nome a sua escol.a.
i. Para visuali3ar o relatrio cli&ue em Build S E#ecute report =usinf
active conn.>
iReport Ai3ard
Espao para anota6es
5.
5.
.o!e#o Re#at-rio iReport
.o!e#o Re#at-rio iReport
1odelo Relatrio iReport
Objetivos
Entender a estrutura de um relatrio iReport
Sa$er identificar cada se!o de um relatrio gerado pelo iReport
Selecionar as sess6es &ue voc; &uer apresentar no seu relatrio
1odelo Relatrio iReport
Estrutura !e um re#at-rio
%s relatrio do JasperReports gerados pelo iReport tem a seguinte
estrutura conforme mostra a ta$ela J.*.
*. T)tulo
5. -a$eal.o de Pgina
E. -a$eal.o de -oluna
L. -a$eal.o de Qrupo *
J. -a$eal.o de Qrupo 5
O. 'etal.e
=repete para cada novo registro no $anco de
dados>
P. Rodap" do Qrupo 5
U. Rodap" do Qrupo E
V. Rodap" da -oluna
*+. Rodap" da Pgina
**. Sumrio
Ta$ela J.* G Estrutura de um relatrio JasperReports
As sess6es *. T)tulo e **. Sumrio s!o e#i$idas apenas uma ve3 em todo
o relatrio. As sess6es 5. -a$eal.o da Pgina e *+. Rodap" da Pgina
repetem a cada nova pgina. As sess6es E. -a$eal.o -oluna e V. Rodap"
-oluna repetem a cada nova coluna dentro da pgina. As sess6es L( J( P e U
repetem de acordo com mudanas dos campos de O. 'etal.e. Pode .aver
&uantos grupos se dese7e( inclusive 3ero.
Essas sess6es s!o c.amadas fai#as =bands>. Ent!o temos a fai#o
deT)tulo( a fai#a de -a$eal.o de Pgina( a fai#a de 'etal.e( etc.
'entro dessas fai#as " &ue s!o inseridos os elementos do relatrio ( tais
como os rtulos( campos( imagens( grficos( etc.
1odelo Relatrio iReport
A figura J.* mostra as fai#as de t)tulo( ca$eal.o de pgina( ca$eal.o
de coluna( detal.e( rodap" de pgina.
/igura J.* G /ai#as do Relatrio iReport
Fa fai#a de t)tulo temos o campo de te#to esttico C-lasic Report
TemplateD.
A fai#a de ca$eal.o da pgina est em $ranco apenas para dar espao
entre o t)tulo e o ca$eal.o da coluna.
Fa fai#a ca$eal.o da coluna temos os campos de te#to estticos C@/D(
CProdutoD e CMT'ED.
Fa fai#a de detal.e temos campos de refer;ncia aos valores retornados
pela consulta SML W/X@/Y( W/XProdutoY e W/XMT'EY. F!o se preocupe com o
&ue isso &uer di3er( vamos e#plicar em seguida. % importante " identificar as
fai#as.
Fa fai#a de rodap" de pgina( est!o as fun6es de data e pagina!o.
-omo os elementos 7 est!o dispostos na fai#as( fica mais dif)cil
indentificKlas. Se n!o .ouvesse nen.um elemento no relatrio as fai#as
ficariam como demonstra figura J.5.
1odelo Relatrio iReport
/igura J.5 G /ai#as sem elementos
Fote as demais fai#as n!o aparecem por&ue eles est!o
CescondidasD. Para visuali3ar todas as fai#as de um relatrio( cli&ue no
menu principal CVie8D e seleciona a op!o CBandsD. A 7anela de dilogo
mostrada na figura J.E vai aparecer. Fote &ue ela lista todas as fai#as
desse relatrio. As fai#as com altiura 3ero ficam escondidas. As fai#as
com taman.o maior &ue 3ero aparecem no relatrio.Fa figura J.E( a
fai#a de detal.e tem altura igual a *V.
/igura J.E G Janela de /ai#as do iReport
1odelo Relatrio iReport
Assim se voc; &uer mostrar alguma fai#a &ue n!o est aparecendo ou
voc; est precisando de mais espao( aumente a altura da fai#a. 'epois " s
colocar os elementos &ue dese7ar.
1odelo Relatrio iReport
/ari0veis1 2ar3metros e campos
-omo voc;s viram na figura J.*( apreceram vrias e#press6es como
W/X@/Y WVXPAQEZF@1BERY. 1as o &ue s!o essas e#press6es4
W/X[noma da coluna\Y " uma refer;ncias as colunas =ou campos>
retornados pela consulta SML do relatrio. Assim se seu SML tiver como retorno
uma coluna @/( W/X@/Y referencia essa coluna. Ve7a a figura J.* para ver
como as colunas resultantes do SML s!o mapeadas para os campos do nosso
relatrio.
WVX[noma varivelY referencia uma varivel &ue " calculada dentro
do relatrio e especificado pelo programador. Algumas variveis como o
nNmero da pgina( WVXPAQEZF@1BERY( o iReport 7 disponi$ili3a
automaticamente para voc;.
WPX[nome do par]metro\Y indica um par]metro passado para a
&uerH SML do relatrio. %s param;tros s!o uteis para cue possamos e#ecutar a
&uerH de acordo com a sele!o do usurio. Por e#emplo( para tra3er o
resultado das vendas de apenas um estado podemos criar um par]metro na
consulta SML para tra3er os resultados do estado indicado.
Para criar um par]metro cli&ue no menu principal CVie8D e selecione a
op!o CReport ParametersD. A 7anela da figura J.L vai aparecer.
/igura J.L G Par]metros do Relatrio
-li&ue no Bot!o CFe8D. @ma nova 7anela vai aperecer conforme mostra
a figura J.J. Preenc.a o campo CParameter FameD com CestadoD. % campo
C-lass THpeD com C7ava.lang.StringD. 1ar&ue o campo CIs /or PromptingD(
1odelo Relatrio iReport
assim &uando voc; e#ecutar o relatrio dentro do iReport ele vai perguntar
&ual o valor vc &uer passar para esse par]metro. % campo C'efault value
e#pressionD indica um valor padr!o a ser usado caso o valor para o par]metro
estado n!o se7a passado ao relatrio. Preenc.a esse campo com C CSPD D. %
campo CParameter 'escriptionD cont"m a descri!o do &ue esse par]metro
representa. -li&ue em %< e depois fec.e a 7anela de par]metros.
/igura J.J G Adicionando novo par]metro
-li&ue no menu principal CVie8D e selecione CReport MuerHD. Agora
altere o s&l do relatrio como indica o cdigo J.*.
select * from vendas where uf = $P{estado}
-digo J.* G MuerH SML parametri3ada
Agora e#ecute o seu relatrio clicando no menu principal CBuildD e
selecionando a op!o CE#ecute Report =using active conn.>D.
A 7anela da figura J.O deve aparecer( perguntando &ual o valor do
par]metro estado. Preenc.a com C1QD e o resultado do relatrio deve ser o
&ue mostra a figura J.P.
1odelo Relatrio iReport
/igura J.O G Entrada de Par]metro
/igura J.P G Relatrio das vendas do estado C1QD
1odelo Relatrio iReport
Arquivos (era!os pe#o iReport
Agora &ue voc; 7 viu os detal.es da interface grfica( " preciso
entender o &ue o iReport fa3 para gerar esse relatrios.
Salve o seu relatrio corrente. -li&ue no menu principal em C/ileD e
selecione CSaveD. Ve7a &ue ele vai salvar o nosso relatrio com a e#tens!o
.7r#ml =JasperReports 21L>. Esse ar&uivo " um documento padr!o 21L. Ele
cont"m as configura6es do nosso relatrio. Esse 21L " utili3ado pelo
JasperReports para gerar um ar&uivo $inrio com a e#tens!o .Jasper &ue " o
ar&uivo utili3ado pelo JasperReports para efetivamente gerar o nosso relatrio.
% ar&uivo .7r#ml " muito comple#o. Por isso editKlo manualmente seria
no m)nimo tra$al.oso e nada produtivo( 7 &ue teriamos &ue descrever em
forma de 21L tudo a&uilo &ue pode ser feito de forma grfica atrav"s do
iReport.
@ma das vantagens de se ter o relatrio descrito num documento 21L
" &ue ele " facilmente altervel. Por e#emplo( se o nome da sua empresa
mudar( e voc; tiver *++ relatrios aonde fa3er a altera!o. Basta mandar
su$stituir em seus ar&uivos .7r#ml o nome vel.o da empresa pelo novo(
compilar os .7r#ml novamente e voc; 7 terminou a sua tarefa.
1odelo Relatrio iReport
Exerccios
0. -omo " dividio um relatorio4 E para &ue serve cada sess!o4
5. -omo se referencia uma coluna resultante do SML do relatrio no
iReport4
E. -omo passar um par]metro para um relatrio4
L. % &ue " um ar&uivo .7r#ml4
J. % &ue " um ar&uivo .7asper4
O. -rie um relatrio &ue rece$e como par]metro um preo m)nimo e um
preo m#imo e mostre todos os produtos nessa fai#a de preo.
a. -li&ue em /ile S Report Ai3ard
b. Entre o comando SML Cselect T from produtoD e cli&ue Fe#t
c. Selecione a coluna CFomeD e cli&ue Fe#t
d. -li&ue Fe#t novamente
e. Selecione o laHout CTa$ularD da com$o$o# e o template
classicT.#ml
f. -li&ue Fe#t e depois -li&ue em /inis.
g. -li&ue em CVie8 S Report ParametersD
.. -li&ue no $ot!o Fe8
i. Fo campo parameter name digite m)nimo.
j. 1ude o parameter class tHpe para dou$le
:. 1ar&ue Cis for PromptingD. -li&ue em %<.
l. -li&ue em Fe8 novamente
m. Fo campo parameter name digite ma#imo.
n. 1ude o parameter class tHpe para dou$le
o. 1ar&ue Cis for PromptingD. -li&ue em %<.
p. /ec.e a 7anela de Parameters
&. -li&ue em CVie8 S Report MuerHD
1odelo Relatrio iReport
r. Adicione a &uerH a clusula C8.ere preco \ WPXminimoY and preco
[ WPXma#imoYD. % seu comando SML deve ficar assim9 Cselect T
from produto 8.ere preco \ WPXminimoY and preco [
WPXma#imoYD
s. Salve o relatrio.
t. Para visuali3ar( cli&ue em Build S E#ecute Report =using active
conn.>
u. % iReport vai perguntar o valor m)nimo e m#imo. Entre com os
valores =C+D e CVVVVVVD( por e#emplo> e ve7a o resultado.
v. E#ecute novamente( mas agora mude os valores de m)nimo e
m#imo =+ e J++> e ve7a se o relatrio muda.
1odelo Relatrio iReport
Espao para anota6es
1odelo Relatrio iReport
4.
4.
&ustomi,a!o Re#at-rios
&ustomi,a!o Re#at-rios
Visuali3ando e Salvando Relatrios
Objetivos
-riar campos estticos no relatrio
-riar campos para apresentar o resultado do SML
-riar grficos para seus relatrios
Visuali3ando e Salvando Relatrios
&ria!o um re#at-rio
At" agora vimos como criar um relatrio a partir do iReport Ai3ard.
Agora vamos criar um relatrio desde o comeo. Para tanto( cli&ue em C/ileD
no menu principal e selecione a op!o CFe8 'ocumentD.
A 7anela da figura O.* ir aparecer. Fela " poss)vel escol.er o taman.o(
definir as margens( a orienta!o do relatrio e o nome. '; o nome de
C1euRelatorioD e cli&ue no $ot!o %<.
/igura O.* G Fe8 'ocument
@m novo relatrio em $ranco vai ser criado como mostra a figura O.5.
Fele podemos ver &ue algumas fai#as 7 aparecem com taman.os pr"K
definidos. Agora $asta colocar os elementos &ue dese7armos nas fai#as para
montar o nosso relatrio.
Visuali3ando e Salvando Relatrios
/igura O.5 G Relatrio em Branco
A figura O.E mostra alguns $ot6es da $arra de ferramenta &ue vamos
utili3ar. 'a es&uerda para a direita( s!o eles9 Imagem Te#to Esttico( -ampo
de te#to( Su$Relatrio( Qrfico e -digo de Barra.
/igura O.E G Bot6es da Barra de /erramenta
-li&ue no $ot!o de te#to esttico( arraste o cursor so$re a fai#a de T)tulo
para inserir o elemento de te#to esttico. '; um duplo cli&ue so$re o elemento
rec"m inserido e a 7anela da figura O.E deve aparecer. Fela voc; pode alterar
todas as propriedades desse elemento. 1ude o te#to para C1eu RelatrioD e
aumente o taman.o da fonte para 5+.
Visuali3ando e Salvando Relatrios

/igura O .L G Propriedades do campo Esttico
Ve7a como ficou so$rando espao na $anda de t)tulo diminua o taman.o
da fai#a de t)tulo =como foi mostrado no cap)tulo J>. Aproveite e diminua a
fai#a de -a$eal.o de Pagina =page .eader> para altura *+( pois t$ n!o vamos
utili3Kla.
Insira mais tr;s elementos de te#to esttico na fai#a de -a$eal.o de
-oluna =column0eader>. 1ude o te#to para CI'D( C'escri!oD e CPreoD.
Para podermos inserir dados nesse relatrio vamos listar a ta$ela de
produto. Para tanto cli&ue no menu CVie8D e selecione CReport MuerHD. Entre o
comando SML Cselect T from produtoD e cli&ue no $ot!o %<.
Agora cli&ue no $ot!o de campo de te#to = o $ot!o com a letra /
estili3ada>. Insira tr;s campos na fai#a de 'etal.e =detial>. Para poder
referenciar uma coluna da nossa consulta SML( temos &ue dar duplo cli&ue
so$re o elemento de campo de te#to inserido. @ma 7anela como mostra a
figura O.J vai a$rir( cli&ue na a$a Cte#t fieldD. Fo campo Te#t /ield E#pression(
entre a refer;ncia da coluna. Por e#emplo( a coluna I' da consulta SML acima
" referenciada com a e#press!o W/XI'Y. /aa o mesmo para os outros dois
campos. Referencia a coluna CnomeD e CprecoD. -uide para colocar o tipo de
dado correto no cmapo CTe#tfield E#pression -lassD para evitar erros. Repare
&ue a e#press!o vai ficar verde &uando voc; entrar uma e#press!o vlida.
Visuali3ando e Salvando Relatrios
/igura O.J G Propriedades -ampo de Te#to
Agora esconda as demais fai#as =colocando sua altura para 3ero>( menos
a fai#a de Rodap" de Pgina =page/ooter>.
Fa fai#a de rodap" de pgina( vamos colocar a data e o nNmero da
pgina. Para tanto adicione dois novos campos de te#to na fai#a de rodap" de
pgina. '; duplo cli&ue so$re o campo de te#to da data. -li&ue na a$a CTe#t
/ieldD( tro&ue o Te#tfield E#presion -lass para 7ava.lang.'ate e no campo
CTe#tfield e#pressionD entre o comando Cne8 'ate=>D. '; duplo cli&ue no o
outro campo de te#to e cli&ue na a$a CTe#t /ieldD. 1ude o CTe#tfield
E#pression -lassD para 7ava.lang.Integer e no campo CTe#tfield e#pressionD
colo&ue a refer;ncia a varivel do nNmero da pgina( WVXPAQEZF@1BERY.
Para visuali3ar as variveis pr"Kdispon)veis =builtin> em todos os
relatrios $asta clicar no menu CVie8D e selecionar CReport Varia$lesD.
% seu relatrio agora deve aparecer como o d figura O.O. -li&ue no
menu CBuildD e selcione CE#ecute Report =using active conn.>D e ve7a o
resultado.
Visuali3ando e Salvando Relatrios
/igura O.O G Relatrio C1eu RelatrioD
Visuali3ando e Salvando Relatrios
/igura O.P G Visuali3a!o do C1eu RelatrioD
Visuali3ando e Salvando Relatrios
Inserindo Qrficos no relatrio
Agora &ue 7 criamos um relatrio simples. Vamos colocar um grfico
para ilustrar o nosso relatrio.
Vamos gerar um grfico comparando os preos dos tr;s produtos da
nossa ta$ela.
Aumente a altura da fai#a de sumrio =SummarH> para colocar o nosso
grfico nela.
-li&ue no $ot!o grfico e arraste o cursor so$re a fai#a de sumrio
para criar um novo elemento grfico. Ao criar o elemento a 7anela da figura O.P
vai a$rir.

/igura O.P G Propriedades do grfico
Escol.a o modelo de grfico &ue voc; &uer utili3ar. Fo nosso e#emplo(
vamos utili3ar o grfico torta E'. Selecione esse grfico na 7anela da figura O.P.
-li&ue na a$a CdataD( e depois cli&ue no $ot!o CReport SerriesD. @ma
7anela de dilogo vai a$rir( cli&ue no $ot!o CFe8 SerieD. Isso vai tra3er uma
7anela para voc; criar uma s"rie com os valores &ue devem ser mostrados no
grfico como mostra a figura O.U. Preenc.a o nome como PR%'@T%.PRE-%(
mude o tipo para 7ava.lang.dou$le e de &ual campo da consulta SML &ueremos
ver no grfico( W/XPRE-%Y. -li&ue no $ot!o C-loseD para fec.ar a 7anela.
Repita o processo para criar uma s"rie com as descri6es do produto para
Visuali3ando e Salvando Relatrios
usarmos de rtulo no grfico( ou s7ea( crie uma s"ria PR%'@T%.F%1E( do tipo
7ava.lang.String( referenciando W/XF%1EY.
/igura O.U G Fova S"rie
'e volta a a$a C'ataD( selecione a s"rie PR%'@T%.PRE-% para o valor
do campo CSerie *D. Selecione a s"rie PR%'@T%.F%1E para o campo CLa$elsD.
-li&ue na a$a C-.art 'etailsD para configurar os detal.es de e#i$i!o
do grfico. '; o t)tulo de CPreo dos ProdutosD ao grfico e mar&ue as op6es
CS.o8 LegendD como mostra figura O.V. -li&ue no $ot!o %< para finali3ar.
Visuali3ando e Salvando Relatrios
/igura O.V G 'etal.es do Qrfico.
E#ecute seu relatrio. A figura O.*+ mostra o resultado final.
Visuali3ando e Salvando Relatrios
/igura O.*+ G Relatrio com Qrfico
-omo podemos ver no relatrio e no grfico o produto 'V'KAriter " o
mais caro( seguido pelo -P@ 5.JQ.3 e pelo 1onitor *PD.
Visuali3ando e Salvando Relatrios
Exerccios
* G -rie um relatrio em $ranco. @tili3e a consulta Cselect uf( sum=&tde> as
total from vendas group $H produto( ufD. 1ostre os totais de &uantidade de
produtos por estado no seu relatrio em $ranco. F!o es&uea de dar um t)tulo
ao seu relatrio.
5 G Adicione um grfico =em formato pi33a E'> ao seu relatrio mostrando a
&uantidade de produtos vendidos por estado.
E G -rie um relatrio &ue liste os nomes dos produtos e os seus preos.
Adicione um grfico =formato $arras E'> comparando os produtos por preo.
Visuali3ando e Salvando Relatrios
Visuali3ando e Salvando Relatrios
P.
P.
-riando Su$relatrios
-riando Su$relatrios
Visuali3ando e Salvando Relatrios
Objetivos
%&ue " um su$relatrio
Para &ue serve
-omo usar um su$relatrio para gerar relatrios tipo 1estreK'etal.e
Visuali3ando e Salvando Relatrios
O que um subre#at-rio
@m su$relatrio " um elemento &ue voc; pode adicionar dentro de um
outro relatrio. @m su$relatrio nada mais " &ue um relatrio inserido dentro
de outro. Assim voc; pode modulari3ar seus relatros( criar relatrios
comple#os ou construir relatrios do tipo mestreKdetal.e.
Visuali3ando e Salvando Relatrios
&ria!o um subre#at-rio
Para criar um su$relatrio primeiro a necessrio criar o relatrio &ue
esse su$relatrio ir referenciar. Para isso -li&ue em C/ileD e selecione CFe8
'ocumentD. @ma 7anela vai a$rir para voc; dar o nome do relatrio. -.ame o
relatrio de C1euSu$relatorioD e cli&ue %<.
Adicione um par]metro &ue vai ser usado na consulta SML. Esse par]metro " o
I' do produto. -li&ue em CVie8D e selecione CReport ParametersD. Adicione um
par]metro com o nome de CprodidD( do tipo C7ava.lang.IntegerD e valor default
Cne8 Integer=*>D( como mostra a figura P.*. -li&ue em %< e fec.e a 7anela
anterior.
/igura P.* G Fovo par]metro
-li&ue em CVie8D e selecione CReport MuerHD. Entre a consulta Cselect nome
from produto where id = $P{prodid} e cli&ue em %<.
Agora escoda todos as fai#as menos a fai#a de detal.e. Fela crie um campo de
te#to. '; duplo cli&ue no campo para &ue a$ra a 7anela de propriedades do
campo de te#to. -li&ue na a$a CTe#t /ieldD( selecione o tipo C7ava.lang.StringD
e entre a refer;ncia a coluna nome( &ue &ueremos mostrar( no campo
CTe#tfield e#pressionD. /ec.e a 7anela.
Visuali3ando e Salvando Relatrios
/igura P.5 G -ampo de te#to
Seu su$relatrio deve estar conforme o &ue mostra a figura P.E.
/igura P.E G Su$relatrio
Agora salve seu su$relatrio clicando em C/ileD e selecionando CSaveD.
-rie um novo relatrio a partir do iReport Ai3ard. @se a consulta SML
Cselect uf,produto from vendasD. Fo passo dois do 8i3ard( selecione
Visuali3ando e Salvando Relatrios
apenas a coluna de @/ para ser apresentada no relatrio. Aps terminar( seu
relatrio o 8i3ard deve estar como mostra a figura P.L.
/igura P.L G Relatrio &ue lista os estados
'; dois cli&ues no campo de te#to da coluna @/ = W/X@/Y >. 'esmar&ue
a op!o Cprint repeated valueD como mostra a figura P.J. Isso far com &ue os
valores &ue forem repetidos n!o se7am impressos( ou se7a( os estados &ue 7
foram listados n!o ser!o listados duas ve3es.
/igura P.J G Propriedades do -ampo de te#to @/
Visuali3ando e Salvando Relatrios
Agora aumente a altura da fai#a de 'etal.e =detail> para &ue possamos
inserir o nosso su$relatrio. Aps aumentar a fai#a( insira o su$relatrio como
mostra a figura P.O.
=Bot!o de Su$relatrio da $arra de ferramenta>

/igura P.O G Relatrio com su$relatrio
Agora &ue o elemento de su$relatrio est inserido( temos &ue
configurKlo para usar o su$relatrio &ue criamos anteriormente. Para isso( d;
duplo cli&ue no elemento de su$relatrio. A 7anela da figura P.P vai a$rir( em
Su$report e#pression colo&ue o camin.o do diretrio aonde o
1euSu$relatrio.7asper foi gerado. Adicione um par]metro ao su$report
c.amado CprodidD como mostrado na figura P.U. -li&ue na a$a Su$report e
escol.a C@se -onnection e#pressionD da lista de op6es como mostra a figura
P.V.
Visuali3ando e Salvando Relatrios

/igura P.P G A$a Su$report=%t.er>
/igura P.U G Par]metro do Su$relatrio
Visuali3ando e Salvando Relatrios
/igura P.V G A$a Su$report do elemento Su$Relatrio.
Agora &ue o relatrio e o su$relatrio est!o vinculados( e#ecute o
relatrio principal. %s produtos vendidos em cada estado agora aparecem
discriminados como mostra a figura P.*+.
Visuali3ando e Salvando Relatrios
/igura PK*+ G Relatrio com Su$relatrios
Visuali3ando e Salvando Relatrios
Exerccios
* G /aa um relatrio mestreKdetal.e utili3ando um su$report.
a. -rie um relatrio para ser usado como su$relatrio
$. Acicione um par]metro a esse relatrio
c. -rie o relatrio principal
d. Adicione o elemento de Su$relatrio na fai#a de 'etal.es
e. Edite as propriedades do Su$relatrio e passe o par]metro &ue o
su$relatrio precisa rece$er. -onfigure as demais propriedades.
f. E#ecute o relatrio.
5 G -onstrua outro relatrio mestreKdetal.e utili3ando um su$report. Apresente
o volar total dos produtos vendidos por estado. Adicione um grfico para
comparar os resultados. Siga os mesmos passos do e#erc)cio *.
Visuali3ando e Salvando Relatrios
U.
U.
Visuali3ando e Salvando
Visuali3ando e Salvando

Relatrios
Relatrios
Visuali3ando e Salvando Relatrios
Objetivos
Visuali3ar o relatrio a partir de um programa Java ou de uma pgina
JSP.
Salvar o relatrio nos diferentes formatos como P'/( 0T1L( 21L(
entre outros.
Visuali3ando e Salvando Relatrios
5era!o o seu re#at-rio em 'ormato 2%6
Voc; pode gerar o seu relatrio e salvar o resultado em um ar&uivo P'/.
% JasperReports " capa3 de salvar o seu relatrio em um ar&uivo P'/ sem
complica6es.
Fo cdigo U.* temos o e#emplo de como salvar o nosso relatrio a partir
de uma aplica!o Java padr!o. Para tanto $asta carregar o ar&uivo .JASPER
gerado pelo iReport e os m"todos da $i$lioteca JasperReports fa3em o resto do
servio.
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;
import java.sl.*;
import java.util.*;
pu!lic class "isuali#ador{
private static final $tring driver = %oracle.jd!c.driver.&racle'river;
private static final $tring url =
%jd!c(oracle(thin()localhost(*+,*(-.'/0/1/$2;
private static final $tring login = %java;
private static final $tring $enha = %java;
private static final $tring pdf = %relatorio.pdf;
private static final $tring relat = %classic.jasper;
pu!lic static void main 3$tring args456throws 27ception{
8lass.for9ame3driver6;
8onnection conn =
'river-anager.get8onnection3url,login,senha6;
:ash-ap parametros = new :ash-ap36;
;;27ecuta o relat<rio
=asperPrint impressao = =asper>ill-anager.fill?eport3
relat,
parametros,
conn6;
;;27i!e o relat<rio
=asper"iewer viewer = new =asper"iewer3impressao,true6;
"iewer.show36;
;;$alva o relatorio no aruivo
=asper27port-anager.e7port?eport0oPdf>ile3impressao,pdf6;
}
}
-digo U.* K Aplica!o Java 'es^top
Fo cdigo U.5 temos um e#emplo de como mostrar um relatrio em
formato P'/ numa pgina JSP. Assim voc; pode mostrar seus relatrios na
Ae$.
Visuali3ando e Salvando Relatrios
@A) page errorPage=Berror.jspB AC
@A) page import=Bdatasource.*B AC
@A) page import=Bnet.sf.jasperreports.engine.*B AC
@A) page import=Bjava.util.*B AC
@A) page import=Bjava.io.*B AC
@A
$tring url = %jd!c(oracle(thin()localhost(*+,*(-.'/0/1/$2;
$tring login = %java;
$tring $enha = %java;
>ile report>ile = new >ile3application.get?ealPath3Bclassic.jasperB66;
if 3Dreport>ile.e7ists366
throw new =??untime27ception3B/ruivo classic.jasper nEo
encontrado.B6;
;;/!re cone7Eo com o !anco de dados
8lass.for9ame3driver6;
8onnection conn =
'river-anager.get8onnection3url,login,senha6;
-ap parameters = new :ash-ap36;
parameters.put3B?eport0itleB, B/ddress ?eportB6;
parameters.put3B1ase'irB, report>ile.getParent>ile366;
!Fte45 !Ftes =
=asper?un-anager.run?eport0oPdf3
report>ile.getPath36,
parameters,
conn
6;
response.set8ontent0Fpe3Bapplication;pdfB6;
response.set8ontentGength3!Ftes.length6;
$ervlet&utput$tream ouput$tream = response.get&utput$tream36;
ouput$tream.write3!Ftes, H, !Ftes.length6;
ouput$tream.flush36;
ouput$tream.close36;
AC
8<digo I., J ?elat<rio em uma aplicaKEo Le! 3report.jsp6
Visuali3ando e Salvando Relatrios
5era!o o seu re#at-rio em 'ormato 78.9
Se voc; &uiser e#i$ir os seus relatrios diretamente na sua aplica!o
Ae$ em formato 0T1L( o cdigo U.E mostra como fa3er isso.
@A) page import=Bnet.sf.jasperreports.engine.*B AC
@A) page import=Bnet.sf.jasperreports.engine.util.*B AC
@A) page import=Bnet.sf.jasperreports.engine.e7port.*B AC
@A) page import=Bjava.util.*B AC
@A) page import=Bjava.io.*B AC
@A
$tring url = %jd!c(oracle(thin()localhost(*+,*(-.'/0/1/$2;
$tring login = %java;
$tring $enha = %java;
>ile report>ile = new
>ile3application.get?ealPath3B;reports;Le!app?eport.jasperB66;
if 3Dreport>ile.e7ists366
throw new =??untime27ception3B/ruivo Le!app?eport.jasper nEo
encontrado.B6;
=asper?eport jasper?eport =
3=asper?eport6=?Goader.load&!ject3report>ile.getPath366;
;;/!re cone7Eo com o !anco de dados
8lass.for9ame3driver6;
8onnection conn =
'river-anager.get8onnection3url,login,senha6;
-ap parameters = new :ash-ap36;
parameters.put3B?eport0itleB, B?elatorio Le!B6;
parameters.put3B1ase'irB, report>ile.getParent>ile366;
=asperPrint jasperPrint =
=asper>ill-anager.fill?eport3
jasper?eport,
parameters,
conn
6;
=?:tml27porter e7porter = new =?:tml27porter36;
-ap images-ap = new :ash-ap36;
session.set/ttri!ute3BM-/N2$O-/PB, images-ap6;
e7porter.setParameter3=?27porterParameter.=/$P2?OP?M90, jasperPrint6;
e7porter.setParameter3=?27porterParameter.&P0PP0OL?M02?, out6;
e7porter.setParameter3=?:tml27porterParameter.M-/N2$O-/P, images-ap6;
e7porter.setParameter3=?:tml27porterParameter.M-/N2$OP?M, Bimage.jspQ
image=B6;
e7porter.e7port?eport36;
AC
-digo U.E G Relatrio aplica!o 8e$ em formato 0T1L =reportZ.tml.7sp>
Visuali3ando e Salvando Relatrios
-omo voc; pode o$servar no cdigo U.E( o relatrio gerado no iReport(
Le!app?eport.7asper( " carregado ==?Goader.load&!ject3...66 e logo aps
e#ecutado ==asper>ill-anager.fill?eport3...6>. Aps o relatrio
e#ecutado( ele " e#potardo para o formato 0T1L. %$7eto e#porter " setado em
seus par]metros( indicando &ual " o relatrio a ser e#portado =7asperPrint> e
para onde deve ser e#portado =out G a pgina JSP>. % comando e#portReport= >
reali3a por fim a e#porta!o.
Visuali3ando e Salvando Relatrios
Exerccios
* G -rie uma aplica!o Java &ue visuali3e o relatrio gerado pelo iReport
=.7asper> e depois salve o mesmo em um ar&uivo em fomrato P'/. A$ra o P'/
para conferir o seu relatrio.
a. @se o e#emplo do cdigo U.*
5 G -rie uma aplica!o Ae$. -onstrua uma pgina JSP &ue carregue o relatrio
gerado pelo iReport e mostra como formato P'/.
a. @se o e#emplo do cdigo U.5
E G -rie uma outra pgina JSP na sua aplica!o Ae$ &ue mostra o conteNdo do
seu relatrio diretamente na pgina JSP com formato 0T1L.
a. @se o e#emplo do cdigo U.E
L K E#perimente passar par]metros para a sua &uerH atrav"s das pginas JSP.
F!o es&uea de carregar um relatrio &ue aceita par]metros e lem$re o nome
do par]metro a ser usado.
Visuali3ando e Salvando Relatrios
Espao para anota6es
T@rgetTrust Treinamento e Tecnologia *

Você também pode gostar