... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$182,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Auditoria de Alterações em Formulários

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.

Public Sub fncAuditar(strNomeForm As String, bytOperação As Byte, strCampo As String)
'--------------------------------------------------------------------
'Argumento bytOperação : 0 - inclusão | 1 - Alteração | 2 - Exclusão
'--------------------------------------------------------------------
Dim strSql$
strSql = "INSERT INTO tblAuditoria (NomeUsuario,DataOperação,TipoOperação,"
strSql = strSql & "MaquinaOrigem,NomeFormulario,identificação) "
strSql = strSql & "VALUES(""" & CreateObject("Wscript.network").UserName & """,'" & Now & "','" & bytOperação
strSql = strSql & "','" & Environ("computername") & "','" & strNomeForm & "',""" & strCampo & """);"
CurrentDb.Execute strSql
End Sub

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.

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strLista$
If Me.NewRecord Then
    '------------------------
    'Auditar novo registro
    '------------------------
    Call fncAuditar(Me.Name, 0, "Cliente " & Me!NomeCliente)
Else
    '-------------------------
    'Auditar registro alterado
    '-------------------------
    If Me!NomeCliente <> Me!NomeCliente.OldValue Then strLista = strLista & "/NomeCliente"
    If Me!DataNascimento <> Me!DataNascimento.OldValue Then strLista = strLista & "/DataNascimento"
    If Me!Celular <> Me!Celular.OldValue Then strLista = strLista & "/Celular"
    If Me![e-mail] <> Me![e-mail].OldValue Then strLista = strLista & "/e-mail"
    Call fncAuditar(Me.Name, 1, "Cliente " & Me!NomeCliente, strLista)
End If
End Sub

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

 


 

 


2 comentário(s)

Dirceu Albrecht   26/03/2018 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

MARCIO MELO - RJ   27/03/2018 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!


Envie seu comentário: