Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Criação de Relatórios em Delphi

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 10

ETEC DR.

EMÍLIO HERNANDEZ AGUILAR

PROGRAMAÇÃO DE COMPUTADORES II
PROFESSOR RAFAEL BARRETO

CRIAÇÃO DE RELATÓRIOS EM DELPHI

Relatórios são tão importantes quanto as consultas, com a


vantagem de poder imprimir os valores armazenados nos Bancos de
Dados e sua criação é bem simples.

Primeiramente precisamos ter uma aplicação Delphi conectada


a uma base de dados. Esta base de dados também será conectada ao
relatório e isso pode ser feito tanto com um objeto Table quanto com
um objeto Query (ambos na Paleta BDE).
A diferença é que, com um objeto Table este relatório fica
estático, ou seja, não permite filtro de informações, enquanto que um
relatório conectado a uma Query fica dinâmico, permitindo que se
imprima todas as informações ou se crie parâmetros para relatórios
personalizados.
Pode-se criar um DataModule exclusivo para estas operações ou
utilizar um já configurado.

Para este exemplo, começaremos uma aplicação simples, do


zero.

Criaremos um banco de dados chamados BDINFO, com uma


tabela TBDADOS, esta com os atributos a seguir:

www.etecfran.com.br
Estrada do Governo, S/N, KM 42 – Pouso Alegre – Franco da Rocha – São Paulo
CEP 07859-340 – Tel.: (11) 4449-3115 – Fax: (11) 4443-6110
ETEC DR. EMÍLIO HERNANDEZ AGUILAR

CODIGO (Int, chave primária)


NOME (VarChar, 50)
CIDADE (VarChar, 50)
EMAIL (VarChar, 50)

Para adiantar o trabalho, preencha a tabela após a criação com


alguns dados.
SUGESTÃO: Pelo menos 5 dados com cidades diferentes, podendo
repetir uma ou duas.
O campo CIDADE servirá para filtrarmos o relatório pela cidade
onde o cadastrado mora.
Faremos a conexão via ODBC, em Painel de Controle,
Ferramentas Administrativas, Fonte de Dados (ODBC) como já
mostrado anteriormente.
No Delphi, configuramos a conexão com um DataModule
(DMRELATORIO). Neste DataModule colocaremos uma Table
(TBRELAT), uma Query (QRYRELAT) - na paleta BDE - e um
DataSource (DSRELAT) - paleta Data Access.

Configure os objetos:
TBRELAT – propriedades DataBasename, TableName e Active.
DSRELAT – propriedade DataSet.
QRYRELAT – propriedades DataSource, DatabaseName, SQL (SELECT *

FROM TBDADOS) e Active.

Altere os nomes do objetos:

www.etecfran.com.br
Estrada do Governo, S/N, KM 42 – Pouso Alegre – Franco da Rocha – São Paulo
CEP 07859-340 – Tel.: (11) 4449-3115 – Fax: (11) 4443-6110
ETEC DR. EMÍLIO HERNANDEZ AGUILAR

Form1= FRMDADOS
DataModule= DMRELATORIO

E salve:
Unit 1 (O formulário) – U_DADOS
Unit2 (O DataModule) – U_DM
Project1 (O projeto) – P_RELATORIO

Apenas para efeito de teste, configure o Fileds Editor da


TBRELAT e arraste os campos para o formulário.
Coloque um DBNavigator no formulário e faça sua conexão
(DataSource). Sua função aqui será apenas a de navegar pelos
registros, para que possamos fazer a filtragem, pegando a cidade do
registro atual.
Adicione um GroupBox e dentro deste dois botões, que serão
responsáveis por gerar os relatórios. Configure-os como:
GroupBox:
Name - GRBBOTOES
Caption – Gerar Relatórios
Button1:
Name – BTNGERAL
Caption – Relatório Geral
Button2:
Name – BTNFILTRO
Caption – Relatório Filtrado

Seu formulário deve estar semelhante ao mostrado a seguir:

www.etecfran.com.br
Estrada do Governo, S/N, KM 42 – Pouso Alegre – Franco da Rocha – São Paulo
CEP 07859-340 – Tel.: (11) 4449-3115 – Fax: (11) 4443-6110
ETEC DR. EMÍLIO HERNANDEZ AGUILAR

Adicione um novo formulário, neste será configurado o


