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


2 participantes

    [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações"

    avatar
    Nocte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 10/01/2012

    [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações" Empty Re: [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações"

    Mensagem  Nocte 12/1/2012, 12:21

    Bom dia amigos!

    Adorei este docigo, porem sou iniciante em Access!

    Queria saber, existe uma forma de inserir login e senha neste caso?
    Se sim, que modificações eu teria que fazer para ter os controles de regitros com base no nome de usuário?

    Outra coisa que precebi é quando voce altera muitos itens de uma vêz, o arquivo não mostra corretamente no log todas as atualizações, exemplo:

    Atualizei o nome do individuo e a data, José e 23 para Antonio e 24 por exemplo.
    No log aparece, NomeCampo: José, ValorAnterior: 23 ValorAtualizado: 24.

    Obrigado

    A sala de exemplos não se destina a tirar dúvidas.
    Abra um novo tópico na sala correta.


    Última edição por norbs em 12/1/2012, 13:40, editado 3 vez(es) (Motivo da edição : Mover para a sala correta)
    avatar
    Convidad
    Convidado


    [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações" Empty Dúvida sobre o exemplo "Registra um histórico de alterações"

    Mensagem  Convidad 12/1/2012, 17:10

    Olá amigo

    Login e senha usa-se em todo o aplicativo, não somente para uma determinada parte dele.
    Caso tenha interesse em aprender sobre isso, sugiro que visite o site do nosso colega Avelino Sampaio
    onde ele da uma excelente aula sobre controle de usuários.Basta você clicar
    AQUI.

    Quanto ao exemplo sitado, funciona direitinho, inclusive coloquei mais dois campos para o código e nome, assim eu posso verificar em que formulário e em que registro houve a alteração/adição.
    Lembrando, cada linha da tblLog refere-se a cada campo modificado, ou seja, se você alterar 10 campos, a tabela terá 10 linhas para esse formulário que foi alterado e os devidos campos.

    Como modifiquei aquele código para meu uso, vou disponibiliza-lo aqui, talvez te ajude:

    Copie e cole o código abaixo em um novo módulo

    Código:

    Public Function GravaLogDel(strRegistro As String, strNome As String)

    Dim strUser As String
    Dim strSQL As String

    strUser = Trim(login.Usuario)


     
     strSQL = "INSERT INTO tblLog (Usuário,LogData,NomeForm,Código,Nome,Status) " & _
            "Values('" & strUser & "', Now(),'" & Screen.ActiveForm.Name & "','" & strRegistro & "','" & strNome & "','" & "Registro Excluido" & "')"
     DoCmd.RunSQL strSQL
       
    End Function

    Public Function GravaAlteraçao(strNome As String, strCodigo As String)
          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 = Trim(login.Usuario)
    DoCmd.SetWarnings False
            If Screen.ActiveForm.NewRecord Then 'verifica se é um novo registro, se for registra com novo
              strChekaDiferente = True
           
              strSQL = "INSERT INTO tblLog (Usuário,LogData,NomeForm,Código,Nome,Status) " & _
                                "Values('" & strUser & "', Now(),'" & Screen.ActiveForm.Name & "','" & strCodigo & "','" & strNome & "','" & "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 Screen.ActiveForm.Controls
              ' Percorre todos os tipos de controles
              Select Case ctl.ControlType
                      Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox
                          Debug.Print ctl.Name
                          Debug.Print ctl.OldValue
                          Debug.Print ctl.Value
                          If Not IsNull((ctl.Value <> ctl.OldValue)) Or (ctl.Value <> "" And ctl.Value <> "") Then
                             
                              If ctl.Value <> ctl.OldValue Then
                             
                                'se algum valor foi alterado ou deletado, coloca a variável de chekar alterações como True
                                strChekaDiferente = True
                                'e registra na tabela do Log
                                DoCmd.SetWarnings False
                                strSQL = "INSERT INTO tblLog (Usuário,LogData,NomeForm,Código,Nome,NomeCampo,ValorAntigo,ValorAtual,Status) " & _
                                                "Values('" & strUser & "', Now(),'" & Screen.ActiveForm.Name & "','" & strCodigo & "','" & strNome & "','" & 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 If
              End Select
        Next ctl
    End If
     
    'Salva tudo o que foi feito
     DoCmd.RunCommand acCmdSaveRecord
     DoCmd.SetWarnings True
    End Function

    Campos da minha tabela:

    Usuário
    LogData
    NomeForm
    Código
    Nome ---> pode ser nome do cliente - produto etc
    NomeCampo
    ValorAntigo
    ValorAtual
    Status

    Espero ter ajudado ^^


    Abraços !!
    avatar
    Nocte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 10/01/2012

    [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações" Empty Re: [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações"

    Mensagem  Nocte 13/1/2012, 11:28

    perfeitamente, vi agora que o erro foi meu ao visualizar as informações.

    Obrigado pela resposta e pelo código!
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações" Empty Re: [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações"

    Mensagem  JPaulo 13/1/2012, 12:00

    Aproveitando, não esqueça do Resolvido (por agora eu coloco.)


    .................................................................................
    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]Dúvida sobre o exemplo "Registra um histórico de alterações" Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações" Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações" Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações" Empty Re: [Resolvido]Dúvida sobre o exemplo "Registra um histórico de alterações"

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 21:59