Você está na página 1de 14

TOTH SISTEMAS CONSTRUINDO SOLUES

MANUAL DE CRIAO DE RELATRIOS COM IREPORT

Jaragu do Sul, SC
Pg. 1

2011 TOTH SISTEMAS CONSTRUINDO SOLUES

MANUAL DE CRIAO DE RELATRIOS COM IREPORT

Documento tcnico referente aos processos de desenvolvimento de relatrios utilizando a ferramenta iReport, IDE jasper. Objetivamos, com este documento, registrar os procedimentos para configurao e utilizao da ferramenta.

Jaragu do Sul, SC
Pg. 2

2011

LISTA DE ABREVIATURAS, SMBOLOS E TERMOS TCNICOS


iReport IDE mais popular do mundo para desenvolvimento de relatrios em Jasper Jasper Engine para relatrios open-source JAR Pacote contendo, em geral, bibliotecas Java Subreport relatrio normal do iReport, que pode ser adicionado para impresso dentro de outro layout Crosstab representao pr-definida em forma de tabela, alimentada a partir dos dados lidos da base. Classpath Referncia do sistema indicando pacotes essenciais para execuo da aplicao.

Pg. 3

!"#$%"&'$&()*+$,')&
!"#$%"&'$&()*+$,')&------------------------------------------------------------------------------------------------------------------------&.! !"#%$&)/&()*+$*+0&-------------------------------------------------------------------------&"##$#%!&$$'()#'!*$+!,-./*-,0! 123456789:;&<:571;&=&>5:?45!-&--------------------------------------------------------------------------------------------&@! 76A1:2!:&B:&B:;:2C4DC16:2!4&------------------------------------------------------------------------------------------&@! 6$*E0&------------------------------------------------------------------------------------------------------------------------------------------------------------&@! (4231<F572B4&4&>5:?45!&--------------------------------------------------------------------------------------------------------&G! (5172B4&F6&5:D7!H514&-------------------------------------------------------------------------------------------------------------&I! (46F21(78J4&C1;142KL7;?:5&--------------------------------------------------------------------------------------------------&M! 4&?54<5767&B:&:N:6?D4&---------------------------------------------------------------------------------------------------------&O! 6J4;&7&4A57&----------------------------------------------------------------------------------------------------------------------------------------------&O! (P7672B4&4&D7Q4F!&L7;?:5&----------------------------------------------------------------------------------------------------------&RS! ?5:?7572B4&4&L7;?:5&?757&D:5&7;&123456789:;&B4&A72(4&------------------------------&RS! B:;:2P72B4&4&D7Q4F!&-----------------------------------------------------------------------------------------------------------&RT! (46?1D72B4&4&5:D7!H514&----------------------------------------------------------------------------------------------------&RT! :61!12B4&4&5:D7!H514&-----------------------------------------------------------------------------------------------------------&RU!

Pg. 4

INFORMAES GERAIS - iREPORT.


O iReport a ferramenta de design open-source e grtis para Jasper. Com uma estrutura sofisticada, prov criao avanada de layouts com grficos, imagens, subreports, crosstabs etc.

AMBIENTE DE DESENVOLVIMENTO
O iReport pode ser acessado normalmente, atravs dos atalhos do Windows.

Para este documento, nos basearemos na verso 4.0.2 da ferramenta. Ao ser acessado a partir do atalho do Windows, o programa exibe a tela de boas vindas, que exibe os layouts modificados recentemente e d uma breve viso dos passos para criao de um relatrio:

Menus Arquivo: opes padres do Windows: novo, salvar, abrir etc. Editar: desfazer, refazer, recortar, copiar, colar etc. Exibir: controla a exbio ou a supresso de alguns componentes, como barra de ferramentas e nmero de linhas. Format: Este menu essencial para o desenho do relatrio. Disponibiliza opes para padronizao da tamanhos, alinhamentos, posicionamentos etc. Preview: menu muito pouco utilizado. Para as rotinas internas a opo Internal Preview (padro) suficiente. Janela: neste menu optamos pela exibio de subjanelas, que incluem a paleta de componentes, o Report Inspector e as propriedades. Ferramentas: d acesso ao item opes, onde vamos configurar o Classpath de nossa aplicao. Ajuda: artigos de ajuda sobre a ferramenta.
Pg. 5

CONFIGURANDO O iREPORT
Os relatrios emitidos pelo Systxtil tero como fonte de dados uma conexo com o Oracle. isso que faremos nesta seo. Com o iReport aberto, acesse Ferramentas>Opes. Na tela que se abre, muitas configuraes e ajustes podem ser feitos. Se voc no costuma trabalhar com objetos medidos em polegadas, pode optar unidade de medida padro na aba General. O nosso foco aqui ser a aba Classpath. Nela, clique no boto da parte direita Add JAR. Navegue at a pasta de instalao do Systxtil (d:\Systextil\App, em geral), pasta lib, e selecione os seguintes arquivos. Ojdbc6.jar Systextil-function.jar Systextil-i18n.jar Systextil-jasper-template.jar Systextil-oracle.jar Systextil-util.jar

Clique em OK. Isso nos permite configurar uma conexo ao banco de dados. De volta a tela incial do programa, note que a barra de ferramentas exibe o boto Report Datasources. Clique. Na nova tela, clique em New, e, sem seguida, selecione Database JDBC Connection. Next. D um nome a sua conexo (o nome da instncia recomendvel), e no campo JDBC Driver escolha Oracle (oracle.jdbc.driver.OracleDriver). Pule direto para o campo Server Address, informando o IP ou nome do servidor em que a base est instalada. Depois informe a instncia para conexo e clique em Wizard; isso preencher a JDBC URL automaticamente.
Pg. 6

Por fim, informe usurio e senha e teste sua conexo. Se algo der errado, revise os passos acima.

CRIANDO UM RELATRIO
Chegou a hora de criar um relatrio. Durante a instalao do iReport, os templates j foram disponibilizados para criao. Clique em Arquivo, New... Na janela que se abre, selecione o template Systextil-Retrato. (Se voc sentir falta dos templates TemplateSystextil-Paisagem e TemplateSystextil-Retrato, acione o responsvel pela manuteno dos servidores.) Clique em Open this Template. D um nome ao seu relatrio, seguindo as convenes modulares do sistema, e escolha o destino, novamente de acordo com os padres.

Pg. 7

Clique em prximo. Por fim, o assistente lhe confirmar que deu tudo certo. Finalizar. De volta a tela principal do iReport, temos uma aba nova aberta, denominada de acordo com o seu relatrio. Nela voc pode perceber que o layout j est pr-definido em consonncia com os padres, com o cabealho e rodap corretos. Bandas relevantes do relatrio: Page Header: Impressa no topo de todas as pginas do relatrio. Column Header: Nos templates, esta banda vem suprimida. Selecione-a na Report Inspector e atente para a window Propriedades. V at o item Band Heigth e o defina como 50. Nesta banda ficam os ttulos das colunas num relatrio convencional. Detail: Todos os registros que forem lidos sero impressos nesta banda. Enquanto as demais bandas so de uma linha s, esta contm tantas linhas quanto os registros lidos. Page Footer: Impressa ao final de cada pgina. Muito til para os relatrios que exigem totalizao por pgina, por exemplo. Summary: impressa ao final do relatrio. o ltimo item impresso. Com estas informaes j possvel perceber que a Empresa, Mdulo, Ttulo do Relatrio e Data sero impressas no topo de todas pginas, j que estas informaes vm dispostas na Page Header do template que voc escolheu. Voc deve estar se perguntando quando vamos inserir dados neste relatrio. Antes, vamos conhecer a comunicao entre o Vision e o Jasper.

COMUNICAO VISION/JASPER
Como voc j deve ter adivinhado, o Vision no d suporte a chamadas nativas de layouts Jasper. Mas no esse detalhe que vai nos impedir de emitir um relatrio, certo? Para contornar esta situao, o nosso programa Vision chamar um executvel Java (.jar) que receber o nmero da solicitao que utilizamos para armazenar os dados na tabela de

Pg. 8

parmetros (oper_001). Se voc ainda no sabe para que serve a tabela oper_001, consulte o manual do desenvolvedor e consulte seu coordenador para maiores esclarecimentos. Em segundo plano, o programa Java que chamamos faz uma consulta a base de dados e obtm a classe que deve dar continuidade ao processo. Esta informao ns armazenaremos manualmente. Ento, ao trabalho.

