MaximoAccess

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

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Preenchimento obrigatório em campo de subformulário

    avatar
    wesley
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 08/11/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  wesley em 19/2/2015, 14:04

    Olá amigos,

    Econtrei este código e estou tentando adaptá-lo para tornar um campo obrigatório dentro de um subformulário. Tenho aqui alguns subformulários, sendo que no primeiro subformulário o código roda normal, porém ao colar/adaptar o código ao segundo subformulário, nada acontece... Devido a minha falta de experiência em vba, não sei exatamente se o código está incompleto ou na ordem errada...

    A intenção é fazer com que o campo seja preenchido obrigatoriamente e que o usuário não saia do subformulário enquanto este não for preenchido...
    Se alguém puder indicar um outro código para melhoria, será de grande valia...

    'primeiro subformuláio
    Private Sub DtSituacaoGestor_GotFocus()
    If IsNull(cboSituacaoGestor) Then
       cboSituacaoGestor.BackColor = 9934847 'cor
       cboSituacaoGestor.SetFocus 'foco volta para o campo
       MsgBox "O campo de Situação no Gestor'" & cboSituacaoGestor.StatusBarText & "' é de preenchimento obrigatório.", vbExclamation
       DoCmd.CancelEvent
       End
       Else
           If Me.Form.Dirty = True Then
               DtSituacaoGestor = Now()
                   If MsgBox("Confirma Atualização de Acompanhamento de Análise do Gestor?", vbYesNo, "") = vbNo Then
                       Me.Undo
                   End If
           End If
    End If
    End Sub

    'segundo subformulário
    Private Sub DtSituacaoDiretoria_GotFocus()
    If IsNull(cboSituacaoDiretoria) Then
       cboSituacaoDiretoria.BackColor = 9934847 'cor
       cboSituacaoDiretoria.SetFocus 'foco volta para o campo
       MsgBox "O campo de Situação na Diretoria'" & cboSituacaoDiretoria.StatusBarText & "' é de preenchimento obrigatório.", vbExclamation
       DoCmd.CancelEvent
       End
       Else
           If Me.Form.Dirty = True Then
               DtSituacaoDiretoria = Now()
                   If MsgBox("Confirma Atualização de Acompanhamento da Análise na Diretoria?", vbYesNo, "") = vbNo Then
                       Me.Undo
                   End If
           End If
    End If
    End Sub


    Última edição por wesley em 31/7/2019, 21:30, editado 1 vez(es)
    avatar
    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 189
    Registrado : 29/04/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  vinicius.anna em 19/2/2015, 18:15

    Boa tarde

    Para este tipo de situação normalmente uso, no evento Ao Sair do Campo em questão o código abaixo:

    Código:

    Private Sub Convenio_Exit(Cancel As Integer)
    If Not IsNull(Me.Id_Convenio) Then
        If IsNull(Me.ActiveControl) Then
            MsgBox "Informe o Convênio!", vbExclamation, "Atenção"
            DoCmd.SetWarnings False
            DoCmd.CancelEvent
        End If
    End If
    End Sub

    Veja se te ajuda.

    Att.
    Vinicius
    avatar
    wesley
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 08/11/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  wesley em 19/2/2015, 21:34

    Boa tarde Vinicius,

    Já ajudou bastante... Além daquele outro que estava usando, adaptei o código indicado no primeiro subformulário e rodou certinho...  Também é bom porque sinaliza/bloqueia no momento de sair do campo em questão, e dessa forma não tem como seguir adiante com os outros campos enquanto ele não for preenchido, muito bom...

    Entretanto continuo sem entender, por que ao adaptar/colar o mesmo código para os outros subformulários, passa em branco como se nada estivesse acontecido... Shocked  

    'primeiro subformuláio OK
    Private Sub cboSituacaoGestor_Exit(Cancel As Integer)
    If Not IsNull(CodAcompGestor) Then
    If IsNull(cboSituacaoGestor) Then
           MsgBox "Informe a Situação de Acompanhamento no Gestor!", vbExclamation, "Atenção"
           DoCmd.SetWarnings False
           DoCmd.CancelEvent
    End If
    End If
    End Sub

    'segundo subformulário
    Private Sub cboSituacaoDiretoria_Exit(Cancel As Integer)
    If Not IsNull(CodAcompDiretoria) Then
       If IsNull(cboSituacaoDiretoria) Then
           MsgBox "Informe a Situação de Acompanhamento na Diretoria!", vbExclamation, "Atenção"
           DoCmd.SetWarnings False
           DoCmd.CancelEvent
       End If
    End If
    End Sub

    Valeu pela dica Smile
    avatar
    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 189
    Registrado : 29/04/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  vinicius.anna em 20/2/2015, 09:50

    Bom dia

    Se possível, poste a parte de sua aplicação em que isto ocorre para dar uma olhada....

    Att.
    Vinicius
    avatar
    wesley
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 08/11/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  wesley em 23/2/2015, 04:37

    Bom dia Vinicius,

    Desculpe a demora... Estava fazendo outros testes no bd. Consegui reduzir o problema a este bdteste e deixar só a parte em questão... mas basicamente a ideia é a mesma: tenho que fazer com que, quando ao tentar sair do subformulário, tanto o campo da DtEnvioGestor/Diretoria como a cboSituacaoGestor/Diretoria, dos subformulários, sejam de preenchimento obrigatório...E pensando melhor, tentei colocar para que tenha a mensagem de salvar logo que for concluída a operação.

    Testando de outras formas, percebi que não é tão simples como pensei, e no caso, entra em jogo outros pontos. Por exemplo, ao deixar o campo DtEnvio como requerido na tabela, e se no subformulário ele não for preenchido logo de primeira, e ao chegar o momento de salvar ele critica e me leva para a janela de depuração... Percebi também que, quando ao entrar no campo cboSituacaoGestor/Diretoria e não preenchê-lo e ao tentar fazer outra consulta num campo fora do sub, como por exemplo no formPrincipal, não consigo sair da mensagem de preenchimento obrigatório... Percebi estes pontos nos testes.

    Se puderes dar uma olhadinha no bdexemplo, fico grato...
    Já valeu pela intenção study
    Anexos
    [Resolvido]Preenchimento obrigatório em campo de subformulário Attachmentbdteste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (159 Kb) Baixado 27 vez(es)
    avatar
    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 189
    Registrado : 29/04/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  vinicius.anna em 23/2/2015, 11:46

    Bom dia

    Detalhe para mim como devo testar para entender o que esta havendo.

    Att.
    Vinicius
    avatar
    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 189
    Registrado : 29/04/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  vinicius.anna em 23/2/2015, 13:23

    Bom dia

    Veja se este pequeno exemplo te ajuda.....

    Att.
    Vinicius
    Anexos
    [Resolvido]Preenchimento obrigatório em campo de subformulário Attachmentteste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (27 Kb) Baixado 34 vez(es)
    avatar
    wesley
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 08/11/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  wesley em 27/2/2015, 21:38

    Olá Vinicius

    ...desculpe a demora no retorno.

    Este exemplo já ajudou sim e entendi o código do exemplo que deixou, e estou adaptando.
    Vou detalhar no próprio exemplo o que acontece e assim saber se é possível fechar todas as brechas...

    Quando o usuário utiliza o teclado para tirar o foco do formulário sem preencher todos os campos que são obrigatórios, temos a mensagem da crítica e até aqui tudo bem...
    Entretanto, o usuário pode ainda utilizar o mouse para tirar o foco do formulário e colocá-lo em outro formulário, sem preencher todos os campos que eram obrigatórios...
    Se houver uma maneira que impeça totalmente de sair do formulário, independentemente se é utilizando o teclado ou o mouse, será uma grande melhoria..

    Grato pela ajuda..
    avatar
    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 189
    Registrado : 29/04/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  vinicius.anna em 13/3/2015, 14:14

    Bom dia

    Me perdõe pela ausência, porém, se você tratar no subformulário, no evento ao sair do campo imagino que já atenda a sua demanda.

    Att.
    Vinicius
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3633
    Registrado : 29/06/2012

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  Noobezinho em 13/3/2015, 14:45

    Olá Wesley

    Eu poderia simplesmente baixar teu exemplo e fazer com que funcione como deseja.
    Mas como a coisa é simples e você mesmo pode fazê-lo e com isso irá enriquecer
    teus conhecimento de programação em Access, convido-o  ler essa mensagem , copiar e utilizar essa função que testa todos os campos (caixas de texto) se estao ou não preenchidas.
    Leia a instrução do post atentamente, como tem somente uma caixa de controle para a verificação, coloque  o "t"  na propriedade marca dessa caixa de texto (irá entender quando ler o post).

    Deve-se usar a função no evento ao fechar do formulário ou outra propriedade que irá salvar
    o registro.

    [ ]'s

    Noob
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3633
    Registrado : 29/06/2012

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  Noobezinho em 21/3/2015, 11:28

    Olá Wesley


    E então?


    Noob
    avatar
    wesley
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 08/11/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  wesley em 8/10/2015, 23:29

    Prezado Noob, perdão pela falta de retorno. Estive ausente, por força maior...

    No momento estou tentando aplicar o código da mensagem que convidaste-me a ler...

    Na linha onde se encontra a parte:
    Código:
    If Screen.ActiveForm!IDCliente <> 0 Then
    ;
    estou substituindo por:
    Código:
    If Screen.ActiveForm!CodAcompProcesso <> 0 Then

    porém não está encontrando o campo indicado...
    Obrigado desde já...

    [Resolvido]Preenchimento obrigatório em campo de subformulário Imagme1

    [Resolvido]Preenchimento obrigatório em campo de subformulário Imagem1
    [Resolvido]Preenchimento obrigatório em campo de subformulário Imagem3


    Código:
    Function TestaCampos() As Boolean
       Dim I As Integer
       Dim strMsg As String
       Dim strTitle As String
        
       TestaCampos = True
      
    If Screen.ActiveForm!IDCliente <> 0 Then
       'inicia o loop pelos controle do formulário
       'a contagem começa em zero (0) até  x-1
       For I = 0 To Screen.ActiveForm.Count - 1
           'se o controle tem a marca(tag) = t então
           If Screen.ActiveForm(I).Tag = "t" Then
               'se o campo está vazio então
               If IsNull(Screen.ActiveForm(I)) Or Screen.ActiveForm(I) = "" Then
                   'emite mensagem acompanhado do nome do controle
                   strMsg = "É obrigatório o preenchimento do campo '" & Screen.ActiveForm(I).Name & "'!"
                   strTitle = "Campo em Branco"
                   MsgBox strMsg, 48, strTitle
                   'move o foco para o controle
                  Screen.ActiveForm(I).SetFocus
                   TestaCampos = False
                
                   Exit Function
               End If
           End If
       Next I

    End If
    End Function
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3633
    Registrado : 29/06/2012

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  Noobezinho em 8/10/2015, 23:43

    Wesley

    Vendo tuas imagens, vejo que colocou o código da função

    dentro do evento ao sair do subformulário.

    Veja no exemplo que uma coisa é a função que deve ficar num módulo básico na pagina do vba.

    Uma vez que a função está gravada lá, irá chama-la no evento

    Ao sair do formulário irá colocar:

    If Not TestaCampos Then
    Exit Sub
    End If
    avatar
    wesley
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 08/11/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  wesley em 9/10/2015, 21:57

    Olá Noob,

    Até aqui onde estou entendendo, talvez seja porque, neste caso, não posso referenciar o campo privado do Subformulário na função pública do módulo? Se este for o caso, o que eu poderia colocar no lugar do:
    If Screen.ActiveForm!CodAcompProcesso <> 0 Then?
    Quero utilizar esta sugestão de código, porque ela permite escolher os campos a serem obrigatórios...

    [Resolvido]Preenchimento obrigatório em campo de subformulário NovaImagem2

    [Resolvido]Preenchimento obrigatório em campo de subformulário NovaImagem1

    [Resolvido]Preenchimento obrigatório em campo de subformulário Nova%2BImagem
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3633
    Registrado : 29/06/2012

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  Noobezinho em 9/10/2015, 22:31

    Wesley


    "If Screen.ActiveForm!CodAcompProcesso <> 0 Then"

    Essa frase verifica que existe registro no formulário,para então fazer o  loop
    através  das caixas de texto dele.

    2 perguntas:
    1- CodAcompProcesso  tem código? ou seja, não está vazio?
    2- O código é número ou texto, se for texto , não funfa (=0)

    Sabe usar a janela de verificação imediata?
    Se sim, coloque um ponto de interrupção justamente nessa linha e faça a operação.
    O código deve parar nessa linha mesmo.
    Então na janela imediata, digite:

    ? Screen.ActiveForm.Name  ' O sinal de interrogação é o mesmo que print ou exiba, então deverá exibir logo abaixo  o nome do              
                                          formulário que esta ativo.

    Aguardo...
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3633
    Registrado : 29/06/2012

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  Noobezinho em 29/10/2015, 12:28

    Wesley

    E então?
    avatar
    wesley
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 08/11/2011

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  wesley em 31/7/2019, 23:25

    Prezado Noob,

    Desculpe o lapso de tempo desde a última vez.. Passei por uma série de complicações nos últimos tempos, mas estou bem..

    Deixo o tópico aqui como resolvido.

    Assim que me inteirar novamente volto ao tópico aqui proposto..

    Grato pela atenção!

    Conteúdo patrocinado

    [Resolvido]Preenchimento obrigatório em campo de subformulário Empty Re: [Resolvido]Preenchimento obrigatório em campo de subformulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/8/2019, 13:04