Neste QuickUpdate vamos falar de um importante evento presente em um dos principais componentes de acesso a dados do Delphi, o evento BeforeUpdateRecord do DataSetProvider. Em primeiro lugar, vamos examinar como ele funciona.

Sempre que o usuário faz alterações nos dados de um ClientDataSet, por exemplo, alterando valores em um DBGrid, essas atualizações vão ficando em memória (cache) até que o programador chame em algum momento o método ApplyUpdates. Essa “cache” se chama Delta, e muitas vezes é composta de vários registros que vão ser atualizados em um único processamento. Ao chamar ApplyUpdates, o Delta é repassado ao DataSetProvider, que vai tentar atualizar automaticamente a tabela de origem baseado no DataSet associado. Para isso, ele faz parse do código SQL que você digitou, por exemplo, em um SQLDataSet do dbExpress. Ele faz isso através de uma interface chamada IProviderSupport, justamente para não se prender a uma arquitetura de acesso em específico e poder desfrutar de boas práticas de programação orientada a objetos, como programação para interfaces e abstração.

O DataSetProvider recebe então esse Delta e, registro a registro, tenta aplicar os dados no banco de dados de origem, gerando instruções de Insert, Update e Delete automaticamente. Porém, o DataSetProvider te dá uma última chance de manipular os dados a serem atualizados antes de enviá-los ao BD, isso acontece justamente no evento BeforeUpdateRecord. É nele, por exemplo, que podemos fazer validações, consistências mais dinâmicas, alterar valores, gerar valores default, criptografar campos, processar dados no AppServer no caso de soluções multicamadas, fazer um backup ou log dos dados alterados, enviar dados para outro banco, iniciar uma transação explicitamente, enfim, as possibilidades são muitas.

...
Quer ler esse conteúdo completo? Tenha acesso completo