Artigo Clube Delphi Edição 51 - DataSetProvider Avançado

Artigo da Revista Clube Delphi Edição 51.

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



Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

DataSetProvider Avançado

Armazene em log todas as alterações feitas no banco de dados

 

Neste artigo veremos como utilizar alguns recursos avançados do DataSetProvider e do ClientDataSet para fazer log de todas as atualizações enviadas ao banco de dados. A partir desses logs, você poderá, por exemplo, identificar e recuperar registros excluídos ou modificados de forma indevida por um usuário do sistema.

O que faremos basicamente será salvar todos os DataPackets de atualização (os chamados Deltas) em arquivos no disco, juntamente com informações sobre o usuário, data/hora, tabela atualizada etc. Essa abordagem é bastante flexível: você poderá adaptar a solução à qualquer aplicação (desde que faça uso de

ClientDataSets e DataSetProviders), independente do banco de dados que esteja utilizando.

 

Construindo a aplicação de exemplo

Crie uma nova aplicação no Delphi e adicione um DataModule ao projeto (chame-o de "DM"). Acredito que o leitor já está familiarizado com a criação de aplicações de banco de dados usando dbExpress, de forma que não entrarei em detalhes sobre a configuração dos componentes. Caso você nunca tenha feito uma conexão dbExpress, poderá ler um artigo introdutório que colocamos no portal do assinante (www.clubedelphi.com.br/portal).

Veja na Figura 1 os componentes utilizados e formulário principal da aplicação com os controles Data-Aware. Aqui estou acessando o banco de dados Employee.gdb dos demos do Interbase. O SQLQuery obtém dados da tabela Customer e tem a seguinte instrução SQL: "select CUST_NO,CU5TOMER,CITY from CUSTOMER”. Veja a seguir o código colocado no evento OnClick do botão Aplicar:

 

procedure TForrn1.Button1lClick(Sender: TObject);

begin

{Declare DBClient no uses}

(DataSource1.DataSet as

TClientDataSet).ApplyUpdates(O);

end:

 

Figura 1.Formulário principal da aplicação e DataModule

 

Antes de continuarmos o exemplo, é importante lembrar como funciona o tratamento de DataPackets feito pelo DataSetProvider.

 

DataSetProvider e DataPackets" [...] continue lendo...

Artigos relacionados