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

    Log para registro de campo de Autonumeração

    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    Log para registro de campo de Autonumeração Empty Log para registro de campo de Autonumeração

    Mensagem  vileman 14/5/2014, 19:34

    Boa tarde a todos,

    * Uso Access 2003

    Através do tópico: Dúvida sobre o exemplo "Registra um histórico de alterações" postado pelo usuário Nocte em que o usuário Convidad colocou a seguinte resposta (Onde ele informa que fez uma adaptação do código do nosso amigo JPaulo):
    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/
    '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

    Fiz da seguinte forma:
    1) Copiei e colei o módulo acima, conforme orientação dada. Gravei este módulo com o nome de ModLog.
    2) Criei a tabela tblLog com os campos acima, acrescentando apenas o campo CodLog como Autonumeração.
    3) No formulário F156_Conselheiros criei um botão com o seguinte comando: Call GravaAlteraçao no procedimento "ao clicar" e deu a seguinte mensagem: "Erro de compilação. O argumento não é opcional"

    A intenção é gravar além de outros campos, o código autonumeração da tabela que dá origem ao formulário citado, então como resolver?
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    Log para registro de campo de Autonumeração Empty Log para registro de campo de Autonumeração

    Mensagem  vileman 18/5/2014, 22:24

    Up !
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3871
    Registrado : 21/04/2011

    Log para registro de campo de Autonumeração Empty Re: Log para registro de campo de Autonumeração

    Mensagem  Marcelo David 19/5/2014, 01:45

    Poderia postar seu aplicativo para tentar adaptar?


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    Log para registro de campo de Autonumeração Marcel11
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    Log para registro de campo de Autonumeração Empty Log para registro de campo de Autonumeração

    Mensagem  vileman 19/5/2014, 04:18

    Segue arquivo em anexo.


    Última edição por vileman em 19/5/2014, 04:21, editado 2 vez(es) (Motivo da edição : Arquivo que não anexou 2)
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3871
    Registrado : 21/04/2011

    Log para registro de campo de Autonumeração Empty Re: Log para registro de campo de Autonumeração

    Mensagem  Marcelo David 19/5/2014, 04:20

    Não veio...


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    Log para registro de campo de Autonumeração Marcel11
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    Log para registro de campo de Autonumeração Empty Log para registro de campo de Autonumeração

    Mensagem  vileman 19/5/2014, 04:25

    Mandei novamente, está na mensagem nº 4
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3871
    Registrado : 21/04/2011

    Log para registro de campo de Autonumeração Empty Re: Log para registro de campo de Autonumeração

    Mensagem  Marcelo David 19/5/2014, 13:47

    Ok, o que é codChave e NomeChave?
    Você quer gravar o nome do usuário logado no Windows?

    No aguardo.


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    Log para registro de campo de Autonumeração Marcel11
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    Log para registro de campo de Autonumeração Empty Log para registro de campo de Autonumeração

    Mensagem  vileman 19/5/2014, 20:12

    'CodChave' é para gravar o Nº da Autonumeração do registro da tabela T156_Conselheiros que corresponde ao campo CodConselheiro, que tenha sido incluido, alterado ou excluído.

    'NomeChave' é o nome do usuário do Banco de dados, pois uso ainda o system.mdw com vários usuários em Rede, embora já tenha o campo 'usuario' que grava o nome do usuário do Windows, se for o caso basta deixar apenas um campo para capturar o usuário, seja do Windows ou do Access.

    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3871
    Registrado : 21/04/2011

    Log para registro de campo de Autonumeração Empty Re: Log para registro de campo de Autonumeração

    Mensagem  Marcelo David 20/5/2014, 01:49

    Manhã tento algo.


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    Log para registro de campo de Autonumeração Marcel11
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    Log para registro de campo de Autonumeração Empty Log para registro de campo de Autonumeração

    Mensagem  vileman 27/5/2014, 00:15

    Marcelo David, boa noite

    Não é cobrança, apenas para relembrá-lo, pois nem sempre vamos lembrar de tudo, ou estamos atarefados com outras coisas mais relevantes, ok ?

    Conteúdo patrocinado


    Log para registro de campo de Autonumeração Empty Re: Log para registro de campo de Autonumeração

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 02:56