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]Não grava quando o valor anterior é em branco

    avatar
    tchelo1
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 08/05/2023

    [Resolvido]Não grava quando o valor anterior é em branco Empty [Resolvido]Não grava quando o valor anterior é em branco

    Mensagem  tchelo1 22/5/2023, 13:04

    Tenho o código abaixo que:
    1 - não está gravando na tabela tbllog quando oldvalue = "" e altero para algum outro valor
    2 - está gravando na tbllog quando o oldvalue="" e o value = "", ou seja, não houve alteração

    Desde já agradeço a ajuda.


    Private Sub comando297_Click()
    Dim strChekaDiferente As Boolean
    Dim strSQL As String
    Dim ctl As Control
    Dim strUser As String

    strChekaDiferente = False
    strUser = GetUserName_TSB
    If Me.NewRecord Then 'verifica se é um novo registro, se for registra com novo
    strChekaDiferente = True

    For Each ctl In Me.Controls
    ' Percorre todos os tipos de controles
    Select Case ctl.ControlType
    Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox
    If ctl.Locked = False Then
    DoCmd.SetWarnings False

    strSQL = "INSERT INTO tblLog (Utilizador, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & Me.Form.Name & "','" & ctl.Name & "','" & "" & "','" & ctl & "','" & "Novo Registro" & "')"
    DoCmd.RunSQL strSQL

    strChekaDiferente = False
    End If
    End Select
    Next ctl

    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.Locked = False Then
    If ctl.Value <> ctl.OldValue Or (IsNull(ctl.Value) Or ctl.Value = "") Then
    ' se algum valor foi alterado ou deletado, coloca a variável de chekar alterações como True
    strChekaDiferente = True
    'e registra na tabela do Log
    DoCmd.SetWarnings False
    strSQL = "INSERT INTO tblLog (Utilizador, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & Me.Form.Name & "','" & ctl.Name & "','" & ctl.OldValue & "','" & ctl.Value & "','" & "Registro Alterado" & "')"
    DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
    'termina e volta a colocar a variável de chekar alterações como False
    strChekaDiferente = False
    Else
    Cancel = True
    End If
    End If
    End Select
    Next ctl
    End If
    'Salva tudo o que foi feito
    DoCmd.RunCommand acCmdSaveRecord

    End Sub
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Não grava quando o valor anterior é em branco Empty Re: [Resolvido]Não grava quando o valor anterior é em branco

    Mensagem  JPaulo 22/5/2023, 13:46

    Utilize a função NZ para tratar os nulos;

    Exemplo:

    Código:
    If Nz(ctl.Value,"") <> Nz(ctl.OldValue,"") Or (IsNull(Nz(ctl.Value,"")) Or Nz(ctl.Value,"") = "") Then


    .................................................................................
    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]Não grava quando o valor anterior é em branco Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Não grava quando o valor anterior é em branco Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Não grava quando o valor anterior é em branco Folder_announce_new Instruções SQL como utilizar...
    avatar
    tchelo1
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 08/05/2023

    [Resolvido]Não grava quando o valor anterior é em branco Empty Re: [Resolvido]Não grava quando o valor anterior é em branco

    Mensagem  tchelo1 22/5/2023, 14:17

    Funcionou mas da seguinte forma:

    If Nz(ctl.Value, "") <> Nz(ctl.OldValue, "") Then

    Retirei a parte que verificava os valores atuais em branco e nulos, ficou desnecessário.

    Mais uma vez, muitíssimo obrigado.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Não grava quando o valor anterior é em branco Empty Re: [Resolvido]Não grava quando o valor anterior é em branco

    Mensagem  JPaulo 22/5/2023, 14:18

    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]Não grava quando o valor anterior é em branco Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Não grava quando o valor anterior é em branco Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Não grava quando o valor anterior é em branco Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Não grava quando o valor anterior é em branco Empty Re: [Resolvido]Não grava quando o valor anterior é em branco

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/4/2024, 16:35