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]comando ou função vba para interromper o restante do código caso a função retorne true

    avatar
    FlavioLima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 155
    Registrado : 14/02/2016

    [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true Empty [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true

    Mensagem  FlavioLima 26/9/2024, 02:18

    Gostaria de ajuda para que, ao clicar no botao salvar, chamando a função abaixo executasse a validacampos e caso a 1 função retorne true interrompa a validacampos2:

    Private Function ValidaCampos() As Boolean
      ValidaCampos = True
     If IsNull(Me.[Campo1]) Or Trim(Me.[Campo1]) = Empty Then
           Me.Campo1.Value = Me.nomeusuario.Value
           ValidaCampos = False '-- define a função como falsa
           Exit Function
       End If
    End Function
                        'queria uma solução para interromper o código neste ponto, caso a função validacampos acima retornasse como true

    Private Function ValidaCampos2() As Boolean
      ValidaCampos2 = True
     If IsNull(Me.[Campo2]) Or Trim(Me.[Campo2]) = Empty Then
           Me.Campo2.Value = Me.nomeusuario.Value
           ValidaCampos2 = False '-- define a função como falsa
           Exit Function
       End If
    End Function
    ==========================
    Por que se rodar as 2 sem interromper vai salvar o nomeusuario no campo1 e no campo2 e da proxima vez que salvar ambos vao estar preenchidos...

    Se der certo interromper, da proxima vez que clicasse em salvar, como o campo1 vai estar preenchido o validacampos retornaria false e daria continuidade ao restante do código validacampos2 que verifica se o campo2 está vazio e caso esteja vazio salva o nomeusuario no campo2.

    to pesquisando sem sucesso.
    agradeço qualquer solução.
    crysostomo
    crysostomo
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2745
    Registrado : 23/01/2018

    [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true Empty Re: [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true

    Mensagem  crysostomo 26/9/2024, 23:55

    Se voê quer somente dois campos.
    Código:
    Sub SalvarCampo()
    If Not IsNull(Me.campo0) And Trim(Me.campo0) <> "" And Not IsNull(Me.campo2) And Trim(Me.campo2) <> "" Then
              salve os dois campos
        ElseIf Not IsNull(Me.campo1) And Trim(Me.campo1) <> "" Then
             coloque o codigo somente para salvar o campo 1
       ElseIf Not IsNull(Me.campo0) And Trim(Me.campo0) <> "" Then
          salve so o 0
          Else
            MsgBox "Ambos os campos estão vazios. Por favor, insira um valor."
        End If
    End Sub


    .................................................................................
    Obs.: Coloque somente as partes defeituosas para que possamos encontrar e entender  o problema mais rápido para lhe ajudar. Disponho.
    Uma mão ajuda a outra.
    Feliz aquele que transfere o que sabe e aprende o que ensina.

    FlavioLima gosta desta mensagem

    avatar
    FlavioLima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 155
    Registrado : 14/02/2016

    [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true Empty Re: [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true

    Mensagem  FlavioLima 27/9/2024, 18:26

    Desculpe pois não consegui ser claro na minha explicação, era pra mais de duas vezes...

    Testei assim:

    If IsNull(Me.[UserSalv]) Or Trim(Me.[UserSalv]) = Empty Then
           Me.UserSalv.Value = Me.txtUser.Value
           Me!DHSalv.Value = Now                       '=> funcionou
       ElseIf Not IsNull(Me.[UserSalv]) And Trim(Me.[UserSalv]) <> " And IsNull(Me.[UserSalv2]) And Trim(Me.[UserSalv2]) <> " Then
           Me.UserSalv2.Value = Me.txtUser.Value
           Me!DHSalv2.Value = Now                          '=> funcionou
       ElseIf Not IsNull(Me.[UserSalv2]) And Trim(Me.[UserSalv2]) <> " And IsNull(Me.[UserSalv3]) And Trim(Me.[UserSalv3]) <> " Then
           Me.UserSalv3.Value = Me.txtUser.Value
           Me!DHSalv3.Value = Now                          '=> tirei as aspas duplas e coloquei colchetes e consegui fazer o segundo funcionar, mas não lê o terceiro...
       End If

    a ideia é checar se o campo "usersalv" esta vazio se sim salvar la, da proxima vez que clicar ele checar se esta vazio, e como não estará pular
    pra seguinte e salvar no campo usersalv2 e assim sucessivamente...

    Eu arrumei um jeito de fazer mas achei que ficou uma gambiarra de varios códigos, tipo:

    Private Function ValidaCampos2() As Boolean

           If IsNull(Me.[UserSalv]) Or Trim(Me.[UserSalv]) = Empty Then
           Me.UserSalv.Value = Me.txtUser.Value
           Me!DHSalv.Value = Now
           DoCmd.RunCommand acCmdSaveRecord
           Else
           Call ValidaCampos3
           Exit Function
       End If


    Private Function ValidaCampos3() As Boolean

        If IsNull(Me.[UserSalv2]) Or Trim(Me.[UserSalv2]) = Empty Then
           Me.UserSalv2.Value = Me.txtUser.Value
           Me!DHSalv2.Value = Now
           DoCmd.RunCommand acCmdSaveRecord
           Else
           Call ValidaCampos4
           Exit Function
       End If


    Private Function ValidaCampos4() As Boolean

        If IsNull(Me.[UserSalv3]) Or Trim(Me.[UserSalv3]) = Empty Then
           Me.UserSalv3.Value = Me.txtUser.Value
           Me!DHSalv3.Value = Now
           DoCmd.RunCommand acCmdSaveRecord
           Else
           Call ValidaCampos5
           Exit Function
       End If


    E assim vai, mas ficou muito poluída minha alternativa de solução...
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true Empty Re: [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true

    Mensagem  Alexandre Neves 27/9/2024, 20:58

    Boa noite
    Tente

    if validacampos1=false then validacampos2

    Assim, só executa a função 2 caso a função 1 dê falso


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    FlavioLima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 155
    Registrado : 14/02/2016

    [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true Empty Re: [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true

    Mensagem  FlavioLima 28/9/2024, 14:45

    Agradeço a colaboração de todos, cheguei numa solução que permite salvar quantas atualizações eu quiser
    Não pode esquecer que em propriedades > outra o nome tem de estar igual ao do código senão não funciona.
    Aprendendo mais a cada post, obrigado!

    If IsNull(Me.[UserSalv]) Or Trim(Me.[UserSalv]) = Empty Then
    Me.UserSalv.Value = Me.txtUser.Value
    Me!DHSalv.Value = Now
    ElseIf IsNull(Me.[UserSalv2]) Or Trim(Me.[UserSalv2]) = Empty Then
    Me.UserSalv2.Value = Me.txtUser.Value
    Me!DHSalv2.Value = Now
    ElseIf IsNull(Me.[UserSalv3]) Or Trim(Me.[UserSalv3]) = Empty Then
    Me.UserSalv3.Value = Me.txtUser.Value
    Me!DHSalv3.Value = Now
    ElseIf IsNull(Me.[UserSalv4]) Or Trim(Me.[UserSalv4]) = Empty Then
    Me.UserSalv4.Value = Me.txtUser.Value
    Me!DHSalv4.Value = Now
    ElseIf IsNull(Me.[UserSalv5]) Or Trim(Me.[UserSalv5]) = Empty Then
    Me.UserSalv5.Value = Me.txtUser.Value
    Me!DHSalv5.Value = Now
    ElseIf IsNull(Me.[UserSalv6]) Or Trim(Me.[UserSalv6]) = Empty Then
    Me.UserSalv6.Value = Me.txtUser.Value
    Me!DHSalv6.Value = Now
    End If
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true Empty Re: [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true

    Mensagem  Alexandre Neves 28/9/2024, 19:54

    Boa tarde
    Use este código minimalista que faz o mesmo que o seu código extenso
    Altere UserSalv para UserSalv1 e DHSalv para DHSalv1
    Código:
    Dim X As Byte
    For X = 1 To 6
        If IsNull(Me("UserSalv" & X)) Or Trim(Me("UserSalv" & X)) = Empty Then
            Me("UserSalv" & X).Value = Me.txtUser.Value
            Me("DHSalv" & X).Value = Now
        End If
    Next


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    crysostomo gosta desta mensagem

    avatar
    FlavioLima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 155
    Registrado : 14/02/2016

    [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true Empty Re: [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true

    Mensagem  FlavioLima 28/9/2024, 22:45

    Obrigado, mas ao testar aqui preencheu todos de uma vez com a mesma informação.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true Empty Re: [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true

    Mensagem  Alexandre Neves 29/9/2024, 09:43

    Bom dia
    Se quer que preencha apenas a primeira que encontre, use este código
    Código:
    Dim X As Byte
    For X = 1 To 6
        If IsNull(Me("UserSalv" & X)) Or Trim(Me("UserSalv" & X)) = Empty Then
            Me("UserSalv" & X).Value = Me.txtUser.Value
            Me("DHSalv" & X).Value = Now
            Exit For
        End If
    Next


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    FlavioLima gosta desta mensagem

    avatar
    FlavioLima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 155
    Registrado : 14/02/2016

    [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true Empty Re: [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true

    Mensagem  FlavioLima 29/9/2024, 20:39

    Muito obrigado mesmo por sua ajuda, acrescentei o if dirty pra ativar só em caso de alteração nos campos, testei e está 100%

    If Me.Form.Dirty = True Then
    Dim X As Byte
    For X = 1 To 6
       If IsNull(Me("UserSalv" & X)) Or Trim(Me("UserSalv" & X)) = Empty Then
           Me("UserSalv" & X).Value = Me.txtUser.Value
           Me("DHSalv" & X).Value = Now
           Exit For
       End If
    Next
    End If

    Conteúdo patrocinado


    [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true Empty Re: [Resolvido]comando ou função vba para interromper o restante do código caso a função retorne true

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 10:17