Amigos boa tarde!
Um tempo atrás encontrei um exemplo de um auditor que funciona tipo um log, onde fica salvo as alterações ocorridas, e adaptei a minha situação para ficar sabendo quais alterações e quem as fez.
Observando a funcionalidade encontrei um erro nos casos em o campo era diferente de nulo, ou seja preenchido e na situação atual passou a ser nulo (é apagado o conteúdo) não registra na tabela que audita.
Alguém poderia dá uma luz.
Segue o código:
Os créditos são de:
Candace Tripp
ctripp1@earthlink.net
http://www.candace-tripp.com/
Um tempo atrás encontrei um exemplo de um auditor que funciona tipo um log, onde fica salvo as alterações ocorridas, e adaptei a minha situação para ficar sabendo quais alterações e quem as fez.
Observando a funcionalidade encontrei um erro nos casos em o campo era diferente de nulo, ou seja preenchido e na situação atual passou a ser nulo (é apagado o conteúdo) não registra na tabela que audita.
Alguém poderia dá uma luz.
Segue o código:
- Código:
Function WriteAudit(frm As Form, lngID As Long, resp As Long, Tabela As String)
On Error GoTo err_WriteAudit
Dim ctlC As control
Dim db As Database
Dim RST As Recordset
Set db = CurrentDb
Set RST = db.OpenRecordset("tblAudit")
For Each ctlC In frm.Controls
If (TypeOf ctlC Is TextBox) Or (TypeOf ctlC Is ComboBox) Then 'If TypeOf ctlC Is TextBox Then
If ctlC.Value <> ctlC.OldValue Or IsNull(ctlC.OldValue) Then
If Not IsNull(ctlC.Value) Then
RST.AddNew
RST("ID") = lngID
RST("Responsavel") = resp
RST("CampoModificado") = ctlC.Name
RST("CampoOriginal") = ctlC.OldValue
RST("CampoAlterado") = ctlC.Value
RST("Tabela") = Tabela
RST("User") = GetUserName_TSB()
RST("PC") = fOSMachineName()
'rst("IP") = DameIpMaquina()
RST("DataModif") = Now
RST.Update
End If
End If
End If
Next ctlC
exit_WriteAudit:
RST.Close
db.Close
Set RST = Nothing
Set db = Nothing
Exit Function
err_WriteAudit:
MsgBox Str(Err)
MsgBox Err.Description
Resume exit_WriteAudit
End Function
Os créditos são de:
Candace Tripp
ctripp1@earthlink.net
http://www.candace-tripp.com/