14
Pág. 1 TOTH SISTEMAS – CONSTRUINDO SOLUÇÕES MANUAL DE CRIAÇÃO DE RELATÓRIOS COM IREPORT Jaraguá do Sul, SC

Manual Jasper

Embed Size (px)

Citation preview

Page 1: Manual Jasper

Pág. 1

TOTH SISTEMAS – CONSTRUINDO SOLUÇÕES

MANUAL DE CRIAÇÃO DE RELATÓRIOS COM IREPORT

Jaraguá do Sul, SC

Page 2: Manual Jasper

Pág. 2

2011 TOTH SISTEMAS – CONSTRUINDO SOLUÇÕES

MANUAL DE CRIAÇÃO DE RELATÓRIOS COM IREPORT

Jaraguá do Sul, SC

Documento técnico referente aos processos de desenvolvimento de relatórios utilizando a ferramenta iReport, IDE jasper. Objetivamos, com este documento, registrar os procedimentos para configuração e utilização da ferramenta.

Page 3: Manual Jasper

Pág. 3

2011

LISTA DE ABREVIATURAS, SÍMBOLOS E TERMOS TÉCNICOS

iReport – IDE mais popular do mundo para desenvolvimento de relatórios em Jasper Jasper – Engine para relatórios open-source JAR – Pacote contendo, em geral, bibliotecas Java Subreport – relatório normal do iReport, que pode ser adicionado para impressão dentro de outro layout Crosstab – representação pré-definida em forma de tabela, alimentada a partir dos dados lidos da base. Classpath – Referência do sistema indicando pacotes essenciais para execução da aplicação.

Page 4: Manual Jasper

Pág. 4

!"#$%"&'$&()*+$,')&!"#$%"&'$&()*+$,')&------------------------------------------------------------------------------------------------------------------------&.!!"#%$&)/&()*+$*+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!

Page 5: Manual Jasper

Pág. 5

INFORMAÇÕES GERAIS - iREPORT. O iReport a ferramenta de design open-source e grátis para Jasper. Com uma estrutura sofisticada, provê criação avançada de layouts com gráficos, imagens, subreports, crosstabs etc. AMBIENTE DE DESENVOLVIMENTO O iReport pode ser acessado normalmente, através dos atalhos do Windows.

Para este documento, nos basearemos na versão 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 visão dos passos para criação de um relatório:

Menus Arquivo: opções padrões do Windows: novo, salvar, abrir etc. Editar: desfazer, refazer, recortar, copiar, colar etc. Exibir: controla a exbição ou a supressão de alguns componentes, como barra de ferramentas e número de linhas. Format: Este menu é essencial para o desenho do relatório. Disponibiliza opções para padronização da tamanhos, alinhamentos, posicionamentos etc. Preview: menu muito pouco utilizado. Para as rotinas internas a opção Internal Preview (padrão) é suficiente. Janela: neste menu optamos pela exibição de subjanelas, que incluem a paleta de componentes, o Report Inspector e as propriedades. Ferramentas: dá acesso ao item opções, onde vamos configurar o Classpath de nossa aplicação. Ajuda: artigos de ajuda sobre a ferramenta.

Page 6: Manual Jasper

Pág. 6

CONFIGURANDO O iREPORT Os relatórios emitidos pelo Systêxtil terão como fonte de dados uma conexão com o Oracle. É isso que faremos nesta seção. Com o iReport aberto, acesse Ferramentas>Opções. Na tela que se abre, muitas configurações e ajustes podem ser feitos. Se você não costuma trabalhar com objetos medidos em polegadas, pode optar unidade de medida padrão na aba General. O nosso foco aqui será a aba Classpath. Nela, clique no botão da parte direita Add JAR. Navegue até a pasta de instalação do Systêxtil (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 conexão ao banco de dados. De volta a tela incial do programa, note que a barra de ferramentas exibe o botão Report Datasources. Clique. Na nova tela, clique em New, e, sem seguida, selecione Database JDBC Connection. Next. Dê um nome a sua conexão (o nome da instância é recomendável), 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 instância para conexão e clique em Wizard; isso preencherá a JDBC URL automaticamente.

Page 7: Manual Jasper

Pág. 7

Por fim, informe usuário e senha e teste sua conexão. Se algo der errado, revise os passos acima.

CRIANDO UM RELATÓRIO Chegou a hora de criar um relatório. Durante a instalação do iReport, os templates já foram disponibilizados para criação. 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 responsável pela manutenção dos servidores.) Clique em Open this Template. Dê um nome ao seu relatório, seguindo as convenções modulares do sistema, e escolha o destino, novamente de acordo com os padrões.

