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 *