Log

Delphi

05/10/2009

Estou precisando criar um log das alterações das tabelas de um programa, ou seja a cada inserção, alteração ou exclusão relatar em uma tabela do banco de dados.

Se alguém tiver alguma idéia de como fazer agradeço.

Estou usando DBExpress e firebird 2.0.


Silveriosepulveda

Silveriosepulveda

Curtidas 0

Respostas

Afarias

Afarias

05/10/2009

Uma *opção* é criar triggers para AFTER insert,update,delete para a tabela em questão e gravar os valores desejados em uma tabela de log.

Algo assim por exemplo:

create trigger tr_log_tabela for tabela
  after insert or update or delete 
as
  declare id_rec integer;
  declare acao varchar(10);
begin

  if (inserting) then
  begin
    acao=´INSERT´;
    id_rec=new.id;
  end else
  begin
    id_rec = old.id;
    if (updating) then
      acao=´UPDATE´;
    else
      acao=´DELETE´;
  end
  
  insert into log (id, nome_tabela, id_registro, acao, data_hora)
  values (gen_id(gn_log_id,1), ´TABELA´, :id_rec, :acao, current_timestamp);

end
^



T+


GOSTEI 0
Silveriosepulveda

Silveriosepulveda

05/10/2009

Show, esse á uma solução bem viável.

Mas estava pensando em algo pelo delphi, que gerasse esse log automaticamente, em qualquer que fosse a tabela alterada, sei que é meio complexo, mas de repente tem jeito.

Obrigado pela dica.


GOSTEI 0
Facc

Facc

05/10/2009

Eu nunca usei, mas existe o componente UserControl, que além de controlar acessos no sistema, ele controla as alterações no banco tbm, grava nome do usuário, campo que alterou, valor antes e após a alteração


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

05/10/2009

você pode fazer isso através da propriedade BeforeUpdateRecord do DatasetProvider.


GOSTEI 0
POSTAR