MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


3 participantes

    [Resolvido]Log de Alterações.

    avatar
    Rhostert
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Log de Alterações. Empty [Resolvido]Log de Alterações.

    Mensagem  Rhostert 8/8/2017, 19: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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 9/8/2017, 09:42



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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Rhostert
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Rhostert 9/8/2017, 12:06

    Muito Obrigado.
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Log de Alterações. Empty Log de Auditoria

    Mensagem  Maurício Bruno 18/9/2017, 15: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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 18/9/2017, 15: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 18/9/2017, 16: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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 18/9/2017, 16: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 18/9/2017, 18: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.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 = 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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 19/9/2017, 09: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.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 = 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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 19/9/2017, 16:40

    JPaulo,

    Não salvou em nenhuma tabela.

    Grato pelo retorno.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 19/9/2017, 16: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 19/9/2017, 17:32

    JPaulo,

    Desculpe, segue o BD.

    Grato pela ajuda e atenção.
    Anexos
    [Resolvido]Log de Alterações. AttachmentProjeto.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (684 Kb) Baixado 18 vez(es)
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 20/9/2017, 09: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


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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 20/9/2017, 16: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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 20/9/2017, 16: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 20/9/2017, 16: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
    [Resolvido]Log de Alterações. AttachmentProjeto_OLD.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.4 Mb) Baixado 7 vez(es)
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 20/9/2017, 16: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.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 = 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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 20/9/2017, 17:06

    JPaulo,

    Deu certo.

    Muito obrigado pela ajuda.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 21/9/2017, 00: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 21/9/2017, 18: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
    [Resolvido]Log de Alterações. AttachmentProjeto.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.6 Mb) Baixado 11 vez(es)
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 22/9/2017, 15:37

    Concerteza;

    Download

    Ou aqui:


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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 22/9/2017, 18: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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 22/9/2017, 19: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 22/9/2017, 20: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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 25/9/2017, 09:44

    Ola;

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

    Código:
    strSQL = strSQL & " AND " & "(" & strFiltro & ")"


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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 25/9/2017, 14:31

    JPaulo,

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


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 25/9/2017, 15: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 25/9/2017, 21: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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 26/9/2017, 09: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 26/9/2017, 12:49

    JPaulo,

    Funfou!

    Muito Obrigado!
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 26/9/2017, 13: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 26/9/2017, 14: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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 26/9/2017, 15: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...
    avatar
    Maurício Bruno
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Maurício Bruno 26/9/2017, 16: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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JPaulo 26/9/2017, 17: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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Log de Alterações. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Log de Alterações. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Log de Alterações. Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/4/2024, 08:13