8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/ -XOLR&HVDU3HGURVR &ULDQGRXPUHODWyULRVLPSOHV - PDF
8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/ -XOLR&HVDU3HGURVR &ULDQGRXPUHODWyULRVLPSOHV
Download "8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/ -XOLR&HVDU3HGURVR &ULDQGRXPUHODWyULRVLPSOHV"
Lucas Sanches Carvalhal
1 &ULDQGRXPUHODWyULRVLPSOHV Vamos criar o nosso primeiro relatório usando o PostgreSQL e o Report Manager. Estando com o Report Manager aberto, a partir do menu $UTXLYR, escolha a opção 1RYR. Será aberta uma estrutura de relatório vazia, semelhante à figura acima. No canto superior esquerdo, logo abaixo da Barra de Formatação e Edição, temos um controle com duas abas, 6WUXFWXUH e 'DWD. A primeira conterá as bandas do relatório, enquanto a segunda conterá os campos e as variáveis que alimentarão o nosso relatório. Automaticamente uma estrutura Sub-relatório é criada, e na sua abertura, uma informação entre parêntesis, informa 1R 'DWDVHW, dizendo-nos que nenhum conjunto de dados ou Query está associado ao relatório. Clicando na aba 'DWD e expandindo o controle ao clicar na divisão da janela quando o cursor muda para R, verificamos que o Report Manager carrega automaticamente diversas variáveis que poderão ser utilizadas na estrutura do relatório. Na realidade são constantes que nos permitem inserir funções do tipo QRZ (agora), WLPH (hora) WRGD\ (data de hoje), WUXH (verdadeiro) PSDJHQXP (número de páginas e várias outras constantes. Nesta área, também serão exibidos os parâmetros definidos pelo usuário durante a criação do relatório. $GLFLRQDQGRXPFDEHoDOKR Agora, vamos adicionar uma banda (seção no nosso relatório). Vamos incluir um cabeçalho para a nossa página. Como este é um relatório muito simples, vamos fazer uma simples listagem de clientes, com &ygljr, 1RPH e 7HOHIRQH. A partir do menu 5HODWyULR, escolha a opção $GLFLRQD e, no menu que se abre à direita, escolha a opção &DEHoDOKRGH 3iJLQD. 7
2 Será criada uma nova seção na área de desenho do Report Manager, identificada como &DEHoDOKRGH3iJLQD. Ao mesmo tempo uma nova estrutura será adicionada no controle da aba 6WUXFWXUH. As setas amarelas indicam onde as coisas aconteceram no relatório. Você pode redimensionar o tamanho da área posicionado o mouse sobre a divisão entre o detalhe e o cabeçalho, e quando o cursor mudar para uma seta dupla, arrastar para cima, para diminuir ou para baixo para aumentar. R Observe que na parte superior da área de desenho temos uma regra que abrange todo o espaço reservado para definição do relatório. Já do lado esquerdo, temos uma regra para cada uma das bandas populadas no relatório. $GLFLRQDQGRXPWtWXORDRFDEHoDOKR A partir da Barra de Ferramentas, clique no ícone para adicionar um texto fixo (estático). Em seguida, clique na banda cabeçalho, na posição onde deseja inserir o texto. Aparecerá algo semelhante a um quadradinho preto, Redimensione de maneira que fique parecido com o exibido na figura ao lado. Você pode observar que o controle possui nas suas extremidades pontos para redimensionamento das suas medidas. Observe que ando o controle está selecionado, a sua &DL[DGH,QVSHomR, na área que fica a esquerda do relatório, logo abaixo da estrutura, apresenta todas as propriedades do controle que poderão ser configuradas. Vamos 8
3 primeiramente definir que o texto entrado por nós no controle deverá ser apresentado em estilo centralizado. Então, na guia $OO localize a propriedade $OLQKDPHQWR+ No controle drop list, escolha a opção &HQWUR. Note que a palavra 7H[WR que aparece como padrão no controle, no momento de sua criação, agora está centralizada. Se você redimensionar o controle, vai perceber que o texto sempre se manterá no centro do mesmo. Na mesma aba $OO, você pode definir outras propriedades do controle, tais como fonte, rotação, etc... A seguir, vamos definir o texto que aparecerá no cabeçalho do nosso relatório. Selecione a aba /DEHO. Observe que nesta aba, temos um campo onde aparece a palavra texto. Entre neste campo e mude para 5HODWyULR*HUDO GH &OLHQWHV. Agora, mude para a aba 7H[W e no campo Tamanho F. mude o tamanho da fonte para 36. Redimensione e reposicione o controle de texto na banda Cabeçalho. É hora de salvar o nosso trabalho. Clique na barra de ferramentas sobre o ícone representado por um disquete. Escolha a pasta onde deseja salvar o seu relatório (normalmente uma pasta chamada relatórios), abaixo da aplicação principal, ou na pasta relatórios do Servidor, e informe no campo apropriado o nome do relatório. Vamos chamar o nosso relatório de ReCli. Automaticamente este arquivo recebe a extensão.rep, o que determina 5H&OLUHS como nome do nosso arquivo de relatório. Note que agora, a Barra de Títulos conterá o caminho complete do arquivo de relatório. Se você clicar em 9LVXDOL]DU, no menu arquivo, ou no ícone correspondente da Barra de Ferramentas, já poderá ter uma prévia do seu relatório. $GLFLRQDQGRRQ~PHURGDSiJLQDDRFDEHoDOKRGR5HODWyULR Na área de estruturas do relatório, clique na aba 'DWD. Aparecerá um grupo com o texto 9DULDEOHV. Clique no sinal de + para expandir este grupo. Agora, entre as variáveis mostradas, localize a variável 03$*( e arraste-a para a área do cabeçalho, logo depois do título que identifica o relatório. 9
4 Posicione o controle, e defina a fonte que deseja usar. No meu exemplo, optei pela fonte com tamanho 12. A seguir, vamos colocar um controle, que nos vai retornar o número total de páginas, ou seja, se o nosso relatório tiver 10 páginas, aqui será mostrado, página 1 de 10. Primeiramente vamos colocar um texto fixo com a expressão GH. Agora, a partir da estrutura de variáveis, escolha 03$*(180 e arraste para o cabeçaho, posicionando ao lado do texto GH e definindo o tamanho da fonte como 12. Veja o resultado, na Pré visualização abaixo. No caso do nosso exemplo, como só temos ainda a página principal, aparece 1 de 1, mas após definidas todas as bandas do relatório e as suas conexões com bancos de dados, aqui aparecerá o total das páginas do relatório. Sem templates, sem códigos em embeds. Simplesmente utilizando uma constante pré definida do próprio Report Manager. /LJDQGRRUHODWyULRDXPD)RQWHGH'DGRV O Report Manager trabalha com SQL. Infelizmente, ou felizmente, não sei, não trabalha com TPS, embora me digam que se usar o ODBC para TPS funcione. Mas a minha necessidade quando optei pelo Report Manager são sentenças SQL. Para TPS nós temos o Gerador de Relatórios do Clarion e o Dot Matrix, entre outros. Vamos agora ligar o nosso relatório com uma fonte de dados. Para os fins deste exemplo simples, vamos utilizar uma conexão ODBC, definida na máquina, mas poderíamos perfeitamente utilizar uma string de conexão, ou até mesmo, passar a string de conexão como um parâmetro para o relatório, com a possibilidade de mudar a conexão em tempo de execução. Mas, isto é assunto para o futuro. Clique no menu 5HODWyULR e selecione a opção &RQILJXUDomR GH $FHVVRD'DGRV. Será aberta uma janela, contendo duas abas: &RQH[}HV GH EDQFRGH GDGRV e 7DEHODV GR UHODWyULR. É aqui que vamos definir como o relatório vai se comunicar com o nosso banco de dados. Há um drop list com diversos drivers de conexão a Banco de Dados. Para o PostgreSQL muitos utilizam o =RHV 'DWDEDVH 2EMHFWV. 10
5 Entretanto, para este exemplo, vou utilizar o DAO (ADO) da Microsoft, por ser um padrão que não apresenta grandes dificuldades de configuração, e requer somente o MDAC, que é automaticamente instalado na máquina junto com alguns aplicativos Microsoft. Ou seja, existe uma possibilidade muito grande de ele já estar instalado na sua máquina e na máquina do seu cliente. Desta forma, no list box selecione a opção 0LFURVRIW '$2, posicionando o cursor sobre ela. Agora, clique sobre o ícone com um sinal demais, e escolha 1RYR para criar uma nova conexão de Banco de Dados. Informe um nome para a conexão. Para o nosso exemplo escolhemos 5H&OLHQWHV. Seremos remetidos de volta à tela de conexões já com a conexão criada. Agora será necessário fazer as devidas configurações desta conexão. Em função da nossa escolha na tela anterior o driver de banco de dados HP 'DWDEDVHGULYHU veio definido como Microsoft DAO, mas se quiser você pode alterar aqui. Marque o check box $XWHQWLFDomR para forçar a autenticação no Banco de Dados. Para este exemplo vou deixar desmarcado. Marque o check box /HUSDUkPHWURV para que a conexão leia os parâmetros e também marque /HU SDUkPHWURV GR GULYHU para que sejam lidos os 11
6 parâmetros específicos do driver ADO, neste caso. Em seguida você pode digitar a string de conexão para o seu banco de dados. Vamos, entretanto, deixar que o Gerador de Conexões, faça o trabalho duro. Clique no botão 3URFXUDU. Será aberta a janela agora na aba &RQH[mR. Você pode tanto conectar-se a uma fonte de dados de máquinas, ou usar uma seqüência de conexão. Uma fonte de dados de máquina é aquela que você definiu no Gerenciador de Conexões do seu Windows, pelo painel de Controle. Marque o botão de rádio 8VDURQRPHGDIRQWHGHGDGRV e pelo drop list, selecione uma das fontes de dados registradas no seu sistema. Para o nosso exemplo, escolhemos uma 3URSULHGDGHV GH YLQFXODomR GH GDGRV, com as abas 3URYHGRU, &RQH[mR, $YDQoDGDV e 7RGDV. Na aba 3URYHGRU, temos um list box contendo todos os SURYLGHUV de objetos de bancos de dados. Escolha a opção 0LFURVRIW 2/( '% 3URYLGHUV IRU 2'%& 'ULYHUV, pois estamos acessando o banco de dados via ODBC. Existem providers para outras formas de conexão, conforme mostra a figura ao lado. Escolhido o Provedor, clique no botão $YDQoDU. Você será posicionado fonte de dados chamada /RMD. Se marcar usar a seqüência de conexão, poderá utilizar o botão FULDU para auxiliá-lo nesse trabalho. Este exemplo usa uma fonte de dados já existente. Aqui, pode ser que você tenha que redefinir algumas regras do seu firewall. Mas se tudo estiver OK, clique no botão 7HVWDU FRQH[mR. Uma mensagem informará se o acesso ao banco foi bem sucedido. 12
7 Para os efeitos do nosso exemplo, é tudo o que precisamos. Veja que não definimos nem usuário e nem senha para o banco, mas poderíamos perfeitamente fazê-lo. Nossa conexão ADO, está acessando agora um banco de dados via ODBC em um servidor PostgreSQL. Pressione o botão 2. para confirmar e no retorno à janela de conexão, pressione OK novamente para gravar os dados da conexão. /LJDQGRRUHODWyULRDXPD4XHU\64/±'DWD6HW Vamos agora, criar o conjunto de dados que retornará as colunas do banco de dados para o nosso relatório. Podemos dizer que o Dataset é um banco de dados virtual, onde a estrutura é alocada em memória, o que permite uma melhor dinâmica no gerenciamento e controle de grande quantidade de dados. Um único Dataset permite adicionar várias Tabelas. Estas tabelas podem vir de uma fonte de dados existente, como por exemplo, a tabela Clientes do banco de dados,como no nosso caso ou, ser criada através do próprio código. Clique na guia 7DEHODV GR UHODWyULR. Na realidade essa aba deveria chamar-se &RQVXOWDVGR5HODWyULR. Se quiser você pode alterar isto, usando uma ferramenta de tradução que é disponibilizada junto com o Report Manager. Clique sobre o ícone com um sinal de mais, para adicionar uma nova consulta. Será aberta a caixa de diálogo 1RYD 7DEHOD, onde iremos definir no campo 1RPH GH 5yWXOR, o nome da consulta que servirá de base para o nosso relatório. No caso do nosso exemplo, escolhemos como nome 4&OLHQWHV. Definindo o nome da consulta, clique no botão 2. Agora o sistema retornará a janela já com o DataSet criado. Como foi dito anteriormente, um DataSet poderá conter varias tabelas. Observe que a janela apresenta na parte de cima, o nosso DataSet4&OLHQWHV, e na parte de baixo, a nossa conexão com o banco de dados, à qual foi dado o nome de 5(&/,(17(6. Tenha cuidado para não confundir as conexões com os DataSets., no caso 5(&/,(17(6 é a nossa conexão, enquanto que QClientes é um dos nossos DataSets que utiliza a conexão 5(&/,(17(6. Observe que o check box 2SHQ RQ VWDUW, está marcado para que a consulta SQL seja realizada na abertura do nosso relatório. Existem casos, em 13
8 que este check box deverá vir desmarcado, para que a consulta SQL só seja realizada quando necessário, como veremos mais adiante. Na aba 64/, abaixo de 'DWDEDVH %URZVHU, estão todas as tabelas existentes na nossa conexão de banco de dados. Vamos agora configurar a sentença SQL que alimentará o nosso relatório. Note que os ícones + e permitem expandir as tabelas do banco de dados para que possamos visualizar as colunas de cada tabela. Agora, no lado direito, há uma área para que entremos a nossa conexão SQL. Vamos escrever então SELECT codcli, nome, telefone FROM cliente ORDER BY nome Estamos retornando para a nossa pesquisa, com esta sentença, todos os nomes do nosso cadastro de clientes, ordenados pelo campo nome. Se a quantidade de dados a ser retornada for pequena, você pode testar se a query está funcionando clicando em ([LELUGDGRV. Entretanto se o volume de dados for muito grande, não é aconselhável usar esta opção, pelo alto consumo de memória. É mais fácil visualiza o relatório. Agora que já temos o nosso DataSet devidamente formatado, já podemos montar o nosso relatório com base nos dados retornados por ele. Lembre-se que fizemos uma consulta somente com o código, nome e telefone do cliente, mas poderíamos retornar todas as colunas do Banco de Dados. 14
9 Pressione OK para encerrar a definição do DataSet. De volta ao Gerador de Relatórios, na área de estruturas do relatório, clique na aba 'DWD. Note que agora, juntamente com as variáveis do relatório, temos o nosso DataSet, onde somente aparecem as colunas que incluímos na nossa Query. Observe que, à direita da coluna da Query, está listado o tipo do campo e o seu tamanho. Isso ocorre porque a opção 'DWD 7\SH LQIRUPDWLRQ, está ativa no menu 3UHIHUrQFLDV. Se a opção for desativada, somente o nome da coluna será listado. Daqui para frente, colocar os controles no relatório é muito fácil. Clique sobre a coluna código e arraste para o detalhe. Em seguida arraste nome, posicionando em baixo do código. Finalmente arraste telefone, para baixo do código, como mostra a figura. Agora clique no botão para Visualizar o Relatório. Será mostrado o registro em formato de formulário, bastante útil para quando queremos criar coisas como duplicatas, cheques, pedidos, notas fiscais, e assemelhados, onde cada página representa um registro do banco de dados. Mas espere! 15
10 Mesmo havendo botões de navegação, a visualização não avança quando clicamos neles. Isto ocorre por que precisamos dizer ao Gerador de Relatórios que ele deve usar uma tabela. Para isto, clique na banda 6XE5HODWyULR, na área de estruturas, e preencha o drop list 7DEHOD 3ULQFLSDO, com o nome da Query a ser usada pelo relatório. Agora sim, os vários registros da tabela são apresentados, paginados e de acordo com o tamanho do formulário. Se quisermos que somente um registro seja apresentado por página, basta configurar o tamanho das bandas. Veja um resultado disto na figura abaixo. Você pode navegar pelas páginas do relatório utilizando os botões apropriados da Barra de Ferramentas do Preview. 5HODWyULRFROXQDGR Vamos modificar o relatório criado com a query acima em um relatório coluna, simplesmente mudando a disposição das colunas na banda detalhe e redimensionando a altura da mesma. A figura acima mostra uma visão aproximada do layout do nosso novo relatório. 16
11 Agora clique no botão 9LVXDOL]DUUHODWyULR para ter uma visão de como será a sua impressão. Como foi dito anteriormente, este é um relatório muito simples, apenas para dar uma idéia inicial dos recursos do Report Manager. $GLFLRQDQGRDOJXPD³SHUIXPDULD Vamos agora dar uma mehorada no nosso relatório, adicionando títulos para os cabeçalhos das colunas. Para isto, basta adicionar os títulos como Texto Fixo, na banda Cabeçalho. Muito parecido com o que fazemos no Gerador de Relatórios do Clarion. Adicionamos ainda uma linha dupla abaixo dos cabeçalhos das colunas, usando um objeto de desenho simples. Naturalmente que para isso tivemos que redimensionar a banda Cabeçalho e alinhar os cabeçalhos das colunas com os campos usando os componentes da Barra de Formatação e Edição. Vamos ainda adicionar uma imagem fixa à banda Cabeçalho, como se fosse um logo tipo. Neste exemplo vamos usar uma imagem.jpg fixa (o RM aceita bitmap e jpg), mas poderíamos usar uma imagem carregada 17
12 dinamicamente, como fazemos nos relatórios escritos em Clarion. A grande vantagem do Report Manager, é que eu posso também colocar uma imagem como fundo do relatório, como por exemplo, uma marca d água. Diminua o tamanho da fonte do título do relatório para 24 e reposicione-o na banda para alocar espaço para o controle de imagem que iremos colocar. Agora clique sobre o controle imagem na barra de ferramentas e clique com o cursor na banda Cabeçalho no local onde deseja posicionar a imagem. Na caixa de Propriedades que aparece quando o controle de imagem está selecionado, escolha no drop list 6KDUHG,PDJH a opção )L[HG,PDJHP, indicando que não iremos utilizar uma imagem dinâmica, ou uma 9DULDEOHLPDJHcomo identifica a opção Na seqüência, na mesma aba $OO, vamos escolher uma imagem no disco rígido. Clique sobre o campo imagem (com fundo amarelo). Será aberta uma janela do Windows Explorer para escolha de uma imagem em formato.jpg ou.bmp, Clique sobre o arquivo desejado e em seguida sobre o botão $EULU, ou simplesmente efetue um duplo clique de mouse sobre o nome do arquivo. O próximo passo é definir como a imagem será exibida na banda que escolhemos para apresentá-la. Selecione a guia 3RVLWLRQe informe a posição da imagem entre as disponíveis: Nada, Fundo/Direita, Fundo, Left/Right,Top/Botton e All Client. No nosso caso, escolhemos a opção Nada, pois apenas queremos exibir a imagem ao lado do título do relatório. Prosseguindo vamos definir a forma de apresentação do controle de imagem através da opção (VWLOR GH 7UDoR, na aba,pdjhp. Escolhemos a opção (VWLFDU. Isto fará com que a imagem seja dimensionada de acordo com o tamanho do controle de tela, não importando o seu tamanho original. Existem outras opções no controle drop list de Controle de Traço que você poderá testar, de acordo com as necessidades do seu relatório. 18
13 Vejamos então uma prévia do nosso relatório. Já adicionamos textos, objetos de desenho simples, um controle de imagem e agora, vamos adicionar um rodapé ao nosso relatório. A partir do menu 5HODWyULR, escolha $GLFLRQDU, e em seguida 5RGDSp GH3iJLQD. Será adicionada uma nova banda ao relatório denominada 5RGDSp GH SiJLQD. Nesta área vamos adicionar alguns controles típicos de um rodapé de relatório. Inicialmente vamos adicionar um desenho simples para separar o detalhe do rodapé. Agora, a partir da aba 'DWDarraste para a banda de rodapé da página, um controle chamado 7RGD\ e ao lado dele, um controle 7LPH. 19
14 Finalizamos a definição de um relatório muito simples baseado numa sentença SQL. O próximo passo é integrar esse Relatório à uma aplicação Clarion. Veja o resultado final no modo de visualização do relatório. Como você pode perceber, o Report Manager não fica devendo nada à ferramentas pagas como o Crystal Reports, Fomin Report Builder, Right Reports. Posso dizer que em se tratando de Gerador de Relatórios para SQL, é muito melhor que o Fomin Report Builder, pois aceita filtros, parâmetros, condições e muito mais. Não está atrelado a um Dicionário de Dados, e você pode, se quiser, chamar os relatórios a partir de uma aplicação Clarion só para exibir relatórios, integrá-lo no seu aplicativo em um Browse, que funcionaria como um menu dinâmico, ou simplesmente chamá-lo a partir de um botão, em qualquer procedimento Clarion. É aí que entra a Classe / Template, escrita pelo nosso amigo Johny Stein, e que tivemos a oportunidade de estudar, fazer algumas alterações para nosso uso, de modo a otimizar a integração entre Clarion e Report Manager. 20