Artigo Clube Delphi 68 - DynamicReport

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

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

imagem_pdf.jpg

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');

        if ValueExists('Connection Registry File') then

          conexoes := ReadString(

            'Connection Registry File');

      end;

    end;

  finally

    registro.CloseKey;

    registro.Free;

  end;

  if (drivers <> '') and (conexoes <> '') then

  begin

    arqINI := TIniFile.Create(drivers);

    try

      arqINI.ReadSection('Installed Drivers',

        cbDriver.Items);

    finally

      arqINI.Free;

    end;

  end;

end;

 

Carregando os drivers e conexões

Através do método anterior, fazemos a leitura do registro do Windows para capturar o caminho dos arquivos INI e através do ReadSection  da classe TIniFile carregamos todos os drivers disponíveis no arquivo dbxdrivers.ini no cbDriver. No evento OnCreate do formulário faça a chamada ao método. Selecione o cbDriver e para seu evento OnChange digite o código da Listagem 2.

Através do evento OnChange carregamos o cbConexao com as conexões disponíveis para o driver selecionado pelo usuário no "

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?