... Pague apenas R$67,00 uma única vez e tenha acesso por 1 ano aos vídeos e arquivos exemplos do site ...

Clique aqui e obtenha mais detalhes.


Quem incluiu, alterou ou excluiu ?

Montei um projeto bem simples, com a finalidade de se realizar uma auditoria.  Pode ser que você precise saber o que os usuários andam aprontando, principalmente na fase de treinamento e implementação do projeto.

Idealizei uma tabela para armazenar diversas informações, como por exemplo, o nome do usuário, data e hora da ocorrência, nome do computador de origem e outros.  Veja!

Usando Access - tabel Auditoria

Elaborei uma função que pode ser utilizada em qualquer formulário ou relatório, visando este objetivo. Para isso, usamos basicamente, uma consulta ação de inclusão (INSERT INTO).

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$
'----------------------------------------
'Estrutura da cosulta INSERT
'----------------------------------------
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 & """);"
'------------------------------------
'Executando a consulta
'------------------------------------
CurrentDb.Execute strSql
End Sub

Para capturar o nome do usuário que faz as alterações, temos as seguintes situações:

a) utilizar a função CurrentUser(), caso o aplicativo tenha proteção a nível de usuário (MDW), 

b) usar o nome do usuário logado no Windows. Opção empregada no aplicativo exemplo:

CreateObject("Wscript.network").UserName

ou

Environ("username")

c) usar o nome do usuário armazenado em uma tabela do aplicativo (tblUsuários).  Neste caso, usamos a variável pública que contém o nome do usuário logado.  O aplicativo Maestro disponível neste site,  faz uso desta opção.

login.usuario

Quanto ao nome do computador, capturamos através da função Environ("ComputerName").  Você encontra maiores detalhes sobre a função Environ, neste meu artigo.

Para controlar as inclusões e as alterações de um formulário, usamos o evento Antes de atualizar do formulário.

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.NewRecord Then
   '------------------------
   'Auditar novo registro
   '------------------------
   Call fncAuditar(Me.Name, 0, "Cliente " & Me!NomeCliente)
Else
   '-------------------------
   'Auditar registro alterado
   '-------------------------
   Call fncAuditar(Me.Name, 1, "Cliente " & Me!NomeCliente)
End If
End Sub

Para controlar a exclusão, usamos o evento Ao excluir do formulário.

Private Sub Form_Delete(Cancel As Integer)
'---------------------------
'Auditar registro excluído
'---------------------------
Call fncAuditar(Me.Name, 2, "Cliente " & Me!NomeCliente)
End Sub

Clique aqui e baixe o arquivo exemplo.

Abra o formulário, faça as alterações nos registros e depois verifique a tabela tblAuditoria.

Usando Access - Formulário auditado


Bom estudo!


 

 


2 comentário(s)

GabrielPN06   03/02/2017 07:40:03

Boa tarde mestre, em qual formulário e em qual evento seria inserida a primeira parte do código?

Avelino Sampaio   03/02/2017 08:06:46

Gabriel,

a função fncAuditar() tem que ficar em um módulo global. Assim, todos os formulários terão acesso a função.

Sucesso!


Envie seu comentário: