MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Log de Alterações.

    Compartilhe

    Rhostert
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 21/07/2017

    [Resolvido]Log de Alterações.

    Mensagem  Rhostert em Ter 08 Ago 2017, 15:11

    Colegas, boa tarde.

    Mais uma ajudinha.

    Preciso colocar no sistema que estou treinando/criando, um log de registro de todas as alterações que foram realizadas pelos usuários, mas como ainda não sei nada de VB (e quando falo nada é nada mesmo), gostaria de saber se existe alguma forma de fazer isso apenas com os recursos básicos do access.

    Ex.: alteração em algum dos campos de cadastro de convênios ou de seus dados financeiros.

    No Fórum e no repositório, identifiquei alguns tópicos sobre isso, mas a maioria remete ao site do "Dropbox" e não tenho acesso aqui da empresa, então se puderem passar as dicas diretamente aqui pelo Fórum eu agradeço muito.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Qua 09 Ago 2017, 05:42

    Aqui;

    [Você precisa estar registrado e conectado para ver este link.]



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Rhostert
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 21/07/2017

    Re: [Resolvido]Log de Alterações.

    Mensagem  Rhostert em Qua 09 Ago 2017, 08:06

    Muito Obrigado.

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Log de Auditoria

    Mensagem  Maurício Bruno em Seg 18 Set 2017, 11:03

    JPaulo,

    Parabéns!! pelo desenvolvimento deste histórico.

    Com base no seu exemplo fiz uma a adaptação para o meu projeto, e encontrei uma dificuldade. Tenho um formulário que ele verifica o nível de acesso se o usuário tem privilegio para exclusão, caso ele tenha permissão a exclusão e permitida e fica registrado, entretanto, caso o registro tenha relacionamento com outra tabela ele não permite excluir, porém, ele fica registrado na tabela de log REGISTRO EXCLUÍDO só que o registro não foi excluído, gostaria que neste casos onde a exclusão fosse negada ficasse gravado EXCLUSÃO NEGADA.

    Segue abaixo o meu código

    Código:
    'AO CLICAR NO BOTÃO EXCLUIR
    Private Sub btn_excluir_Click()
    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario, nUsuario As String
    Dim sGrupoUsuario As String
    sUsuario = Forms!Frm_GERAL_Cadastro_Cargo!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario

    'TRILHA DE AUDITORIA
    Dim apaga As Integer
    Dim alerta As String
    Dim Busca As String
    Dim strUser As String
    Dim strSQL As String


    'TRATATIVA DE ERRO 3200
    Dim Mensg  As String
    On Error GoTo trataerro
    Beep

    'REMOVER A MENSAGEM PADRÃO DE EXCLUSÃO
    DoCmd.SetWarnings False

    'AO ABRIR VERIFICA NÍVEL DE ACESSO
    If txt_Grupo_Usuario = "DESENVOLVEDOR" Or sGrupoUsuario = "ADMINISTRADOR - PS" Then
        'TRILHA DE AUDITORIA
        strUser = nUsuario
        Busca = Me.txt_cod 'INFORMA O CurrentRecord
        apaga = MsgBox("Deseja excluir o Cargo?" & _
        "" & vbNewLine & _
        vbCr & " " & Me.txt_cargo & "", vbYesNo + vbQuestion, "Atenção!") 'CAMPO DA PERGUNTA
            Select Case apaga
                Case vbYes 'SE FOR SIM, ADICIONAR À TABELA DE LOG E DE SEGUIDA DELETA
        strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
        & Me.Caption & "','" & Busca & "','" & _
        "CÓDIGO: " & "'&'" & Me.txt_cod & "'&'" & _
        " | CARGO: " & "'&'" & Me.txt_cargo & "'&'" & _
        " | STATUS: " & "'&'" & Me.check_status & _
        "','" & "" & "','" & "REGISTRO EXCLUÍDO" & "')"
        DoCmd.RunSQL strSQL
        DoCmd.RunCommand acCmdDeleteRecord
        
        'QUANDO CLICAR NO BOTÃO HABILITARÁ NOVAMENTE TODOS OS CAMPOS
        Me.txt_cod.Enabled = False
        Me.txt_cargo.Enabled = False
        Me.check_status.Enabled = False
        Me.txt_cargo_cons.Enabled = True
        Me.list_consulta_cargo.Enabled = True
        
        'DESABILITARÁ O BOTÃO FECHAR
        Me.btn_novocargo.Enabled = True
        Me.btn_alterar.Enabled = False
        Me.btn_salvar.Enabled = False
        Me.btn_excluir.Enabled = False
        Me.btn_fechar.Enabled = True
        
        MsgBox "EXCLUSÃO REALIZADA" & vbNewLine & _
        "" & vbNewLine & _
        "O Cargo" & " " & Busca & " foi excluído com sucesso!" & vbNewLine & _
        "" & vbNewLine, _
          vbInformation, "Exclusão Realizada!"

        'ATUALIZAR A VIEW
        Me.list_consulta_cargo.Requery
        
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Current

        'MOVER CURSOR PARA O CAMPO
        DoCmd.GoToControl "txt_cargo_cons"

        Case vbNo
        Cancel = True
        'QUANDO CLICAR NO BOTÃO HABILITARÁ NOVAMENTE TODOS OS CAMPOS
        Me.txt_cod.Enabled = False
        Me.txt_cargo.Enabled = False
        Me.check_status.Enabled = False
        Me.txt_cargo_cons.Enabled = True
        Me.list_consulta_cargo.Enabled = True
        
        'DESABILITARÁ O BOTÃO FECHAR
        Me.btn_novocargo.Enabled = True
        Me.btn_alterar.Enabled = False
        Me.btn_salvar.Enabled = False
        Me.btn_excluir.Enabled = False
        Me.btn_fechar.Enabled = True
        
        'MOVER CURSOR PARA O CAMPO
        DoCmd.GoToControl "txt_cargo_cons"
        Exit Sub
        End Select

    'TRATATIVA DE ERRO 3200
    sair:
       Exit Sub
    trataerro:
        MsgBox "EXCLUSÃO NEGADO" & vbNewLine & _
        "" & vbNewLine & _
        "O Registro deste Cargo Corporativo não pode ser excluído, pois está relacionado a um Gestor e/ou Usuário." & vbNewLine & _
        "" & vbNewLine & _
        "Dúvidas, entre em contato com SESMT", _
          vbExclamation, "Exclusão Negada!"
        
    Resume sair

    Else
        
        MsgBox "ACESSO NEGADO" & vbNewLine & _
        "" & vbNewLine & _
        "Você não possui autorização para excluir Cargo Corporativo." & vbNewLine & _
        "" & vbNewLine & _
        "Por favor, entre em contato com SESMT", _
          vbExclamation, "Acesso Negado"
    End If

    DoCmd.SetWarnings True

    End Sub

    Gostaria de uma orientação e ajuda para resolver este problema.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Seg 18 Set 2017, 11:28

    Olá, nesse caso tem de antecipar o delete, para ele passar para o traterro;

    Código:
      Case vbYes
            DoCmd.RunCommand acCmdDeleteRecord
    strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
        & Me.Caption & "','" & Busca & "','" & _
        "CÓDIGO: " & "'&'" & Me.txt_cod & "'&'" & _
        " | CARGO: " & "'&'" & Me.txt_cargo & "'&'" & _
        " | STATUS: " & "'&'" & Me.check_status & _
        "','" & "" & "','" & "REGISTRO EXCLUÍDO" & "')"
        DoCmd.RunSQL strSQL

    No trataerrro;

    Código:
    trataerro:
        MsgBox "EXCLUSÃO NEGADO" & vbNewLine & _
        "" & vbNewLine & _
        "O Registro deste Cargo Corporativo não pode ser excluído, pois está relacionado a um Gestor e/ou Usuário." & vbNewLine & _
        "" & vbNewLine & _
        "Dúvidas, entre em contato com SESMT", _
          vbExclamation, "Exclusão Negada!"
         
              strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
        & Me.Caption & "','" & Busca & "','" & _
        "CÓDIGO: " & "'&'" & Me.txt_cod & "'&'" & _
        " | CARGO: " & "'&'" & Me.txt_cargo & "'&'" & _
        " | STATUS: " & "'&'" & Me.check_status & _
        "','" & "" & "','" & "EXCLUSÃO NEGADO" & "')"
        DoCmd.RunSQL strSQL


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Seg 18 Set 2017, 12:16

    JPaulo,

    TOP funcionou.

    Porém, a msbox abaixo o txt.cargo não aparece informando o nome do cargo excluído.

    O meu Busca = Me.txt_cod, pelo falo que o campo que quero gravar na coluna NomeCampo.

    Código:
               MsgBox "EXCLUSÃO REALIZADA" & vbNewLine & _
                "" & vbNewLine & _
                "O Cargo" & " " & Me.txt_cargo & " " & "foi excluído com sucesso!" & vbNewLine & _
                "" & vbNewLine, _
                  vbInformation, "Exclusão Realizada!"

    E o campo valor antigo fica com as informações em branco.

    Código Completo
    Código:
    'AO CLICAR NO BOTÃO EXCLUIR
    Private Sub btn_excluir_Click()
    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario, nUsuario As String
    Dim sGrupoUsuario As String
    sUsuario = Forms!Frm_GERAL_Cadastro_Cargo!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario

    'TRILHA DE AUDITORIA
    Dim apaga As Integer
    Dim alerta As String
    Dim Busca As String
    Dim strUser As String
    Dim strSQL As String


    'TRATATIVA DE ERRO 3200
    Dim Mensg  As String
    On Error GoTo trataerro
    Beep

    'REMOVER A MENSAGEM PADRÃO DE EXCLUSÃO
    DoCmd.SetWarnings False

    'AO ABRIR VERIFICA NÍVEL DE ACESSO
    If txt_Grupo_Usuario = "DESENVOLVEDOR" Or sGrupoUsuario = "ADMINISTRADOR - PS" Then
        'TRILHA DE AUDITORIA
        strUser = nUsuario
        Busca = Me.txt_cod 'INFORMA O CurrentRecord
        apaga = MsgBox("Deseja excluir o Cargo?" & _
        "" & vbNewLine & _
        vbCr & " " & Me.txt_cargo & "", vbYesNo + vbQuestion, "Atenção!") 'CAMPO DA PERGUNTA
            Select Case apaga
                Case vbYes
                DoCmd.RunCommand acCmdDeleteRecord
                strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
                & Me.Caption & "','" & Busca & "','" & _
                "CÓDIGO: " & "'&'" & Me.txt_cod & "'&'" & _
                " | CARGO: " & "'&'" & Me.txt_cargo & "'&'" & _
                " | STATUS: " & "'&'" & Me.check_status & _
                "','" & "" & "','" & "REGISTRO EXCLUÍDO" & "')"
                DoCmd.RunSQL strSQL
                
                'QUANDO CLICAR NO BOTÃO HABILITARÁ NOVAMENTE TODOS OS CAMPOS
                Me.txt_cod.Enabled = False
                Me.txt_cargo.Enabled = False
                Me.check_status.Enabled = False
                Me.txt_cargo_cons.Enabled = True
                Me.list_consulta_cargo.Enabled = True
                
                'DESABILITARÁ O BOTÃO FECHAR
                Me.btn_novocargo.Enabled = True
                Me.btn_alterar.Enabled = False
                Me.btn_salvar.Enabled = False
                Me.btn_excluir.Enabled = False
                Me.btn_fechar.Enabled = True
                
                MsgBox "EXCLUSÃO REALIZADA" & vbNewLine & _
                "" & vbNewLine & _
                "O Cargo" & " " & Me.txt_cargo & " " & "foi excluído com sucesso!" & vbNewLine & _
                "" & vbNewLine, _
                  vbInformation, "Exclusão Realizada!"

        'ATUALIZAR A VIEW
        Me.list_consulta_cargo.Requery
        
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Current

        'MOVER CURSOR PARA O CAMPO
        DoCmd.GoToControl "txt_cargo_cons"

        Case vbNo
        Cancel = True
        'QUANDO CLICAR NO BOTÃO HABILITARÁ NOVAMENTE TODOS OS CAMPOS
        Me.txt_cod.Enabled = False
        Me.txt_cargo.Enabled = False
        Me.check_status.Enabled = False
        Me.txt_cargo_cons.Enabled = True
        Me.list_consulta_cargo.Enabled = True
        
        'DESABILITARÁ O BOTÃO FECHAR
        Me.btn_novocargo.Enabled = True
        Me.btn_alterar.Enabled = False
        Me.btn_salvar.Enabled = False
        Me.btn_excluir.Enabled = False
        Me.btn_fechar.Enabled = True
        
        'MOVER CURSOR PARA O CAMPO
        DoCmd.GoToControl "txt_cargo_cons"
        Exit Sub
        End Select

    'TRATATIVA DE ERRO 3200
    sair:
       Exit Sub
    trataerro:
        MsgBox "EXCLUSÃO NEGADA" & vbNewLine & _
        "" & vbNewLine & _
        "O Registro deste Cargo Corporativo" & " (" & Me.txt_cargo & ") " & "não pode ser excluído, pois está relacionado a um Gestor e/ou Usuário." & vbNewLine & _
        "" & vbNewLine & _
        "Dúvidas, entre em contato com SESMT", _
          vbExclamation, "Exclusão Negada!"
          
        strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
        & Me.Caption & "','" & Busca & "','" & _
        "CÓDIGO: " & "'&'" & Me.txt_cod & "'&'" & _
        " | CARGO: " & "'&'" & Me.txt_cargo & "'&'" & _
        " | STATUS: " & "'&'" & Me.check_status & _
        "','" & "" & "','" & "EXCLUSÃO NEGADA" & "')"
        DoCmd.RunSQL strSQL
        
    Resume sair

    Else
        
        MsgBox "ACESSO NEGADO" & vbNewLine & _
        "" & vbNewLine & _
        "Você não possui autorização para excluir Cargo Corporativo." & vbNewLine & _
        "" & vbNewLine & _
        "Por favor, entre em contato com SESMT", _
          vbExclamation, "Acesso Negado"
    End If

    DoCmd.SetWarnings True

    End Sub

    Desde já agradeço e muito pela ajuda.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Seg 18 Set 2017, 12:28

    Certo porque está a deletar antes da inserção;

    Faça assim;

    Código:
           Select Case apaga
                Case vbYes
                Dim strCod$
                Dim strCargo$
                strCod = Me.txt_cod
                strCargo = Me.txt_cargo
                DoCmd.RunCommand acCmdDeleteRecord
                strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
                & Me.Caption & "','" & Busca & "','" & _
                "CÓDIGO: " & "'&'" & strCod & "'&'" & _
                " | CARGO: " & "'&'" & strCargo & "'&'" & _
                " | STATUS: " & "'&'" & Me.check_status & _
                "','" & "" & "','" & "REGISTRO EXCLUÍDO" & "')"
                DoCmd.RunSQL strSQL

    Código:
                MsgBox "EXCLUSÃO REALIZADA" & vbNewLine & _
                "" & vbNewLine & _
                "O Cargo" & " " & strCargo & " " & "foi excluído com sucesso!" & vbNewLine & _
                "" & vbNewLine, _
                  vbInformation, "Exclusão Realizada!"


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Seg 18 Set 2017, 14:11

    JPaulo,

    TOP demais o botão excluir funcionou.

    Agora o botão salvar ele grava, entretanto, não registra na tabela de log a alteração, creio que fiz a adaptação errada, já me alterei de varias forma e não obtive sucesso.

    Código:
    'AO CLICAR NO BOTÃO SALVAR
    Private Sub btn_salvar_Click()
    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario, nUsuario As String
    Dim sGrupoUsuario As String
    sUsuario = Forms!Frm_GERAL_Cadastro_Cargo!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario

    If MsgBox("Deseja salvar o Registro?", vbYesNo + vbQuestion, "Atenção!") = vbNo Then
    Form.Undo
    MsgBox "Registro Não Salvo!!!", vbCritical, "Atenção"

    'QUANDO CLICAR NO BOTÃO HABILITARÁ NOVAMENTE TODOS OS CAMPOS
    Me.txt_cod.Enabled = False
    Me.txt_cargo.Enabled = False
    Me.check_status.Enabled = False
    Me.txt_cargo_cons.Enabled = True
    Me.list_consulta_cargo.Enabled = True

    'DESABILITARÁ O BOTÃO FECHAR
    Me.btn_novocargo.Enabled = True
    Me.btn_alterar.Enabled = False
    Me.btn_salvar.Enabled = False
    Me.btn_excluir.Enabled = False
    Me.btn_fechar.Enabled = True

    Else
          Dim strChekaDiferente As Boolean
          Dim strSQL As String
          Dim ctl As Control
          Dim strUser As String
    'By JPaulo ® Maximo Access
    'http://maximoaccess.maisforum.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 = nUsuario
            If Me.NewRecord Then 'verifica se é um novo registro, se for registra com novo
     strChekaDiferente = True
           
                strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
                & Me.Caption & "','" & Me.txt_cod & "','" & "" & "','" & _
                "CÓDIGO: " & "'&'" & Me.txt_cod & "'&'" & _
                " | CARGO: " & "'&'" & Me.txt_cargo & "'&'" & _
                " | STATUS: " & "'&'" & Me.check_status & _
                "','" & "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 Tbl_DESENV_Auditoria (Utilizador, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
        & Me.Caption & "','" & 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


    If IsNull(txt_cargo) Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O Campo Cargo Deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_cargo.SetFocus
    Me.ast_obrig02.Visible = True
    Me.Rótulo42.ForeColor = vbRed
    Me.txt_cargo.BackColor = 13231868
    Me.txt_cargo.SetFocus
        Else
        Me.ast_obrig02.Visible = False
        Me.Rótulo42.ForeColor = RGB(166, 166, 166)
        Me.txt_cargo.BackColor = RGB(255, 255, 255)

    DoCmd.RunCommand acCmdSaveRecord

    'AO INICIAR TODOS OS CAMPOS ESTARÃO LIMPOS
    DoCmd.GoToRecord acForm, "Frm_GERAL_Cadastro_Cargo", acNewRec

    'QUANDO CLICAR NO BOTÃO HABILITARÁ NOVAMENTE TODOS OS CAMPOS
    Me.txt_cod.Enabled = False
    Me.txt_cargo.Enabled = False
    Me.txt_cargo_cons.Enabled = True
    Me.list_consulta_cargo.Enabled = True

    'DESABILITARÁ O BOTÃO FECHAR
    Me.btn_novocargo.Enabled = True
    Me.btn_alterar.Enabled = False
    Me.btn_salvar.Enabled = False
    Me.btn_excluir.Enabled = False
    Me.btn_cancelar.Enabled = False
    Me.btn_fechar.Enabled = True

    MsgBox "Registro Salvo com Sucesso!!!"
    Exit Sub
    End If
    End If

    'ATUALIZAR CONTADOR DE CADASTRO
    Call Form_Current

    End Sub

    Grato pela ajuda e atenção. Desculpe o transtorno.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Ter 19 Set 2017, 05:47

    Penso que será isto;

    Teste por favor e retorne;

    Código:
    'AO CLICAR NO BOTÃO SALVAR
    Private Sub btn_salvar_Click()
    Dim strChekaDiferente As Boolean
    Dim strSQL As String
    Dim ctl As Control
    Dim strUser As String
    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario, nUsuario As String
    Dim sGrupoUsuario As String

    sUsuario = Forms!Frm_GERAL_Cadastro_Cargo!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))

    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario

    'Validamos em primeiro se o campo está null
    If IsNull(Me.txt_cargo.Value) Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O Campo Cargo Deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_cargo.SetFocus
    Me.ast_obrig02.Visible = True
    Me.Rótulo42.ForeColor = vbRed
    Me.txt_cargo.BackColor = 13231868
    Me.txt_cargo.SetFocus
    'se estiver morre aqui
    Exit Sub
    End If

    'perguntamos se o usuário quer salvar
    If MsgBox("Deseja salvar o Registro?", vbYesNo + vbQuestion, "Atenção!") = vbNo Then
    'se NÃO quer, faz isto
        Form.Undo
        MsgBox "Registro Não Salvo!!!", vbCritical, "Atenção"
        Me.txt_cod.Enabled = False
        Me.txt_cargo.Enabled = False
        Me.check_status.Enabled = False
        Me.txt_cargo_cons.Enabled = True
        Me.list_consulta_cargo.Enabled = True
        Me.btn_novocargo.Enabled = True
        Me.btn_alterar.Enabled = False
        Me.btn_salvar.Enabled = False
        Me.btn_excluir.Enabled = False
        Me.btn_fechar.Enabled = True
    'se quer salvar, faz isto
    Else
    'By JPaulo ® Maximo Access
    'http://maximoaccess.maisforum.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 = nUsuario
    'verifica se é um novo registro, se for registra com novo
            If Me.NewRecord Then
     strChekaDiferente = True
    'registra na tabela
    DoCmd.SetWarnings False
        strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
            & Me.Caption & "','" & Me.txt_cod & "','" & "" & "','" & _
            "CÓDIGO: " & "'&'" & Me.txt_cod & "'&'" & _
            " | CARGO: " & "'&'" & Me.txt_cargo & "'&'" & _
            " | STATUS: " & "'&'" & Me.check_status & _
            "','" & "NOVO REGISTRO" & "')"
        DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
      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 Tbl_DESENV_Auditoria (Utilizador, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
        & Me.Caption & "','" & 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
        Me.ast_obrig02.Visible = False
        Me.Rótulo42.ForeColor = RGB(166, 166, 166)
        Me.txt_cargo.BackColor = RGB(255, 255, 255)

    DoCmd.RunCommand acCmdSaveRecord
    'depois de salvar faz o repaint ao form
    Me.Repaint
    'envia para novo registro
    DoCmd.GoToRecord acForm, "Frm_GERAL_Cadastro_Cargo", acNewRec

    'QUANDO CLICAR NO BOTÃO HABILITARÁ NOVAMENTE TODOS OS CAMPOS
        Me.txt_cod.Enabled = False
        Me.txt_cargo.Enabled = False
        Me.txt_cargo_cons.Enabled = True
        Me.list_consulta_cargo.Enabled = True

    'DESABILITARÁ O BOTÃO FECHAR
        Me.btn_novocargo.Enabled = True
        Me.btn_alterar.Enabled = False
        Me.btn_salvar.Enabled = False
        Me.btn_excluir.Enabled = False
        Me.btn_cancelar.Enabled = False
        Me.btn_fechar.Enabled = True

    MsgBox "Registro Salvo com Sucesso!!!"
        End If
    End If

    'ATUALIZAR CONTADOR DE CADASTRO
    Call Form_Current
    End Sub


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Ter 19 Set 2017, 12:40

    JPaulo,

    Não salvou em nenhuma tabela.

    Grato pelo retorno.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Ter 19 Set 2017, 12:50

    Como sabe é extremamente dificil fazer alterações aos trechos de código, sem o banco.

    Você pode disponibilizar parte do seu banco para ver isso ?


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Ter 19 Set 2017, 13:32

    JPaulo,

    Desculpe, segue o BD.

    Grato pela ajuda e atenção.
    Anexos
    Projeto.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (684 Kb) Baixado 4 vez(es)
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Qua 20 Set 2017, 05:51

    Ola e desculpe a demora;

    A funfar;

    Registra no LOG, o novo registro, a edição de um registro e a exclusão.

    Código:
    'AO CLICAR NO BOTÃO SALVAR
    Private Sub btn_salvar_Click()
    Dim strChekaDiferente As Boolean
    Dim strSQL As String
    Dim ctl As Control
    Dim strUser As String
    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario As String
    Dim nUsuario As String
    Dim sGrupoUsuario As String

    sUsuario = Forms!Frm_GERAL_Cadastro_Cargo!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))

    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario

    'Validamos em primeiro se o campo está null
    If IsNull(Me.txt_cargo.Value) Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O Campo Cargo Deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_cargo.SetFocus
    Me.ast_obrig02.Visible = True
    Me.Rótulo42.ForeColor = vbRed
    Me.txt_cargo.BackColor = 13231868
    Me.txt_cargo.SetFocus
    'se estiver morre aqui
    Exit Sub
    End If

    'perguntamos se o usuário quer salvar
    If MsgBox("Deseja salvar o Registro?", vbYesNo + vbQuestion, "Atenção!") = vbNo Then
    'se NÃO quer, faz isto
        Form.Undo
        MsgBox "Registro Não Salvo!!!", vbCritical, "Atenção"
        Me.txt_cod.Enabled = False
        Me.txt_cargo.Enabled = False
        Me.check_status.Enabled = False
        Me.txt_cargo_cons.Enabled = True
        Me.list_consulta_cargo.Enabled = True
        Me.btn_novocargo.Enabled = True
        Me.btn_alterar.Enabled = False
        Me.btn_salvar.Enabled = False
        Me.btn_excluir.Enabled = False
        Me.btn_fechar.Enabled = True
    'se quer salvar, faz isto
    Else
    'By JPaulo ® Maximo Access
    'http://www.maximoaccess.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 = nUsuario
    'verifica se é um novo registro, se for registra com novo
            If Me.NewRecord Then
     strChekaDiferente = True
    'registra na tabela
    DoCmd.SetWarnings False
        strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
            & Me.Form.Name & "','" & Me.txt_cod & "','" & "" & "','" & _
            "CÓDIGO: " & "'&'" & Me.txt_cod & "'&'" & _
            " | CARGO: " & "'&'" & Me.txt_cargo & "'&'" & _
            " | STATUS: " & "'&'" & Me.check_status & _
            "','" & "NOVO REGISTRO" & "')"
        DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
       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 Then  '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 Tbl_DESENV_Auditoria (LogUser, 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
     
        Me.ast_obrig02.Visible = False
        Me.Rótulo42.ForeColor = RGB(166, 166, 166)
        Me.txt_cargo.BackColor = RGB(255, 255, 255)

    'depois de salvar faz o repaint ao form
    Me.Repaint
    'envia para novo registro
    DoCmd.GoToRecord acForm, "Frm_GERAL_Cadastro_Cargo", acNewRec

    'QUANDO CLICAR NO BOTÃO HABILITARÁ NOVAMENTE TODOS OS CAMPOS
        Me.txt_cod.Enabled = False
        Me.txt_cargo.Enabled = False
        Me.txt_cargo_cons.Enabled = True
        Me.list_consulta_cargo.Enabled = True

    'DESABILITARÁ O BOTÃO FECHAR
        Me.btn_novocargo.Enabled = True
        Me.btn_alterar.Enabled = False
        Me.btn_salvar.Enabled = False
        Me.btn_excluir.Enabled = False
        Me.btn_cancelar.Enabled = False
        Me.btn_fechar.Enabled = True

    MsgBox "Registro Salvo com Sucesso!!!"
        End If
    End Sub
    Anexos
    Projeto_OLD.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (701 Kb) Baixado 10 vez(es)


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Qua 20 Set 2017, 12:00

    JPaulo,

    Você é muito fera mesmo..rsrs, funcionou.

    Só que um mensagem minha ficou suprimida pela tratativa de erro. Minha tabela tem relação, quando eu alterava um registro que estava relacionado em outra tabela impondo integridade, aparecia uma mensagem falando que não poderia alterar, agora ele alterar e não limpa a tela, e quando clica apresenta um erro. Deveria haver uma mensagem informando o erro e desfazer o alteração e informar que não poderia alterar.

    Mesmo assim, muito obrigado pela ajuda.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Qua 20 Set 2017, 12:07

    Sem problema.

    Esse erro não está reproduzido no exemplo que anexou.

    Diga-me apenas;

    Em que circunstancias acontece o erro, é na mesma no botão salvar ?

    Qual o numero do erro que apresenta ?


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Qua 20 Set 2017, 12:24

    JPaulo,

    Adicionei o exemplo que você enviou, porém, eu relacionei a tabela "Cargo" com a tabela "User". Tente excluir o código 112 "NOVO DDD", ele aparece uma mensagem, até ai tranquilo, agora tente alterar este mesmo código, acho que o problema esta na última tratativa de erro.

    Grato,
    Anexos
    Projeto_OLD.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.4 Mb) Baixado 3 vez(es)
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Qua 20 Set 2017, 12:50

    Ok, pode testar e retornar por favor;

    Código:
    'AO CLICAR NO BOTÃO SALVAR
    Private Sub btn_salvar_Click()
    Dim strChekaDiferente As Boolean
    Dim strSQL As String
    Dim ctl As Control
    Dim strUser As String
    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario As String
    Dim nUsuario As String
    Dim sGrupoUsuario As String

    On Error GoTo 1

    sUsuario = Forms!Frm_GERAL_Cadastro_Cargo!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))

    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario

    'Validamos em primeiro se o campo está null
    If IsNull(Me.txt_cargo.Value) Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O Campo Cargo Deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_cargo.SetFocus
    Me.ast_obrig02.Visible = True
    Me.Rótulo42.ForeColor = vbRed
    Me.txt_cargo.BackColor = 13231868
    Me.txt_cargo.SetFocus
    'se estiver morre aqui
    Exit Sub
    End If

    'perguntamos se o usuário quer salvar
    If MsgBox("Deseja salvar o Registro?", vbYesNo + vbQuestion, "Atenção!") = vbNo Then
    'se NÃO quer, faz isto
        Form.Undo
        MsgBox "Registro Não Salvo!!!", vbCritical, "Atenção"
        Me.txt_cod.Enabled = False
        Me.txt_cargo.Enabled = False
        Me.check_status.Enabled = False
        Me.txt_cargo_cons.Enabled = True
        Me.list_consulta_cargo.Enabled = True
        Me.btn_novocargo.Enabled = True
        Me.btn_alterar.Enabled = False
        Me.btn_salvar.Enabled = False
        Me.btn_excluir.Enabled = False
        Me.btn_fechar.Enabled = True
    'se quer salvar, faz isto
    Else
    'By JPaulo ® Maximo Access
    'http://maximoaccess.maisforum.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 = nUsuario
    'verifica se é um novo registro, se for registra com novo
            If Me.NewRecord Then
     strChekaDiferente = True
    'registra na tabela
    DoCmd.SetWarnings False
        strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
            & Me.Form.Name & "','" & Me.txt_cod & "','" & "" & "','" & _
            "CÓDIGO: " & "'&'" & Me.txt_cod & "'&'" & _
            " | CARGO: " & "'&'" & Me.txt_cargo & "'&'" & _
            " | STATUS: " & "'&'" & Me.check_status & _
            "','" & "NOVO REGISTRO" & "')"
        DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
      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 Then  '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 Tbl_DESENV_Auditoria (LogUser, 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
     
        Me.ast_obrig02.Visible = False
        Me.Rótulo42.ForeColor = RGB(166, 166, 166)
        Me.txt_cargo.BackColor = RGB(255, 255, 255)

    'depois de salvar faz o repaint ao form
    Me.Repaint
    'envia para novo registro
    DoCmd.GoToRecord acForm, "Frm_GERAL_Cadastro_Cargo", acNewRec

    'QUANDO CLICAR NO BOTÃO HABILITARÁ NOVAMENTE TODOS OS CAMPOS
        Me.txt_cod.Enabled = False
        Me.txt_cargo.Enabled = False
        Me.txt_cargo_cons.Enabled = True
        Me.list_consulta_cargo.Enabled = True

    'DESABILITARÁ O BOTÃO FECHAR
        Me.btn_novocargo.Enabled = True
        Me.btn_alterar.Enabled = False
        Me.btn_salvar.Enabled = False
        Me.btn_excluir.Enabled = False
        Me.btn_cancelar.Enabled = False
        Me.btn_fechar.Enabled = True

    MsgBox "Registro Salvo com Sucesso!!!"

        End If
       
    Exit_1:
        DoCmd.Hourglass False
        DoCmd.Echo True
        Exit Sub

    1:
        DoCmd.Hourglass False
        DoCmd.Echo True
        Dim Msg$
       
        Msg = "ALTERAÇÃO NEGADA" & vbNewLine & vbNewLine
        Msg = Msg & "O Registro deste Cargo Corporativo" & " (" & Me.txt_cargo & ") " & "não pode ser ALTERADO, pois está relacionado a um Gestor e/ou Usuário." & vbNewLine
        Msg = Msg & "Dúvidas, entre em contato com o Administrador."
        MsgBox Msg, vbMsgBoxHelpButton + vbCritical, "Exclusão ou Alteração Negada!", err.HelpFile, err.HelpContext
        Me.Form.Undo
        Resume Exit_1
    End Sub


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Qua 20 Set 2017, 13:06

    JPaulo,

    Deu certo.

    Muito obrigado pela ajuda.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Qua 20 Set 2017, 20:13

    Fico feliz
    Obrigado pelo retorno o fórum agradece.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Qui 21 Set 2017, 14:55

    JPaulo,

    Para agregar mais ao projeto, criei um botão no formulário onde mostra através de outros formulários todas alterações do registro especifico.

    Porém, estou com uma dificuldade, para variar...rsrs

    Queria que ao clicar no checkbox filtrasse por status das alterações marcado.

    Grato pela atenção
    Anexos
    Projeto.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.6 Mb) Baixado 6 vez(es)
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Sex 22 Set 2017, 11:37

    Concerteza;

    [Você precisa estar registrado e conectado para ver este link.]

    Ou aqui:
    Anexos
    Projeto_OLD_III.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.6 Mb) Baixado 8 vez(es)


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Sex 22 Set 2017, 14:12

    JPaulo,

    Não funfou....

    No formulário de Cadastro de Cargo, ao selecionar uma opção e clicar em AÇÃO, ele abre o outro formulário, porém, ao selecionar uma das opções ele não filtra, quando seleciono duas ou mais ele filtra, entretanto, não e o mesmo código.

    Grato pela atenção e ajuda.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Sex 22 Set 2017, 15:59

    Em todos os testes que fiz, se selecionar uma razão que não exista no log para o item, não filtra mesmo, mas se existir filtra uma, duas ou todas.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Sex 22 Set 2017, 16:06

    JPaulo,

    No Código 111, quando clica na Ação dele, aparece a view em branco até ai tudo bem.

    Quando vc marca a opção individual também filtra certinho, mais quando vc clica em duas ou mais opções, por exemplo cliquei em "Registro Modificado" e "Exclusão Negada" ele não filtra pelo código também, ou seja, aparece todos os outros código além do 111.

    Grato pela ajuda.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Seg 25 Set 2017, 05:44

    Ola;

    Tem razão, faltava apenas uns colchetes para agrupar o "OR"

    Código:
    strSQL = strSQL & " AND " & "(" & strFiltro & ")"
    Anexos
    Projeto_OLD_IV.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.6 Mb) Baixado 12 vez(es)


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Seg 25 Set 2017, 10:31

    JPaulo,

    Perfeito!
    Muito obrigado pela ajuda.
    Desculpe o transtorno
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Seg 25 Set 2017, 11:17

    Obrigado pelo retorno o forum agradece.

    Quando puder e se quiser, contribua com forum nos links abaixo.
    Só assim conseguimos a sobrevivência deste que é o seu forum Ms Access na Net.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Seg 25 Set 2017, 17:46

    JPaulo,

    Desculpe eu novamente, que fiz de errado?
    Aumentei a quantidade de campos e agora não aparece na tabela de modificações, somente o ID do registro, os demais (MOTIVO, DATA ...) ficaram em branco.

    Código:
    'TRILHA DE AUDITORIA
    Dim apaga As Integer
    Dim alerta As String
    Dim Busca As String
    Dim strUser As String
    Dim strSQL As String


    'TRATATIVA DE ERRO 3200
    Dim Mensg  As String
    On Error GoTo trataErro
    Beep

        strUser = nUsuario
        Busca = Me.txt_solicitação 'INFORMA O CurrentRecord
        apaga = MsgBox("Deseja excluir a Solicitação ao Desenvolvedor?" & _
        "" & vbNewLine & _
        vbCr & "ID " & Me.txt_solicitação & "", vbYesNo + vbQuestion, "Atenção!") 'CAMPO DA PERGUNTA
          Select Case apaga
                Case vbYes
                Dim strID$
                strID = Me.txt_solicitação
                DoCmd.RunCommand acCmdDeleteRecord
                strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
                & Me.Form.Name & "','" & Busca & "','" & _
                "Nº SOLICITAÇÃO: " & "'&'" & strID & "'&'" & _
                " | MOTIVO: " & "'&'" & Me.txt_motivo & "'&'" & _
                " | DATA: " & "'&'" & Me.txt_dt_solicitação & "'&'" & _
                " | SOLICITANTE: " & "'&'" & Me.txt_solicitante & "'&'" & _
                " | DETALHAMENTO: " & "'&'" & Me.txt_detalhamento & "'&'" & _
                " | STATUS: " & "'&'" & Me.txt_status & "'&'" & _
                " | DATA APLICADA: " & "'&'" & Me.txt_dt_aplicada & "'&'" & _
                " | VERSÃO APLICADA: " & "'&'" & Me.txt_versão_aplicada & "'&'" & _
                " | JUSTIFICATIVA: " & "'&'" & Me.txt_justificativa & _
                "','" & "" & "','" & "REGISTRO EXCLUÍDO" & "')"
                DoCmd.RunSQL strSQL

    Grato pela atenção.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Ter 26 Set 2017, 05:27

    Ola;

    Pelo que vejo, você está a deletar antes de inserir na auditoria;

    Código:
                DoCmd.RunCommand acCmdDeleteRecord
                strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _

    Tem de ser ao contrario, primeiro insere só depois deleta.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Ter 26 Set 2017, 08:49

    JPaulo,

    Funfou!

    Muito Obrigado!
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Ter 26 Set 2017, 09:36

    Fico feliz.

    Obrigado pelo retorno o forum agradece.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Ter 26 Set 2017, 10:32

    JPaulo,

    Parece brincadeira...rsrs
    Agora e o botão salvar do NOVO REGISTRO e REGISTRO ALTERADO, quando clico no salvar sem nenhum campo preenchido ele faz a verificação dos campos vazios mais não para, ele salva o registro em branco.

    Código:
    'AO CLICAR NO BOTÃO SALVAR
    Private Sub btn_salvar_Click()
    Dim strChekaDiferente As Boolean
    Dim strSQL As String
    Dim ctl As Control
    Dim strUser As String

    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario As String
    Dim nUsuario As String
    Dim sGrupoUsuario As String
    sUsuario = Forms!Frm_DESENV_Solicitação_Desenvolvedor!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario

    'Validamos em primeiro se o campo está null
    'VERIFICARÁ SE OS CAMPOS ESTÃO VÁZIOS
    If IsNull(txt_motivo) Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O Motivo da solicitação deve ser selecionado.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_motivo.SetFocus
    Me.ast_obrig02.Visible = True
    Me.Rótulo42.ForeColor = vbRed
    Me.txt_motivo.BackColor = 13231868
    Me.txt_motivo.SetFocus
    Me.txt_motivo.Dropdown

    If IsNull(txt_detalhamento) Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O detalhamento da solicitação deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_detalhamento.SetFocus
    Me.ast_obrig07.Visible = True
    Me.Rótulo491.ForeColor = vbRed
    Me.txt_detalhamento.BackColor = 13231868
    Me.txt_detalhamento.SetFocus
         
    If IsNull(txt_status) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O Status da solicitação deve ser selecionado.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_status.SetFocus
    Me.ast_obrig06.Visible = True
    Me.Rótulo8.ForeColor = vbRed
    Me.txt_status.BackColor = 13231868
    Me.txt_status.SetFocus
    If IsNull(txt_dt_aplicada) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - A Data de aplicação deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_dt_aplicada.SetFocus
    Me.ast_obrig04.Visible = True
    Me.Rótulo76.ForeColor = vbRed
    Me.txt_dt_aplicada.BackColor = 13231868
    Me.txt_dt_aplicada.SetFocus

    If IsNull(txt_versão_aplicada) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - A versão deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_versão_aplicada.SetFocus
    Me.ast_obrig08.Visible = True
    Me.Rótulo112.ForeColor = vbRed
    Me.txt_versão_aplicada.BackColor = 13231868
    Me.txt_versão_aplicada.SetFocus

    If IsNull(txt_justificativa) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - A justificativa deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_justificativa.SetFocus
    Me.ast_obrig09.Visible = True
    Me.Rótulo129.ForeColor = vbRed
    Me.txt_justificativa.BackColor = 13231868
    Me.txt_justificativa.SetFocus
    'se estiver morre aqui
    Exit Sub
    End If
    End If
    End If
    End If
    End If
    End If

    'perguntamos se o usuário quer salvar
    If MsgBox("Deseja salvar o Registro?", vbYesNo + vbQuestion, "Atenção!") = vbNo Then
    'se NÃO quer, faz isto
        Form.Undo
        MsgBox "Registro Não Salvo!!!", vbCritical, "Atenção"
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Current
       
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Load
       
    Else
    'By JPaulo ®️ Maximo Access
    '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 = nUsuario
    'verifica se é um novo registro, se for registra com novo
            If Me.NewRecord Then
     strChekaDiferente = True
    'registra na tabela

    DoCmd.SetWarnings False
        strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
            & Me.Form.Name & "','" & Me.txt_solicitação & "','" & "" & "','" & _
            "Nº SOLICITAÇÃO: " & "'&'" & txt_solicitação & "'&'" & _
            " | MOTIVO: " & "'&'" & Me.txt_motivo & "'&'" & _
            " | DATA: " & "'&'" & Me.txt_dt_solicitação & "'&'" & _
            " | SOLICITANTE: " & "'&'" & Me.txt_solicitante & "'&'" & _
            " | DETALHAMENTO: " & "'&'" & Me.txt_detalhamento & "'&'" & _
            " | STATUS: " & "'&'" & Me.txt_status & "'&'" & _
            " | DATA APLICADA: " & "'&'" & Me.txt_dt_aplicada & "'&'" & _
            " | VERSÃO APLICADA: " & "'&'" & Me.txt_versão_aplicada & "'&'" & _
            " | JUSTIFICATIVA: " & "'&'" & Me.txt_justificativa & _
            "','" & "" & "','" & "NOVO REGISTRO" & "')"
        DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
      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 Then  '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
             
    'TRATATIVA DE ERRO 3200
    Dim Mensg  As String
    On Error GoTo trataErro
    Beep

    strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & _
            Me.Form.Name & "','" & Me.txt_solicitação & "','" & ctl.Name & "'&'" & ": " & "'&'" & ctl.OldValue & "','" & ctl.Name & "'&'" & ": " & "'&'" & _
            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
     
        Me.ast_obrig02.Visible = False
        Me.Rótulo42.ForeColor = RGB(166, 166, 166)
        Me.txt_motivo.BackColor = RGB(255, 255, 255)
       
        Me.ast_obrig07.Visible = False
        Me.Rótulo491.ForeColor = RGB(166, 166, 166)
        Me.txt_detalhamento.BackColor = RGB(255, 255, 255)
       
        Me.ast_obrig06.Visible = False
        Me.Rótulo8.ForeColor = RGB(166, 166, 166)
        Me.txt_status.BackColor = RGB(255, 255, 255)
       
       
        Me.ast_obrig04.Visible = False
        Me.Rótulo76.ForeColor = RGB(166, 166, 166)
        Me.txt_dt_aplicada.BackColor = RGB(255, 255, 255)
       
       
        Me.ast_obrig08.Visible = False
        Me.Rótulo112.ForeColor = RGB(166, 166, 166)
        Me.txt_versão_aplicada.BackColor = RGB(255, 255, 255)
       
        Me.ast_obrig09.Visible = False
        Me.Rótulo129.ForeColor = RGB(166, 166, 166)
        Me.txt_justificativa.BackColor = RGB(255, 255, 255)
       
    'depois de salvar faz o repaint ao form
    Me.Repaint
    'envia para novo registro
    DoCmd.GoToRecord acForm, "Frm_DESENV_Solicitação_Desenvolvedor", acNewRec
                           
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Current
       
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Load

    MsgBox "Registro Salvo com Sucesso!!!"
        End If
       
    'TRATATIVA DE ERRO 3200
    sair:
      Exit Sub
    trataErro:
        MsgBox "ALTERAÇÃO NEGADA" & vbNewLine & _
        "" & vbNewLine & _
        "O Registro desta Solicitação ao Desenvolvedor não pode ser alterado, pois está relacionado a uma Atualização." & vbNewLine & _
        "" & vbNewLine & _
        "Dúvidas, entre em contato com o Administrador.", _
          vbExclamation, "Alteração Negada!"
          Form.Undo
        Call Form_Load
    Resume sair

    'ATUALIZAR CONTADOR DE CADASTRO
    Call Form_Current
    End Sub

    Grato pela ajuda e atenção.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Ter 26 Set 2017, 11:54

    Tem de separar os IF`s e dar o Exit Sub, End If em cada instrução;

    Código:
    'AO CLICAR NO BOTÃO SALVAR
    Private Sub btn_salvar_Click()
    Dim strChekaDiferente As Boolean
    Dim strSQL As String
    Dim ctl As Control
    Dim strUser As String

    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario As String
    Dim nUsuario As String
    Dim sGrupoUsuario As String
    sUsuario = Forms!Frm_DESENV_Solicitação_Desenvolvedor!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario

    'Validamos em primeiro se o campo está null
    'VERIFICARÁ SE OS CAMPOS ESTÃO VÁZIOS
    If IsNull(txt_motivo) Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O Motivo da solicitação deve ser selecionado.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_motivo.SetFocus
    Me.ast_obrig02.Visible = True
    Me.Rótulo42.ForeColor = vbRed
    Me.txt_motivo.BackColor = 13231868
    Me.txt_motivo.SetFocus
    Me.txt_motivo.Dropdown
    Exit Sub
    End If

    If IsNull(txt_detalhamento) Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O detalhamento da solicitação deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_detalhamento.SetFocus
    Me.ast_obrig07.Visible = True
    Me.Rótulo491.ForeColor = vbRed
    Me.txt_detalhamento.BackColor = 13231868
    Me.txt_detalhamento.SetFocus
    Exit Sub
    End If
         
    If IsNull(txt_status) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O Status da solicitação deve ser selecionado.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_status.SetFocus
    Me.ast_obrig06.Visible = True
    Me.Rótulo8.ForeColor = vbRed
    Me.txt_status.BackColor = 13231868
    Me.txt_status.SetFocus
    Exit Sub
    End If

    If IsNull(txt_dt_aplicada) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - A Data de aplicação deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_dt_aplicada.SetFocus
    Me.ast_obrig04.Visible = True
    Me.Rótulo76.ForeColor = vbRed
    Me.txt_dt_aplicada.BackColor = 13231868
    Me.txt_dt_aplicada.SetFocus
    Exit Sub
    End If

    If IsNull(txt_versão_aplicada) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - A versão deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_versão_aplicada.SetFocus
    Me.ast_obrig08.Visible = True
    Me.Rótulo112.ForeColor = vbRed
    Me.txt_versão_aplicada.BackColor = 13231868
    Me.txt_versão_aplicada.SetFocus
    Exit Sub
    End If

    If IsNull(txt_justificativa) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - A justificativa deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_justificativa.SetFocus
    Me.ast_obrig09.Visible = True
    Me.Rótulo129.ForeColor = vbRed
    Me.txt_justificativa.BackColor = 13231868
    Me.txt_justificativa.SetFocus
    Exit Sub
    End If

    'perguntamos se o usuário quer salvar
    If MsgBox("Deseja salvar o Registro?", vbYesNo + vbQuestion, "Atenção!") = vbNo Then
    'se NÃO quer, faz isto
        Form.Undo
        MsgBox "Registro Não Salvo!!!", vbCritical, "Atenção"
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Current
       
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Load
       
    Else
    'By JPaulo ®️? Maximo Access
    '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 = nUsuario
    'verifica se é um novo registro, se for registra com novo
            If Me.NewRecord Then
     strChekaDiferente = True
    'registra na tabela

    DoCmd.SetWarnings False
        strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
            & Me.Form.Name & "','" & Me.txt_solicitação & "','" & "" & "','" & _
            "Nº SOLICITAÇÃO: " & "'&'" & txt_solicitação & "'&'" & _
            " | MOTIVO: " & "'&'" & Me.txt_motivo & "'&'" & _
            " | DATA: " & "'&'" & Me.txt_dt_solicitação & "'&'" & _
            " | SOLICITANTE: " & "'&'" & Me.txt_solicitante & "'&'" & _
            " | DETALHAMENTO: " & "'&'" & Me.txt_detalhamento & "'&'" & _
            " | STATUS: " & "'&'" & Me.txt_status & "'&'" & _
            " | DATA APLICADA: " & "'&'" & Me.txt_dt_aplicada & "'&'" & _
            " | VERSÃO APLICADA: " & "'&'" & Me.txt_versão_aplicada & "'&'" & _
            " | JUSTIFICATIVA: " & "'&'" & Me.txt_justificativa & _
            "','" & "" & "','" & "NOVO REGISTRO" & "')"
        DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
      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 Then  '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
             
    'TRATATIVA DE ERRO 3200
    Dim Mensg  As String
    On Error GoTo trataErro
    Beep

    strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & _
            Me.Form.Name & "','" & Me.txt_solicitação & "','" & ctl.Name & "'&'" & ": " & "'&'" & ctl.OldValue & "','" & ctl.Name & "'&'" & ": " & "'&'" & _
            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
     
        Me.ast_obrig02.Visible = False
        Me.Rótulo42.ForeColor = RGB(166, 166, 166)
        Me.txt_motivo.BackColor = RGB(255, 255, 255)
       
        Me.ast_obrig07.Visible = False
        Me.Rótulo491.ForeColor = RGB(166, 166, 166)
        Me.txt_detalhamento.BackColor = RGB(255, 255, 255)
       
        Me.ast_obrig06.Visible = False
        Me.Rótulo8.ForeColor = RGB(166, 166, 166)
        Me.txt_status.BackColor = RGB(255, 255, 255)
       
       
        Me.ast_obrig04.Visible = False
        Me.Rótulo76.ForeColor = RGB(166, 166, 166)
        Me.txt_dt_aplicada.BackColor = RGB(255, 255, 255)
       
       
        Me.ast_obrig08.Visible = False
        Me.Rótulo112.ForeColor = RGB(166, 166, 166)
        Me.txt_versão_aplicada.BackColor = RGB(255, 255, 255)
       
        Me.ast_obrig09.Visible = False
        Me.Rótulo129.ForeColor = RGB(166, 166, 166)
        Me.txt_justificativa.BackColor = RGB(255, 255, 255)
       
    'depois de salvar faz o repaint ao form
    Me.Repaint
    'envia para novo registro
    DoCmd.GoToRecord acForm, "Frm_DESENV_Solicitação_Desenvolvedor", acNewRec
                           
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Current
       
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Load

    MsgBox "Registro Salvo com Sucesso!!!"
        End If
       
    'TRATATIVA DE ERRO 3200
    sair:
      Exit Sub
    trataErro:
        MsgBox "ALTERAÇÃO NEGADA" & vbNewLine & _
        "" & vbNewLine & _
        "O Registro desta Solicitação ao Desenvolvedor não pode ser alterado, pois está relacionado a uma Atualização." & vbNewLine & _
        "" & vbNewLine & _
        "Dúvidas, entre em contato com o Administrador.", _
          vbExclamation, "Alteração Negada!"
          Form.Undo
        Call Form_Load
    Resume sair

    'ATUALIZAR CONTADOR DE CADASTRO
    Call Form_Current
    End Sub


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Maurício Bruno
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 224
    Registrado : 25/05/2015

    Re: [Resolvido]Log de Alterações.

    Mensagem  Maurício Bruno em Ter 26 Set 2017, 12:44

    JPaulo,

    02 problemas: 1º Salva e não limpa o formulário, já mudei a opção de limpar de lugar e não resolve.
                         2º Se eu altero e esta relacionado a minha tabela e da uma msg falando que não posso alterar, porém, não grava na Tbl_DESENV_Auditoria (código antes do Resume sair no final)

    Código:
    'AO CLICAR NO BOTÃO SALVAR
    Private Sub btn_salvar_Click()
    Dim strChekaDiferente As Boolean
    Dim strSQL As String
    Dim ctl As Control
    Dim strUser As String

    'ATUALIZAR O GRUPO DE ACESSO E O USUÁRIO
    Dim sUsuario As String
    Dim nUsuario As String
    Dim sGrupoUsuario As String
    sUsuario = Forms!Frm_DESENV_Solicitação_Desenvolvedor!txtUser
    nUsuario = Nz(DLookup("[Usuário]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    sGrupoUsuario = Nz(DLookup("[Grupo de Acesso]", "Tbl_GERAL_Cadastro_User", "[User Rede]= '" & sUsuario & "'"))
    Me.txt_Grupo_Usuario = sGrupoUsuario
    Me.txt_Usuario = nUsuario

    'Validamos em primeiro se o campo está null
    'VERIFICARÁ SE OS CAMPOS ESTÃO VÁZIOS
    If IsNull(txt_motivo) Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O Motivo da solicitação deve ser selecionado.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_motivo.SetFocus
    Me.ast_obrig02.Visible = True
    Me.Rótulo42.ForeColor = vbRed
    Me.txt_motivo.BackColor = 13231868
    Me.txt_motivo.SetFocus
    Me.txt_motivo.Dropdown
    Exit Sub
    End If

    If IsNull(txt_detalhamento) Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O detalhamento da solicitação deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_detalhamento.SetFocus
    Me.ast_obrig07.Visible = True
    Me.Rótulo491.ForeColor = vbRed
    Me.txt_detalhamento.BackColor = 13231868
    Me.txt_detalhamento.SetFocus
    Exit Sub
    End If
          
    If IsNull(txt_status) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - O Status da solicitação deve ser selecionado.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_status.SetFocus
    Me.ast_obrig06.Visible = True
    Me.Rótulo8.ForeColor = vbRed
    Me.txt_status.BackColor = 13231868
    Me.txt_status.SetFocus
    Exit Sub
    End If

    If IsNull(txt_dt_aplicada) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - A Data de aplicação deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_dt_aplicada.SetFocus
    Me.ast_obrig04.Visible = True
    Me.Rótulo76.ForeColor = vbRed
    Me.txt_dt_aplicada.BackColor = 13231868
    Me.txt_dt_aplicada.SetFocus
    Exit Sub
    End If

    If IsNull(txt_versão_aplicada) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - A versão deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_versão_aplicada.SetFocus
    Me.ast_obrig08.Visible = True
    Me.Rótulo112.ForeColor = vbRed
    Me.txt_versão_aplicada.BackColor = 13231868
    Me.txt_versão_aplicada.SetFocus
    Exit Sub
    End If

    If IsNull(txt_justificativa) And txt_Grupo_Usuario = "DESENVOLVEDOR" Then
        Beep
    MsgBox "PREENCHIMENTO OBRIGATÓRIO - A justificativa deve ser Preenchido.", vbOKOnly + vbExclamation, "AVISO"
    Me.txt_justificativa.SetFocus
    Me.ast_obrig09.Visible = True
    Me.Rótulo129.ForeColor = vbRed
    Me.txt_justificativa.BackColor = 13231868
    Me.txt_justificativa.SetFocus
    Exit Sub
    End If

    'perguntamos se o usuário quer salvar
    If MsgBox("Deseja salvar o Registro?", vbYesNo + vbQuestion, "Atenção!") = vbNo Then
    'se NÃO quer, faz isto
        Form.Undo
        MsgBox "Registro Não Salvo!!!", vbCritical, "Atenção"
        
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Current
        
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Load
        
    Else
    'By JPaulo ®️?? Maximo Access
    '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 = nUsuario
    'verifica se é um novo registro, se for registra com novo
            If Me.NewRecord Then
     strChekaDiferente = True
    'registra na tabela

    DoCmd.SetWarnings False
        strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" _
            & Me.Form.Name & "','" & Me.txt_solicitação & "','" & "" & "','" & _
            "Nº SOLICITAÇÃO: " & "'&'" & txt_solicitação & "'&'" & _
            " | MOTIVO: " & "'&'" & Me.txt_motivo & "'&'" & _
            " | DATA: " & "'&'" & Me.txt_dt_solicitação & "'&'" & _
            " | SOLICITANTE: " & "'&'" & Me.txt_solicitante & "'&'" & _
            " | DETALHAMENTO: " & "'&'" & Me.txt_detalhamento & "'&'" & _
            " | STATUS: " & "'&'" & Me.txt_status & "'&'" & _
            " | DATA APLICADA: " & "'&'" & Me.txt_dt_aplicada & "'&'" & _
            " | VERSÃO APLICADA: " & "'&'" & Me.txt_versão_aplicada & "'&'" & _
            " | JUSTIFICATIVA: " & "'&'" & Me.txt_justificativa & _
            "','" & "" & "','" & "NOVO REGISTRO" & "')"
        DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
       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 Then  '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
              
    'TRATATIVA DE ERRO 3200
    Dim Mensg  As String
    On Error GoTo trataErro
    Beep

    strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & _
            Me.Form.Name & "','" & Me.txt_solicitação & "','" & ctl.Name & "'&'" & ": " & "'&'" & ctl.OldValue & "','" & ctl.Name & "'&'" & ": " & "'&'" & _
            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
     
        Me.ast_obrig02.Visible = False
        Me.Rótulo42.ForeColor = RGB(166, 166, 166)
        Me.txt_motivo.BackColor = RGB(255, 255, 255)
        
        Me.ast_obrig07.Visible = False
        Me.Rótulo491.ForeColor = RGB(166, 166, 166)
        Me.txt_detalhamento.BackColor = RGB(255, 255, 255)
        
        Me.ast_obrig06.Visible = False
        Me.Rótulo8.ForeColor = RGB(166, 166, 166)
        Me.txt_status.BackColor = RGB(255, 255, 255)
        
        
        Me.ast_obrig04.Visible = False
        Me.Rótulo76.ForeColor = RGB(166, 166, 166)
        Me.txt_dt_aplicada.BackColor = RGB(255, 255, 255)
        
        
        Me.ast_obrig08.Visible = False
        Me.Rótulo112.ForeColor = RGB(166, 166, 166)
        Me.txt_versão_aplicada.BackColor = RGB(255, 255, 255)
        
        Me.ast_obrig09.Visible = False
        Me.Rótulo129.ForeColor = RGB(166, 166, 166)
        Me.txt_justificativa.BackColor = RGB(255, 255, 255)
        
    'depois de salvar faz o repaint ao form
    Me.Repaint
    'envia para novo registro
    DoCmd.GoToRecord acForm, "Frm_DESENV_Solicitação_Desenvolvedor", acNewRec
        
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Current
        
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Load

    MsgBox "Registro Salvo com Sucesso!!!"
        End If
        
    'TRATATIVA DE ERRO 3200
    sair:
       Exit Sub
    trataErro:
        MsgBox "ALTERAÇÃO NEGADA" & vbNewLine & _
        "" & vbNewLine & _
        "O Registro desta Solicitação ao Desenvolvedor não pode ser alterado, pois está relacionado a uma Atualização." & vbNewLine & _
        "" & vbNewLine & _
        "Dúvidas, entre em contato com o Administrador.", _
          vbExclamation, "Alteração Negada!"
          Form.Undo
          
        strSQL = "INSERT INTO Tbl_DESENV_Auditoria (LogUser, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & _
            Me.Form.Name & "','" & Me.txt_solicitação & "','" & ctl.Name & "'&'" & ": " & "'&'" & ctl.OldValue & "','" & ctl.Name & "'&'" & ": " & "'&'" & _
            ctl.Value & "','" & "ALTERAÇÃO NEGADA" & "')"
        DoCmd.RunSQL strSQL

    Resume sair

        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Current
        
        'ATUALIZAR CONTADOR DE CADASTRO
        Call Form_Load

    End Sub

    Obrigado pela ajuda.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9703
    Registrado : 04/11/2009

    Re: [Resolvido]Log de Alterações.

    Mensagem  JPaulo em Ter 26 Set 2017, 13:14

    Você acrescentou varios outros campos, tem de anexar novo exemplo para eu poder analisar.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

      Data/hora atual: Qua 22 Nov 2017, 18:00