O PROGRAMA DE EXEMPLO
Neste tutorial, tomaremos como exemplo o programa mqop_e080 (Emisso de Cdigos de Barras de Mquinas). Por que? 1) O programa target da oper_001; 2) Ele j emitido em Crystal, ento servir para mostrar as diferenas; 3) Ele no armazena dados na oper_tmp, o que bastante recomendado em se tratando de novos layouts Jasper. Sobre este ltimo ponto, importante destacar que sempre que for possvel obter todos os dados do relatrio em uma s consulta, no h razo para uso da oper_tmp. (No sabe o que a oper_tmp? J sabe o que deve fazer, certo?) A consulta ser utilizada diretamente no jasper, o que acelera o processo. claro que cada caso deve ser analisado a parte, afinal uma consulta com um nmero excessivo de joins pode no dar ganho algum de performance em relao a gravao na oper_tmp. MOS A OBRA Em primeiro lugar, acesse o programa no Systxtil e emita o relatrio. Voc dever ver algo como isso:

No final, nosso relatrio em Jasper dever ficar parecido com este. S que mais bonito. Agora, acesse a lgica do boto Executar deste programa. Isso mesmo, no Vision. Voil. S tem a chamada do Crystal Reports. Jogue fora tudo isso. Tudo se resumir a umas poucas linhas agora.

Pg. 9

CHAMANDO O LAYOUT JASPER A partir do Vision, foi criado um facilitador para chamada do Jasper. O executvel Java invocado a partir de uma funo, dispensando o seu trabalho de cham-lo manualmente. Importe a seguinte funo no programa: EXTERN SCRIPT VOID FUNCTION chamar_jasper(layout, nr_solicitacao, conexao) Agora, em vez de toda aquela lgica para chamada do Crystal, que espero que voc j tenha exterminado, simplesmente acrescente as seguintes linhas de cdigo:
set mqop_e080:campo_70 to Emisso de Cdigo de Barras das mquinas set mqop_e080:classe to br.com.intersys.systextil.batch.oper.oper_e000 update current record

Onde: Campo_70 e classe so campos da oper_001. O campo_70 utilizado para armazenar o ttulo do relatrio, ao passo que o campo classe fornece diretrizes para o programa Java poder dar continuidade ao processo. Sempre que o relatrio for ler diretamente do banco, sem precisar passar por nenhum outro processo intermedirio, utilizaremos esta classe. O comando update current record armazena o registro na tabela para que o nosso executvel Java possa l-lo.

E a chamada da funo: chamar_jasper(mq_e080_aa,mqop_e080:nr_solicitacao,FORM_C ONNECTION_NAME)


Onde: mq_e080_aa o layout que criei mqop_e080:nr_solicitacao o nmero de solicitao do programa, utilizado para gravao na oper_001 FORM_CONNECTION_NAME uma varivel do Vision, contendo a instncia de conexo.

Essa funo chama o programa Java, que, por sua vez, faz todo o trabalho de deteco de diretrio do seu layout, baseado na nomenclatura.

PREPARANDO O JASPER PARA LER AS INFORMAES DO BANCO


De volta ao nosso relatrio, vamos inserir a consulta SQL. Abaixo da aba com o nome do seu relatrio, na janela central, note a barra de utilidades, contendo opes para formatao de texto e fonte. Clique no boto Report Query:

Uma nova janela se abrir. Certifique-se que no campo Query Language est selecionada a opo SQL. Digite a consulta, no campo abaixo:

Pg. 10

Como em todo relatrio, existem filtros que devem ser considerados em sua consulta. O fato desses parmetros estarem gravados na oper_001 facilita em muito nosso trabalho. A consulta deve ficar assim:
select mqop_010.grupo_maquina, mqop_010.nome_grupo_maq, mqop_020.subgrupo_maquina, mqop_020.nome_sbgrupo_maq, mqop_030.numero_maquina, mqop_030.nome_maquina, replace(to_char(mqop_030.maq_sub_grupo_mq) || to_char(mqop_030.maq_sub_sbgr_maq) || to_char(mqop_030.numero_maquina,'00000'),' ','') codigo_barras from mqop_010 , mqop_020 , mqop_030 , oper_001 where mqop_010.grupo_maquina mqop_020.grupo_maquina mqop_020.subgrupo_maquina (mqop_030.maq_sub_grupo_mq (mqop_030.maq_sub_sbgr_maq (mqop_030.numero_maquina oper_001.codigo_relatorio oper_001.nr_solicitacao

= = = = = = = =

mqop_020.grupo_maquina and mqop_030.maq_sub_grupo_mq and mqop_030.maq_sub_sbgr_maq and oper_001.campo_15 or oper_001.campo_15 = ' ') and oper_001.campo_16 or oper_001.campo_16 = ' ') and oper_001.campo_01 or oper_001.campo_01 = 0) and 'mqop_e080' and $P{NR_SOLICITACAO}

Atente a ltima linha. Estamos dizendo ao relatrio que esta informao vir como parmetro, que graas ao template j temos declarado. Na tela Report Query, na seo da direita, h um quadro chamado Available parameters. Simplesmente encontre ali o parmetro e o arraste para a parte do cdigo correspondente. Se a sua consulta estiver correta, a parte inferior da tela ser preenchida com os campos lidos e seus respectivos tipos. Tendo terminado a consulta, clique em OK.
Pg. 11

Note agora que na janela Report Inspector, no n Fields, os campos de sua consulta esto listados.

DESENHANDO O LAYOUT
Vamos comear posicionando os componentes no layout. Lembra dos campos do layout original? L vai: Grupo, subgrupo e nmero da mquina e suas respectivas descries, e o cdigo da mquina concatenado, formando o cdigo de barras. Note que na consulta acima j estamos trazendo o cdigo da mquina concatenado com esse intuito. Se a Paleta de Componentes no estiver visvel para voc clique em Janela > Paleta (ou Ctrl + Shift + 8). Arraste um TextField para a banda Detail. Em seguida, clique com o boto direito sobre ele e clique em Edit Expression. Encare isso como uma frmula do Crystal Reports. Selecione Fields, na parte inferior da janela que se abriu, e no quadro central, d dois cliques nos campos, grupo, subgrupo e nmero da mquina. Como voc j deve ter percebido, os campos so identificados por $F, os parmetros por $P e assim sucessivamente. Inclua pontos entre os campos que voc selecionou, de forma que a expresso fique assim: $F{GRUPO_MAQUINA} + "." + $F{SUBGRUPO_MAQUINA} + "." + $F{NUMERO_MAQUINA} Como voc j deve saber, o nmero da mquina no Systxtil um inteiro de 5. O ideal que formatemos, portanto, o nmero, para a exibio de zeros a esquerda. Aqui surge uma grande vantagem do Jasper: a injeo de breves sintaxes Java. Para a formatao, utilizaremos a classe DecimalFormat: new DecimalFormat("00000").format($F{NUMERO_MAQUINA}) De forma que a expresso final fique assim: $F{GRUPO_MAQUINA} + "." + $F{SUBGRUPO_MAQUINA} + "." + new DecimalFormat("00000").format($F{NUMERO_MAQUINA}) Arraste um novo TextField e proceda da mesma forma com as descries do grupo, subgrupo e nmero. Por fim, arraste um Barcode para a rea Detail e, nas propriedades, localize o item Code Expression. Depois de selecionar o tipo (Code128 est bom), clique no boto de Detalhamento (...) e escolha o campo $F{CODIGO_BARRAS}. Agora temos um layout bem parecido ao que era impresso no Crystal Reports. Salve.

COMPILANDO O RELATRIO
Diferentemente do Crystal Reports, o iReport exige a compilao do layout. At o momento, estamos trabalhando somente com um arquivo com extenso JRXML. A compilao criar um arquivo JASPER, e este dever ser cadastrado na sua SS. Durante esta criao, o aplicativo verifica a integridade do layout, sintaxes e disposio dos componentes. Para compilar nosso layout, clique no boto Compile Report, na janela central.

Na parte inferior, voc deve observar o avano do processo. Provavelmente, devem ocorrer dois erros:
Pg. 12

Estes dois campos esto no template mas ns no os inclumos em nossa consulta. Para corrigir, clique novamente no boto Report Query e inclua os campos oper_001.campo_70 e oper_001.codigo_relatorio em nosso select. Em seguida, mande compilar novamente o relatrio e tudo deve dar certo.

EMITINDO O RELATRIO
Agora a parte divertida. Acesse o programa no Systxtil e o parametrize normalmente. Ao clicar em executar a tela padro de execues de relatrios Jasper chamada:

Por fim, o relatrio deve ser emitido, sendo aberto num visualizador de PDF ou no prprio visualizador Jasper, dependendo das configuraes de empresa:

Pg. 13

Pg. 14