Amigo JPaulo desculpe a minha insistencia, tenho dificuldade em usar codigo VB no access....
fiz a alteraçao que me indicou mas ainda nao consegui que ficasse registado os novos dados introduzidos no frmexemplo na tabel log no historico no campo "valor actual".
Efectuei a alteraçao da seguinte maneira
On Error Resume Next
strUser = GetUserName_TSB
If Me.NewRecord Or ctl.Value <> ctl.OldValue Or (IsNull(ctl.Value) Or ctl.Value = "") Then strChekaDiferente = False
For Each ctl In Me.Controls
' Percorre todos os tipos de controles
Select Case ctl.ControlType
Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox
If ctl.Value <> ctl.OldValue Or (IsNull(ctl.Value) Or ctl.Value = "") Then
'se algum valor foi alterado ou deletado, coloca a variável de chekar alterações como True
strChekaDiferente = True
'e registra na tabela do Log
DoCmd.SetWarnings False
strSQL = "INSERT INTO tblLog (Utilizador, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual) IN 'C:\Documents and Settings\Vijdioni\Ambiente de trabalho\Nova\Historico.mdb'" & _
"Values('" & strUser & "', Now(),'" & Me.Form.Name & "','" & ctl.Name & "','" & ctl.OldValue & "','" & ctl.Value & "')"
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
'termina e volta a colocar a variável de chekar alterações como False
strChekaDiferente = False
Else
Cancel = True
End If
End Select
Next ctl
End If
'Salva tudo o que foi feito
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End Sub
Obrigado pela sua paciencia