Page 8: Manual Jasper

Pág. 8

Clique em próximo. 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 relatório. Nela você pode perceber que o layout já está pré-definido em consonância com os padrões, com o cabeçalho e rodapé corretos. Bandas relevantes do relatório:

• Page Header: Impressa no topo de todas as páginas do relatório. • 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 títulos das colunas num relatório convencional.

• Detail: Todos os registros que forem lidos serão impressos nesta banda. Enquanto as demais bandas são de uma linha só, esta contém tantas linhas quanto os registros lidos.

• Page Footer: Impressa ao final de cada página. Muito útil para os relatórios que exigem totalização por página, por exemplo.

• Summary: impressa ao final do relatório. É o último item impresso.

Com estas informações já é possível perceber que a Empresa, Módulo, Título do Relatório e Data serão impressas no topo de todas páginas, já que estas informações vêm dispostas na Page Header do template que você escolheu. Você deve estar se perguntando quando vamos inserir dados neste relatório. Antes, vamos conhecer a comunicação entre o Vision e o Jasper. COMUNICAÇÃO VISION/JASPER Como você já deve ter adivinhado, o Vision não dá suporte a chamadas nativas de layouts Jasper. Mas não é esse “detalhe” que vai nos impedir de emitir um relatório, certo? Para contornar esta situação, o nosso programa Vision chamará um executável Java (.jar) que receberá o número da solicitação que utilizamos para armazenar os dados na tabela de

Page 9: Manual Jasper

Pág. 9

