...
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! |