Auditoria de Alterações em Formulários
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Usuário Eduardo:
Caro Avelino, ante a função abaixo criada por você, pergunto: onde posso alterar para conseguir capturar (gravar na tabela) o nome do campo alterado/atualizado? Na função pega um campo específico.
Faça o login aqui para ter acesso ao código.
Grato desde já.
Suporte:
Eduardo, seguem as modificações no projeto para atender a sua necessidade.
Para saber se um campo foi alterado, usei a propriedade OldValue que armazena o valor anterior a alteração. Assim, comparamos o valor atual com o valor anterior e descobrimos se houve alteração.
Faça o login aqui para ter acesso ao código.
Usuário Eduardo:
Caro Avelino, funcionou perfeitamente a alteração.
Agradeço mais uma vez a boa vontade e a sua prontidão, além, claro, da disseminação de seus conhecimentos.
Download
4 comentário(s) Sidney 17/05/2023 07:06:42 Avelino, Bom dia!! Belíssimo projeto, esse sistema é perfeito para auditar informações que foram alteradas no banco de dados, dessa forma saberemos quem foi o responsável pela tal alteração do banco, estou tentando implementar no meu projeto, estou querendo incluir mais dois campos na tabela de auditoria, e não estou conseguindo, os campos são "IF" e "Usuario_do_Sistema", este último é capturado pela função "getUsuarioAtual()". podem me ajudar? MARCIO MELO - RJ 27/03/2023 05:02:17 Perfeito! Tipo de função que não pode faltar num banco de dados, onde várias pessoas usam para adicionar, editar e excluir. E muita das vezes ninguém sabe o que aconteceu, provocando um desgaste. O mais bacana é que sempre que possível o Avelino disponibiliza exemplo da aplicação do código que torna uma forma prática de colocar em prática e fazer testes, trazendo uma abordagem didática e detalhada sobre o assunto. Aprendi muito ao longo dos anos, e sugiro para os que estão iniciando, adiquir o kit completo para ter acesso online e off line a todo material, sei o quanto foi e é útil ter em mãos. Obrigado por colaborar com os frutos do Suporte de forma super profissional. Sou mais Brasil! Forte abraço! Dirceu Albrecht 26/03/2023 06:52:25 Muito boa esta função, Como sugestão eu acredito que dê para fazer um loop pelos campos ao invés de relacionar um a um? teria como? Saudações e parabéns pelo Blog Avelino, muito interessante esta abordagem de ficar resolvendo situações pontuais, já fiquei viciado em vir aqui conferir as novidades. Muito bom mesmo! Abraço Dirceu Albrecht 01/02/2021 19:58:30 Avelino, boa noite! A função é formidável, já me tirou de muitas encrencas, quando o usuario me liga dizendo que o sistema esta maluco... hahaha Conforme comentário acima, eu implementei com uma passagem por todos os controles, limitando a alguns tipos de controles para não dar erro. Porém mesmo assim alguns sempre retornam erro: 109: ValorIcms AuditoriaForm: 13: Tipos incompatíveis Este campo é um TextBox e o tipo de dados é Moeda. For Each ctrl In strForm.Controls If ctrl.Name <> "dtStamp" Then audMsg = ctrl.ControlType & ": " & ctrl.Name Select Case ctrl.ControlType Case acTextBox, acComboBox, acCheckBox, acListBox, acOptionGroup ' adjust to taste If Nzx(ctrl) <> Nzx(ctrl.OldValue) Then strChanges = strChanges & ctrl.Name & ": De " & CStr(Nzx(ctrl.OldValue, "")) & " -> " & CStr(Nzx(ctrl, "")) & vbCrLf & " | " End If Case Else End Select End If Next ctrl Devo estar falhando em algum detalhe mas não consegui identificar |