Bom dia
Companheiros a algum tempo atrás vi este código e agora queria pólo em pratica, mas tem um erro que é o seguinte
Quando vamos alterar algum campo que esta em branco e colocamos algum dado, o codigo não regista essa ocorrência
Exemplo: NomeRua: esta em branco Altero para: Rua da paz --> Não Regista
NomeRua Rua da paz Altero para Rua xxx --> Regista
Alguem ja resolveu teve este problema tambem
Desde ja obrigado
----------------------------------------------------------------------------------------------------
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.MNome & "','" & Me.Idade & "','" & Me.Morada & "','" & "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 & "','" & ctl.Name & "','" & ctl.OldValue & "','" & ctl.Value & "','" & "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
Companheiros a algum tempo atrás vi este código e agora queria pólo em pratica, mas tem um erro que é o seguinte
Quando vamos alterar algum campo que esta em branco e colocamos algum dado, o codigo não regista essa ocorrência
Exemplo: NomeRua: esta em branco Altero para: Rua da paz --> Não Regista
NomeRua Rua da paz Altero para Rua xxx --> Regista
Alguem ja resolveu teve este problema tambem
Desde ja obrigado
----------------------------------------------------------------------------------------------------
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.MNome & "','" & Me.Idade & "','" & Me.Morada & "','" & "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 & "','" & ctl.Name & "','" & ctl.OldValue & "','" & ctl.Value & "','" & "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