relatório.
Altere suas propriedades Name:FRMRELAT e Caption:
RELATÓRIOS. E salve a Unit como U_RELAT.

Component, Install Packages, Add. Selecionar em C:\Arquivos


de Programas\Borland\Delphi7\Bin os arquivos: dclqrt70.bpl e
dcltqr70.bpl e clicar em Ok.
Verifique se surgiu na paleta de componentes a opção QReport
(será a última).
Procure o componente QuickRep e adicione ao formulário.
Aparecerá uma caixa branca dentro do formulário, semelhante a uma
folha em branco. Precisamos formatar o relatório e definir suas
bandas.
Clique com o botão direito e selecione a opção Report Settings.
Na janela seguinte, em Bands, marque todas as opções menos
Summary. E se desejar o relatório impresso em Paisagem, altere em
Paper size a opção Portrait (Retrato) para Landscape (Paisagem).
Clique em Ok.
Seu formulário de relatório estará como na figura a seguir:

www.etecfran.com.br
Estrada do Governo, S/N, KM 42 – Pouso Alegre – Franco da Rocha – São Paulo
CEP 07859-340 – Tel.: (11) 4449-3115 – Fax: (11) 4443-6110
ETEC DR. EMÍLIO HERNANDEZ AGUILAR

As divisões (bandas) são:


Page Header – Cabeçalho da página (Aqui vai o timbre e os dados
da empresa)
Title – Título (Aqui é o título do relatório. Quais informações estão
impressas)
Column Header – Cabeçalho da Coluna (Aqui vão os nomes dos
campos impressos)
Detail – Detalhe (Aqui vão as informações cadastradas)
Page Footer – Rodapé (Aqui colocamos outras informações, como
número da página)

IMPORTANTE!

www.etecfran.com.br
Estrada do Governo, S/N, KM 42 – Pouso Alegre – Franco da Rocha – São Paulo
CEP 07859-340 – Tel.: (11) 4449-3115 – Fax: (11) 4443-6110
ETEC DR. EMÍLIO HERNANDEZ AGUILAR
O formulário FRMDADOS precisará “reconhecer” o formulário de
relatório FRMRELAT (U_RELAT), pois este será criado através do
cliques de botões do formulário de dados. Para isso, precisamos
configurar o Use Unit e adicionar a U_RELAT.
O formulário de relatórios, por sua vez, deve “reconhecer” o
DataModule, para que seja criado o relatório através da query
QRYRELAT, que está neste DataModule. Aqui também fazemos o
comando File, Use Unit e adicionamos o U_DM.
Devemos agora conectar o Quick Report ao componente Query
do DataModule. Altere a propriedade DataSet (aparecerão as opções
de Query e Tabela. Como queremos um relatório dinâmico,
selecionaremos a Query) e mudamos a propriedade Name para
QRPRELAT.
Para finalizar a configuração do relatório, vamos configurar as
Bandas do mesmo. Começando pelo Cabeçalho da Página.

Page Header
Clique na parte Page Header. Adicione um QRLabel (paleta QReport)
e em Caption digite o conteúdo referente ao timbre da Empresa,
como seu nome e endereço. Seria uma QRLabel para o nome e outra
para o endereço.
A formatação da fonte é livre e o espaço pode ser aumentado,
usando as bordas do Page Header.
Title
Depois selecionamos o Title e criamos o título do relatório, com outra
QRLabel.
Adicionaremos no Title também a data e a hora, com um QRSysData
e mudamos a propriedade Data (Dados) para qrsDateTime.

www.etecfran.com.br
Estrada do Governo, S/N, KM 42 – Pouso Alegre – Franco da Rocha – São Paulo
CEP 07859-340 – Tel.: (11) 4449-3115 – Fax: (11) 4443-6110
ETEC DR. EMÍLIO HERNANDEZ AGUILAR
Column Header
Selecionamos agora o espaço para os cabeçalhos de colunas e
adicionamos várias QRLabel, uma para cada campo da tabela que eu
queira mostrar. Não é abrigatório adicionar para todos os campos.
Neste exemplo, colocaremos uma QRLabel para cada, sendo: Código,
Nome, Cidade, E-mail.
Detail
Aqui colocamos as informações do banco correspondentes ao Column
Header.
Não usaremos aqui QRLabel e sim QRDBText, pois estas puxam as
informações do Banco de Dados.
A QRDBText deve ser conectada com as propriedades DataSet
(aparecerão as opções de Query e Tabela. Como queremos um
relatório dinâmico, selecionaremos a Query) e DataField (o campo
desejado).
Page Footer
Selecione agora o rodapé e adicione uma QRSysData. Mude a
propriedade Data para Page Number.
Agora seu relatório deve ter aparência semelhante a mostrada a
seguir:

