Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Whats the best way to track data changes for user
Message
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00878871
Message ID:
00878879
Views:
18
Hi Chuck!

You have to use triggers to do it for you... Just add this expression in triggers and put the fuction below in your Stored Procedures!

Insert Trigger -> Audit("I")
Update Trigger -> Audit("U")
Delete Trigger -> Audit("D")

Here is the code:
Function Audit
Lparameters m.Audit_Operacao
If !File("Audit.DBF")
   Create Table ("Audit.Dbf") Free (DataHora T (8), Operacao C (1), Usuario C (10), Tabela C (20), Id C (20), Registro M (20))
   USE In Audit
EndIf
m.Audit_DataHora = DateTime()
m.Audit_Usuario = Iif(Type("_Usuario")#"C","??????????",_Usuario)
If Len(m.Audit_Operacao)>1
	Insert Into Audit (DataHora, Operacao, Usuario, Registro) Values;
	  (m.Audit_DataHora, "M", m.Audit_Usuario, m.Audit_Operacao)
Else
	m.Audit_Tabela = JustStem(Dbf())
	m.Audit_Id = Transform(Evaluate(Field(1)))
	m.Audit_Registro = ""
	Set Textmerge To Memvar m.Audit_Registro NoShow
	Set Textmerge On
	For m.Audit_No = 1 To FCount()
		DO Case
			Case m.Audit_Operacao = "I"
				\<<Field(m.Audit_No)>>
				\<<Evaluate(Field(m.Audit_No))>>
				\
			Case m.Audit_Operacao = "U" .and. OldVal(Field(m.Audit_No)) # Evaluate(Field(m.Audit_No))
				\<<Field(m.Audit_No)>>
				\<<OldVal(Field(m.Audit_No))>>
				\<<Evaluate(Field(m.Audit_No))>>
				\
			Case m.Audit_Operacao = "D"
				\<<Field(m.Audit_No)>>
				\<<Evaluate(Field(m.Audit_No))>>
				\
		EndCase
	EndFor
	Set Textmerge Off
	Set Textmerge To
	If !Empty(m.Audit_Registro)
		Insert Into Audit (DataHora, Operacao, Usuario, Tabela, Id, Registro) Values;
		(m.Audit_DataHora, m.Audit_Operacao, m.Audit_Usuario, m.Audit_Tabela, m.Audit_Id, m.Audit_Registro)
	EndIf
EndIf
Return .T.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Rodolfo Duarte
Previous
Reply
Map
View

Click here to load this message in the networking platform