bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Quem incluiu, alterou ou excluiu ?
Quem incluiu, alterou ou excluiu ?

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 2x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

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!


 

 


11 comentário(s)

Hebertti Sales   25/02/2020 09:55:37

Boa tarde ! a aplicação não está funcionando no office em ingles. você tem alguma alteração para tal ?

Avelino Sampaio   30/08/2018 04:57:08

Gilson,

se a variável tem um escopo publico, vc poderá usá-la em qualquer código de qualquer módulo.

Experimente:

...
strSql = "INSERT INTO tblAuditoria (NomeUsuario, DataOperação, TipoOperação,"
strSql = strsql & "MaquinaOrigem, NomeFormulario, identificação) "
strSql = strSql & "VALUES(""" & strUsuarioAtual & """,'" & Now & "','" & bytOperação
strSql = strSql & "','" & Environ("computername") & "','" & strNomeForm & "',""" & strCampo & """);"
...


Gilson Russo   28/08/2018 18:34:30

Boa noite! Mestre Avelino.

Como faço para implementar na tblAuditoria o nome do usuario logado na aplicação.
na aplicação existe um modulo controle acesso e tem uma var strUsuarioAtual onde fica gravado o nome do usuario. tentei fazer sozinho, mais nao consegui! Se puder me ajudar agradeço!!

LEANDRO ARAUJO   14/06/2018 18:44:08

BOA NOITE AVELINO,

Consegui colocar em meu banco de dados a auditoria, mas não grava as alterações e exclusões em um campo do tipo objeto OLE nem outro campo do tipo anexo. Como faço para resolver?
Desde Já agradeço.

Celso Gibelato   31/05/2018 13:01:50

Boa tarde Avelino,no formulário de clientes do Maestro,a inclusão do cliente é feita pelo frmNovoCliente,portanto na tblAuditoria,observei que grava como alteração e não como inclusão,uma vez que o frmClientes já foi alimentado,como faço para registrar a inclusão?
No aguardo.

Celso Gibelato   30/05/2018 18:56:44

Boa noite Avelino,repassei novamente todos os detalhes aqui da apresentação e mais o seu feedback que,chamou a atenção para a resposta da questão.Consegui,funcionou certinho.Valeu,Obrigado.

Avelino Sampaio   30/05/2018 01:54:45

Celso,

os dados do usuário, no Maestro, estão nas seguintes variáveis:

login.id
login.usuario

Sucesso!

Celso Gibelato   29/05/2018 21:45:00

Boa noite Avelino,usei essa função no Maestro como está o exemplo,funcionou legal,mas não cheguei num acordo em como capturar o usuário logado no aplicativo. Não consegui encontrar a sintaxe da instrução, você poderia ensinar? No aguardo obrigado

Maurício Bruno   14/09/2017 11:12:46

Avelino,
Boa Tarde,
Você tem algum exemplo, que demonstra valor anterior e novo valor quando alteramos?

Grato,

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!

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?


Envie seu comentário: