MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Campo não pode ficar vazio ou nulo

    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 602
    Registrado : 23/03/2010

    [Resolvido]Campo não pode ficar vazio ou nulo Empty [Resolvido]Campo não pode ficar vazio ou nulo

    Mensagem  Finformática em 21/7/2020, 04:12

    Grandes Mestres, Boa Noite.

    Estou com dois pequenos problemas:
    1. O pequeno código abaixo que não pode ficar com campo Filial vazio (vazio, nulo, "", " ") de modo algum. Tentei diversos modos e ainda não amarrei. Onde estou errando? O campo é texto.
    Já até conectei o conteúdo do campo com uma letra e verifico a letra e passa direto. Ex. XX = [Filial] & "A" --- If XX = A e passa direto.
    2. Tem como agilizar (ficar mais rápido) o processamento da mensagem falada abaixo? Uso a função do grande mestre JPaulo para fazer o Access falar, a quem mais uma vez sou muito grato.


    Private Sub Filial_AfterUpdate()

    Dim TxtFala As String

    If IsNull(Filial) Or Filial = "" Or Len(Filial) = 0 Then ' Esta é a linha do problema. Hora funciona, 2 horas não, fura...

    TxtFala = "Campo de preechimento obrigatório"
    FazerFalar (TxtFala)
    Me.Filial.SetFocus

    Else

    TxtFala = "Muito bem preenchido..."
    FazerFalar (TxtFala)

    End If


    End Sub


    '--------------------------------------------- Aqui está tudo certo -----------------------------
    Public Function FazerFalar(str As String)
    'By JPaulo 2008
    Dim objVo As Object
    Set objVo = CreateObject("SAPI.SpVoice")
    objVo.Speak str
    End Function
    '--------------------------------------------------------------------------------------------------

    Desde já, muito grato a todos.

    Forte Abraço.
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1150
    Registrado : 13/12/2016

    [Resolvido]Campo não pode ficar vazio ou nulo Empty Re: [Resolvido]Campo não pode ficar vazio ou nulo

    Mensagem  Alexandre Fim em 21/7/2020, 05:26

    Olá Finformatica,

    Tente isso:
    Código:


    If IsNull(Me.Filial) Or Trim(Me.Filial) = Empty Then
        TxtFala = "Campo Filial é de preechimento obrigatório"
        FazerFalar (TxtFala)
        Me.Filial.SetFocus
    Else
        TxtFala = "Muito bem preenchido..."
        FazerFalar (TxtFala)
    End If



    Boa sorte.

    Abs


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 602
    Registrado : 23/03/2010

    [Resolvido]Campo não pode ficar vazio ou nulo Empty Re: [Resolvido]Campo não pode ficar vazio ou nulo

    Mensagem  Finformática em 21/7/2020, 14:05

    Grande Alexandre, bom dia.

    Não funcionou. Basta "Enter" ou "Tab" e passa direto. A critério de curiosidade, qual o motivo que o Setfocus só funciona se mandar para outro campo e depois mandar para o campo que queremos? Isso é só a curiosidade. Aqui está funcionando do modo que falei anteriormente.

    Muito grato

    Abraços
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Campo não pode ficar vazio ou nulo Empty Re: [Resolvido]Campo não pode ficar vazio ou nulo

    Mensagem  Alexandre Neves em 21/7/2020, 15:47

    Boa tarde
    No seu código tem criação de variável TxtFala quando TxtFala não se tratará de variável mas de nome de controlo do formulário
    Código:

    Private Sub Filial_AfterUpdate()
        If Len("" & Filial) = 0 Then
            TxtFala = "Campo de preechimento obrigatório"
            FazerFalar (TxtFala)
            Me.Filial.SetFocus
        Else
            TxtFala = "Muito bem preenchido..."
            FazerFalar (TxtFala)
        End If
    End Sub


    .................................................................................
    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
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2453
    Registrado : 22/11/2016

    [Resolvido]Campo não pode ficar vazio ou nulo Empty Re: [Resolvido]Campo não pode ficar vazio ou nulo

    Mensagem  DamascenoJr. em 21/7/2020, 23:13

    Você está usando o evento após atualizar. Dar tab não dispara o evento, ora bolas, pois não houve modificação no campo, isto é, o campos não foi atualizado para que o evento Após Atualizar fosse acionado.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1150
    Registrado : 13/12/2016

    [Resolvido]Campo não pode ficar vazio ou nulo Empty Re: [Resolvido]Campo não pode ficar vazio ou nulo

    Mensagem  Alexandre Fim em 21/7/2020, 23:45

    Você pode colocar a rotina de validação no Evento "LostFocus" do campo Filial.

    Abs.


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 602
    Registrado : 23/03/2010

    [Resolvido]Campo não pode ficar vazio ou nulo Empty Re: [Resolvido]Campo não pode ficar vazio ou nulo

    Mensagem  Finformática em 22/7/2020, 00:17

    Grandes Mestres,

    Muito grato pelas sugestões e lições. Estava tão convicto do que estava fazendo que não atentei ao "Após Atualizar". Grande causador de tudo. Agora está funcionando. Peço até desculpas a vocês por minha displicência. Falta agora as duas outras etapas. São apenas lições, explicações: a questão do setfocus para funcionar corretamente tem que mandar para outro campo e depois mandar para campo desejado (em outros momentos que funciona sem esse atalho). E a outra questão, deixa para lá.

    Fico no aguardo

    Mais uma vez, muito agradecido a todos.

    Forte abraço
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2453
    Registrado : 22/11/2016

    [Resolvido]Campo não pode ficar vazio ou nulo Empty Re: [Resolvido]Campo não pode ficar vazio ou nulo

    Mensagem  DamascenoJr. em 22/7/2020, 01:38

    O SetFocus não precisa ser "tabelado". Tudo depende do que você pretende e do evento onde você está usando ele.

    Exemplo:
    Pretendido: não deixar que um campo fique vazio NUNCA.
    Evento usado: Ao perder foco.

    Nesse evento, o código será disparado quando o campo estiver perdendo o foco. E você não pode estar saindo de um campo e mandar o foco de volta para ele, afinal, sair dele é que causou o disparo do evento. Por isso, usar nesse evento, é preciso garantir que o foco esteja em outro campo (assim finalizando a perda do foco do campo que disparou o evento) antes de trazer de volta o foco para o campo que se quer.

    O que você quer pode ser resolvido com o evento "Ao sair". Você o conhece? Veja o "cabeçalho" do comando.

    Private Sub CampoX_Exit(Cancel As Integer)

    Viu o Cancel destacado? Isso significa que você pode cancelar o evento.

    Exemplo:
    If IsNull(CampoA) Then Cancel = True

    Com isso você nem sequer sai do campo caso ele esteja vazio.

    Atenção: isso é algo a ser usado com muito cuidado. Imagina se o usuário não tiver a informação do campo no momento e resolver tentar cancelar a edição do registro porém não conseguir tirar o foco do campo e ficar preso?

    Minha recomendação: tenha um botão salvar e garanta nele a verificação do preenchimento dos campos obrigatórios.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 602
    Registrado : 23/03/2010

    [Resolvido]Campo não pode ficar vazio ou nulo Empty Re: [Resolvido]Campo não pode ficar vazio ou nulo

    Mensagem  Finformática em 22/7/2020, 01:50

    Grande Damasceno,

    Muito grato por mais essa grande explanação, realmente uma aula completa. Muito obrigado.

    Muito obrigado para todos.

    Grande abraço

    Resolvido


      Data/hora atual: 28/11/2020, 02:49