parâmetros (oper_001). Se você ainda não 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 obtém a classe que deve dar continuidade ao processo. Esta informação nós armazenaremos manualmente. Então, ao trabalho. O PROGRAMA DE EXEMPLO Neste tutorial, tomaremos como exemplo o programa mqop_e080 (Emissão de Códigos de Barras de Máquinas). Por que? 1) O programa é target da oper_001; 2) Ele já emitido em Crystal, então servirá para mostrar as diferenças; 3) Ele não 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 possível obter todos os dados do relatório em uma só consulta, não há razão para uso da oper_tmp. (Não 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 número excessivo de joins pode não dar ganho algum de performance em relação a gravação na oper_tmp. MÃOS A OBRA Em primeiro lugar, acesse o programa no Systêxtil e emita o relatório. Você deverá ver algo como isso:

No final, nosso relatório em Jasper deverá ficar parecido com este. Só que mais bonito. Agora, acesse a lógica do botão 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.

Page 10: Manual Jasper

Pág. 10

CHAMANDO O LAYOUT JASPER A partir do Vision, foi criado um facilitador para chamada do Jasper. O executável Java é invocado a partir de uma função, dispensando o seu trabalho de chamá-lo manualmente. Importe a seguinte função no programa: EXTERN SCRIPT VOID FUNCTION chamar_jasper(layout, nr_solicitacao, conexao) Agora, em vez de toda aquela lógica para chamada do Crystal, que espero que você já tenha exterminado, simplesmente acrescente as seguintes linhas de código: set mqop_e080:campo_70 to ‘Emissão de Código de Barras das máquinas’ set mqop_e080:classe to ‘br.com.intersys.systextil.batch.oper.oper_e000’ update current record Onde: Campo_70 e classe são campos da oper_001. O campo_70 é utilizado para armazenar o título do relatório, ao passo que o campo classe fornece diretrizes para o programa Java poder dar continuidade ao processo. Sempre que o relatório for ler diretamente do banco, sem precisar passar por nenhum outro processo intermediário, utilizaremos esta classe. O comando update current record armazena o registro na tabela para que o nosso executável Java possa lê-lo. E a chamada da função:

chamar_jasper(‘mq_e080_aa’,mqop_e080:nr_solicitacao,FORM_CONNECTION_NAME)

Onde: ‘mq_e080_aa’ é o layout que criei mqop_e080:nr_solicitacao é o número de solicitação do programa, utilizado para gravação na oper_001 FORM_CONNECTION_NAME é uma variável do Vision, contendo a instância de conexão. Essa função chama o programa Java, que, por sua vez, faz todo o trabalho de detecção de diretório do seu layout, baseado na nomenclatura. PREPARANDO O JASPER PARA LER AS INFORMAÇÕES DO BANCO De volta ao nosso relatório, vamos inserir a consulta SQL. Abaixo da aba com o nome do seu relatório, na janela central, note a barra de utilidades, contendo opções para formatação de texto e fonte. Clique no botão Report Query:

Uma nova janela se abrirá. Certifique-se que no campo Query Language está selecionada a opção SQL. Digite a consulta, no campo abaixo:

Page 11: Manual Jasper

Pág. 11

Como em todo relatório, existem filtros que devem ser considerados em sua consulta. O fato desses parâmetros 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 and mqop_020.grupo_maquina = mqop_030.maq_sub_grupo_mq and mqop_020.subgrupo_maquina = mqop_030.maq_sub_sbgr_maq and (mqop_030.maq_sub_grupo_mq = oper_001.campo_15 or oper_001.campo_15 = ' ') and (mqop_030.maq_sub_sbgr_maq = oper_001.campo_16 or oper_001.campo_16 = ' ') and (mqop_030.numero_maquina = oper_001.campo_01 or oper_001.campo_01 = 0) and oper_001.codigo_relatorio = 'mqop_e080' and oper_001.nr_solicitacao = $P{NR_SOLICITACAO} Atente a última linha. Estamos dizendo ao relatório que esta informação virá como parâmetro, que graças ao template já temos declarado. Na tela Report Query, na seção da direita, há um quadro chamado Available parameters. Simplesmente encontre ali o parâmetro e o arraste para a parte do código 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.

Page 12: Manual Jasper

Pág. 12

Note agora que na janela Report Inspector, no nó Fields, os campos de sua consulta estão listados. DESENHANDO O LAYOUT Vamos começar posicionando os componentes no layout. Lembra dos campos do layout original? Lá vai: Grupo, subgrupo e número da máquina e suas respectivas descrições, e o código da máquina concatenado, formando o código de barras. Note que na consulta acima já estamos trazendo o código da máquina concatenado com esse intuito. Se a Paleta de Componentes não estiver visível para você clique em Janela > Paleta (ou Ctrl + Shift + 8). Arraste um TextField para a banda Detail. Em seguida, clique com o botão direito sobre ele e clique em Edit Expression. Encare isso como uma fórmula 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 número da máquina. Como você já deve ter percebido, os campos são identificados por $F, os parâmetros por $P e assim sucessivamente. Inclua pontos entre os campos que você selecionou, de forma que a expressão fique assim: $F{GRUPO_MAQUINA} + "." + $F{SUBGRUPO_MAQUINA} + "." + $F{NUMERO_MAQUINA} Como você já deve saber, o número da máquina no Systêxtil é um inteiro de 5. O ideal é que formatemos, portanto, o número, para a exibição de zeros a esquerda. Aqui surge uma grande vantagem do Jasper: a injeção de breves sintaxes Java. Para a formatação, utilizaremos a classe DecimalFormat: new DecimalFormat("00000").format($F{NUMERO_MAQUINA}) De forma que a expressão 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 descrições do grupo, subgrupo e número. 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 botão 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 RELATÓRIO Diferentemente do Crystal Reports, o iReport exige a compilação do layout. Até o momento, estamos trabalhando somente com um arquivo com extensão JRXML. A compilação criará um arquivo JASPER, e este deverá ser cadastrado na sua SS. Durante esta criação, o aplicativo verifica a integridade do layout, sintaxes e disposição dos componentes. Para compilar nosso layout, clique no botão Compile Report, na janela central.

Na parte inferior, você deve observar o avanço do processo. Provavelmente, devem ocorrer dois erros:

Page 13: Manual Jasper

Pág. 13

Estes dois campos estão no template mas nós não os incluímos em nossa consulta. Para corrigir, clique novamente no botão Report Query e inclua os campos oper_001.campo_70 e oper_001.codigo_relatorio em nosso select. Em seguida, mande compilar novamente o relatório e tudo deve dar certo. EMITINDO O RELATÓRIO Agora a parte divertida. Acesse o programa no Systêxtil e o parametrize normalmente. Ao clicar em executar a tela padrão de execuções de relatórios Jasper é chamada:

Por fim, o relatório deve ser emitido, sendo aberto num visualizador de PDF ou no próprio visualizador Jasper, dependendo das configurações de empresa:

Page 14: Manual Jasper

Pág. 14