Artigo Clube Delphi 68 - DynamicReport
Neste artigo veremos como criar um assistente para geração de relatórios em Rave Reports ou Quick Report.
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) " [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo