Jump to content
acneto.frc

Gravar registro de log de alterações

Recommended Posts

Bom dia a todos!

Tenho uma rotina desenvolvida em Delphi onde eu gravo em uma tabela os campos alterados das tabelas do sistema.

Preciso implementar essa rotina em javascript e não estou conseguindo obter os valores do campo alterado e o valor anterior (delta)

É uma rotina muito útil para acompanhamento de operação do sitema

Obrigado!


begin
  DmCliente.CdsAlteracoes.Open;
 
  m_modificado := false;
 
  for i := 0 to CdsAtivo.Fields.Count - 1 do
    begin
      V := CdsAtivo.Fields.OldValue;
      V := VarType( V );
 
      if CdsAtivo.Fields.OldValue <> CdsAtivo.Fields.NewValue then
        begin
          m_modificado := true;
          with DmCliente.CdsAlteracoes do
            begin
              DmCliente.CdsAlteracoes.Append;
              DmCliente.CdsAlteracoes.FieldByName('Alt_DtCadastro').AsString   := dateToStr( Date );
              DmCliente.CdsAlteracoes.FieldByName('Alt_Horario').AsString      := TimeToStr( time() );
              DmCliente.CdsAlteracoes.FieldByName('Alt_NomeTabela').AsString   := UpperCase(NomeTabela);
              DmCliente.CdsAlteracoes.FieldByName('Alt_CampoChave').AsInteger  := CdsAtivo.Fields[0].OldValue;
              DmCliente.CdsAlteracoes.FieldByName('Alt_NomeCampo').AsString    := CdsAtivo.Fields.FieldName;
 
              Case CdsAtivo.Fields.DataType of   //   .FieldByName(Vle.Cells[ 0 , i ]).DataType of
                ftString:
                begin
                  if CdsAtivo.Fields.OldValue <> Null then
                    DmCliente.CdsAlteracoes.FieldByName('Alt_DadoOriginal').AsString := CdsAtivo.Fields.OldValue;
                  if CdsAtivo.Fields.NewValue <> Null then
                    DmCliente.CdsAlteracoes.FieldByName('Alt_DadoAlterado').AsString := CdsAtivo.Fields.NewValue;
                end;
              end;
 
              DmCliente.CdsAlteracoes.FieldByName('Alt_NomeUsuario').AsString  := m_nomeusuario;
              DmCliente.CdsAlteracoes.FieldByName('Alt_DtCadastro').AsDateTime := date();
              DmCliente.CdsAlteracoes.FieldByName('Alt_Horario').AsString      := TimeToStr(time());
              DmCliente.CdsAlteracoes.FieldByName('Alt_NomeMicro').AsString    := m_HostNome^.h_name;
              DmCliente.CdsAlteracoes.FieldByName('Alt_IpMicro').AsString      := m_HostIp;
              DmCliente.CdsAlteracoes.FieldByName('Usu_Codigo').AsInteger      := m_CodigoUsuario;
 
              DmCliente.CdsAlteracoes.Post;
            end;
        end;
    end;
 
  if m_modificado = true then
    DmCliente.CdsAlteracoes.ApplyUpdates(0);
 
  DmCliente.CdsAlteracoes.Close;
 
end;
 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Mateus Duarte
      Olá, sou iniciante em PHP, e estou aprendendo sobre o mesmo aos poucos. Já fiz um sistema web com funções basicas(login,cadastro,alteração,exclusão).
      Fiquei contente com o resultado. Mas agora gostaria de saber como fazer um log, mostrando cada alteração que eu faço no banco.
      Ex: Usuario inseriu um cadastro na categoria X
       
      Já procurei na internet, mas lá so mostra logs de quando o usuario se loga. Preciso de logs de quando ele faz uma alteração no banco.
      Podem me ajudar?
    • By Daniel da Silva Almeida
      Boa tarde!
       
      Estou trabalhando em um projeto de um dashboard a partir dos logs do Squid, porém certos campos do arquivo de log não consigo identificar o que são...
       
      2017-12-13 15:48:04 [71336] Request(IAPadrao/none/-) http://www.globo.com/ 192.168.1.51/192.168.1.51 paulo GET REDIRECT
      2017-12-13 15:48:04 [71336] Request(IAPadrao/none/-) www.google.com.br:443 192.168.1.51/192.168.1.51 paulo CONNECT REDIRECT
      2017-12-13 15:48:04 [71336] Request(IAPadrao/none/-) www.google.com.br:443 192.168.1.51/192.168.1.51 paulo CONNECT REDIRECT
      2017-12-13 15:48:06 [71336] Request(IAPadrao/none/-) http://www.globo.com/ 192.168.1.51/192.168.1.51 paulo GET REDIRECT
      2017-12-14 14:25:48 [50898] Request(IALiberados/none/-) http://armmf.adobe.com/arm-manifests/win/ArmManifest2.msi 192.168.1.53/192.168.1.53 ana HEAD REDIRECT
      2017-12-14 14:25:48 [50898] Request(IALiberados/none/-) http://armmf.adobe.com/arm-manifests/win/ArmManifest2.msi 192.168.1.53/192.168.1.53 ana HEAD REDIRECT
       
      Os campos em destaque são o que não consegui identificar o que são...
      Há linhas que os sites foram bloqueados porém vieram como CONNECT REDIRECT também.
       
      Podem me ajudar por favor?
       
      Desde já agradeço.
    • By FreedomFSA
      Pessoal,
       
      Posto abaixo o log gerado pelo FRST. Recentemente eu fui baixar um anime e o site de download executou um download automaticamente de um arquivo - não lembro o nome - também não cheguei a executar ele... Mas mesmo assim achei relevante vir e postar o log. 
       
      frst.txt
       
      Addition.txt
       
    • By adriano.nogueira
      Bom dia.
          Sou novato aqui no fórum e gostaria de um auxílio na questão de backup.
          Já fiz várias pesquisas sobre o assunto e acho que não existe uma solução que eu acho que tinha que ter..
          Seguinte, preciso gravar log de alterações de tabelas, só que não queria fazer campo a campo..
          Gostaria de usar algo do tipo.
          SELECT column_name into campo
            FROM INFORMATION_SCHEMA.COLUMNS
          WHERE table_name = 'tbl_name'
         
           aí eu faria a comparação dinâmica
           if NEW.campo <> old.campo then
                 insert log
                 ou
                 concatena set c_log = campo=>valor;
                 e no final gravo uma string só no log
           end if;
       
           e com isso não corro o risto de incluir algum campo na tabela e não incluir no log
           seria uma solução mais inteligente do que comparar campo a campo.
       
      Obrigado a todos.
      At.
      Adriano
    • By robertopr
      Olá,
       
      O log do cPanel na pasta access-logs pode ser apagado ou reduzido?
      Vou tentar mudar o chmod e deletar, se não for possível, abrir e reduzir para poucas linhas (está com 500Mb)
      Estou com receio de tentar e dar um problema maior.
      Obrigado
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.