www.etecfran.com.br
Estrada do Governo, S/N, KM 42 – Pouso Alegre – Franco da Rocha – São Paulo
CEP 07859-340 – Tel.: (11) 4449-3115 – Fax: (11) 4443-6110
ETEC DR. EMÍLIO HERNANDEZ AGUILAR

Agora, basta codificar os botões que geram o relatório.

BOTÃO PARA RALATÓRIO GERAL:

procedure TFRMDADOS.BTNGERALClick(Sender: TObject);


begin
FRMRELAT. QRPRELAT.Preview;
end;

O comando FRMRELAT. QRPRELAT.Preview; aciona o


relatório geral, que está conectado à Query. Detalhe: Só funcionará
se anteriormente, como passado neste tutorial, foi feito o comando
Use Unit, para que o formulário Inicial reconheça o de relatório.

www.etecfran.com.br
Estrada do Governo, S/N, KM 42 – Pouso Alegre – Franco da Rocha – São Paulo
CEP 07859-340 – Tel.: (11) 4449-3115 – Fax: (11) 4443-6110
ETEC DR. EMÍLIO HERNANDEZ AGUILAR
Repare que o resultado é um relatório com todos os registros
cadastrados na tabela.

BOTÃO PARA RELATÓRIO FILTRADO:

procedure TFRMDADOS.BTNFILTROClick(Sender: TObject);


var CIDADE:string;
begin
CIDADE:=DBEdit3.Text;
DMRELATORIO.QRYRELAT.Close;
DMRELATORIO.QRYRELAT.SQL.Clear;
DMRELATORIO.QRYRELAT.SQL.Add('select * from usuarios');
DMRELATORIO.QRYRELAT.SQL.Add('where usuario=' +
QuotedStr(CIDADE) + '');
DMRELATORIO.QRYRELAT.Open;
FRMRELAT. QRPRELAT.Preview;
end;

Neste caso, criamos uma variável CIDADE, que captura o valor


da DBEdit3 (a Edit da cidade). Esta cidade capturada servirá para
filtrar o relatório por este campo.
Todos os comandos deste botão foram abordados e explicados
anteriormente em nosso material sobre consultas.
Repare que o resultado é um relatório que mostra todas as
pessoas da mesma cidade.
Um problema identificado é que, ao se criar um relatório
filtrado, o relatório geral deixa de funcionar como deveria e se
comporta como se estivéssemos filtrando.

www.etecfran.com.br
Estrada do Governo, S/N, KM 42 – Pouso Alegre – Franco da Rocha – São Paulo
CEP 07859-340 – Tel.: (11) 4449-3115 – Fax: (11) 4443-6110
ETEC DR. EMÍLIO HERNANDEZ AGUILAR
Para resolver este problema, precisaremos fazer alterações no
comando do botão para o relatório geral.

ALTERAÇÃO NO BOTÃO PARA RALATÓRIO GERAL:

procedure TFRMDADOS.BTNGERALClick(Sender: TObject);


begin
DMRELATORIO.QRYRELAT.Close;
DMRELATORIO.QRYRELAT.SQL.Clear;
DMRELATORIO.QRYRELAT.SQL.Add('select * from usuarios');
DMRELATORIO.QRYRELAT.Open;
FRMRELAT. QRPRELAT.Preview;
end;

O código fica muito semelhante ao utlizado no relatório filtrado,


com exceção do comando SQL que “pede” a separação pela cidade.

OBSERVAÇÕES FINAIS:

Poderíamos ainda utilizar outros recursos, como combobox,


radio buttons, entre outros e criar um formulários cheio de opções
para a criação dos relatórios.
Fica como sugestão de melhorias para este projeto.

www.etecfran.com.br
Estrada do Governo, S/N, KM 42 – Pouso Alegre – Franco da Rocha – São Paulo
CEP 07859-340 – Tel.: (11) 4449-3115 – Fax: (11) 4443-6110

Você também pode gostar