Artigo Clube Delphi 68 - DynamicReport

Neste artigo veremos como criar um assistente para geração de relatórios em Rave Reports ou Quick Report.

Esse artigo faz parte da revista Clube Delphi Edição 68. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.

DynamicReport

Assistente para geração de relatórios dinâmicos utilizando Rave e Quick Report

Neste artigo veremos como criar um assistente para geração de relatórios em Rave Reports ou Quick Report. O objetivo desse assistente é permitir que o usuário configure, de forma visual, todos os parâmetros necessários para buscar e imprimir informações contidas em um banco de dados.

Nosso aplicativo conterá nove passos, isso é, através de nove etapas montaremos dinamicamente a instrução SQL que será utilizada na geração do relatório, de acordo as condições especificadas pelo usuário, como campos que serão mostrados, ordenação, critério de seleção etc. Após determinada a conexão e a instrução SQL, disponibilizaremos para o usuário a opção de fazer a impressão do relatório utilizando Rave ou Quick Report, tudo gerado em tempo de execução!

 

Nota: Para esse aplicativo optei por usar o Delphi 7, pois no Delphi 2005 não há o Quick Report de forma nativa disponível na IDE. Uma versão comercial do produto está disponível em www.qusoft.com.

 

Etapas do assistente

O assistente será composto por nove etapas, onde utilizaremos o componente Notebook (paleta Win 3.1) para fazer a navegação entre elas. As etapas são:

·Tela inicial do assistente;

·Configuração/seleção da conexão com o banco de dados;

·Seleção do tipo do relatório a ser montado;

·Seleção da tabela do banco de dados;

·Seleção dos campos da tabela especificada;

·Definição dos filtros a serem aplicados na tabela especificada;

·Seleção dos campos que serão utilizados na ordenação dos dados;

·Visualização dos dados e da instrução SQL gerada;

·Seleção da tecnologia a ser utilizada na geração do relatório e impressão do mesmo.

 

A idéia principal na criação desse assistente é torná-lo o mais genérico e flexível possível. Para que essas características sejam possíveis, utilizaremos o dbExpress e seus métodos de acesso a metadados do banco de dados.

 

Criando o assistente

Abra o Delphi 7 e inicie uma nova aplicação (File>New>Application). Altere o nome do formulário para “FrmAssistente” e salve sua unit como “untFrmAssistente.pas”. Para o arquivo de projeto dê o nome de “DynamicReport”. Adicione alguns componentes visuais e configure-os de acordo com a Figura 1.

 

Figura 1. Layout do assistente de geração de relatórios em tempo de design

 

Altere a propriedade tag do botão btnVoltar para “–1” e do botão btnAvancar para “1”. Utilizaremos essa propriedade para controlar a navegação entre as páginas do Notebook. Selecione o Notebook e através de sua propriedade Pages adicione nove páginas no componente (dê o nome que desejar às páginas).

 

Nota: Para selecionar uma página específica em tempo de design, utilize a propriedade ActivePage.

 

Utilizaremos a primeira página para adicionar uma mensagem de boas-vindas ao usuário. Adicione um Label à página e entre com uma mensagem de boas-vindas de acordo com sua preferência. Na segunda página mostraremos os drivers e conexões disponíveis nos arquivos de configuração do dbExpress, para que o usuário possa selecionar e configurar sua própria conexão com o banco de dados de sua preferência.

O Delphi armazena os drivers e conexões do dbExpress em dois arquivos INI (dbxdrivers.ini e dbxconnections.ini). Para localizar esses arquivos na máquina, faremos a leitura de duas chaves de registro, que armazenam o path de cada arquivo. Declare as units Registry e IniFiles no uses da unit do formulário. Na seção private da unit declare duas variáveis (do tipo string) de nome “drivers” e “conexoes”.

Utilizaremos essas variáveis para armazenar o caminho dos arquivos INI utilizados pelo dbExpress. Adicione na segunda página do Notebook dois ComboBoxes. Utilizaremos esses componentes para listar os drivers e conexões disponíveis nos arquivos INI do dbExpress. Altere os nomes dos ComboBoxes para “cbDriver” e “cbConexao”. Crie um método chamado “CarregarConfConexoes” e implemente-o como mostra o código da Listagem 1.

 

Listagem 1. Método CarregarConfConexoes

procedure TFrmAssistente.CarregarConfConexoes;

const

  chave = 'Software\Borland\DBExpress';

var

  registro: TRegistry;

  arqINI: TIniFile;

begin

  registro := TRegistry.Create;

  try

with registro do

begin

if OpenKey(chave, False) then

begin

if ValueExists('Driver Registry File') then

drivers := ReadString(

'Driver Registry File');" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados