Estou com um problema no histórico de alteração, quando vou apertar no botão salvar ele salva, quando vou ver na tabela tablog esta salvo, mas ela registrou 19 registro ao mesmo tempo, o que posso estar fazendo errado.
Aqui esta o que esta postado no botão salvar, pois eu peguei estes códigos de um exemplo do JPaulo e no exemplo dele esta funcionando corretamente.
Private Sub Command8_Click()
Dim strChekaDiferente As Boolean
Dim strSQL As String
Dim ctl As Control
Dim strUser As String
'By JPaulo ® Maximo Access
'http://maximoaccess.forumeiros.com/
'2010-06-11
'Importante: Todos os botões de navegação devem conter a
'chamada de toda esta instrução.
'O form não deve ter o botão fechar ativo, deve colocar um botão para esse efeito e chamar a instrução.
On Error Resume Next
strChekaDiferente = False
strUser = GetUserName_TSB
If Me.NewRecord Then 'verifica se é um novo registro, se for registra com novo
strChekaDiferente = True
strSQL = "INSERT INTO tblLog (Utilizador, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & Me.Form.Name & "','" & Me.Referencia & "','" & Me.Descricao & "','" & Me.Descricao & "','" & "Novo Registro" & "')"
DoCmd.RunSQL strSQL
Else
' se não for um novo registro, coloca a variável de chekar alterações como False
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, Status) Values('" & strUser & "', Now(),'" & Me.Form.Name & "','" & Me.Referencia & "','" & Me.Descricao & "','" & Me.Descricao & "','" & "Registro Alterado" & "')"
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
Aqui esta o que esta postado no botão salvar, pois eu peguei estes códigos de um exemplo do JPaulo e no exemplo dele esta funcionando corretamente.
Private Sub Command8_Click()
Dim strChekaDiferente As Boolean
Dim strSQL As String
Dim ctl As Control
Dim strUser As String
'By JPaulo ® Maximo Access
'http://maximoaccess.forumeiros.com/
'2010-06-11
'Importante: Todos os botões de navegação devem conter a
'chamada de toda esta instrução.
'O form não deve ter o botão fechar ativo, deve colocar um botão para esse efeito e chamar a instrução.
On Error Resume Next
strChekaDiferente = False
strUser = GetUserName_TSB
If Me.NewRecord Then 'verifica se é um novo registro, se for registra com novo
strChekaDiferente = True
strSQL = "INSERT INTO tblLog (Utilizador, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & Me.Form.Name & "','" & Me.Referencia & "','" & Me.Descricao & "','" & Me.Descricao & "','" & "Novo Registro" & "')"
DoCmd.RunSQL strSQL
Else
' se não for um novo registro, coloca a variável de chekar alterações como False
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, Status) Values('" & strUser & "', Now(),'" & Me.Form.Name & "','" & Me.Referencia & "','" & Me.Descricao & "','" & Me.Descricao & "','" & "Registro Alterado" & "')"
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