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.