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]Validar campos com preench. obrigatório pela Tag

    Compartilhe
    avatar
    JKOHLERS
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 56
    Registrado : 12/11/2009

    Validar campos com preenchimento obrigatório pela Tag

    Mensagem  JKOHLERS em 11/1/2010, 19:13

    Olá pessoal, em especial Jpaulo,

    O código http://dl.dropbox.com/u/771097/PreenchimentoObrigatorioCamposNoFormulario.txt faz parte da biblioteca de codigos VBA disponibilizado pelo JPaulo aqui no fórum. Funciona perfeitamente.

    Porém eu gostaria de poder selecionar quais campos serão validados ou não, pela propriedade Marca (Tag) do controle, e não pelo tipo controle, como faz o código.

    Isso porque tenho campos que necessitam dessa validação e outros que não, alguns são combobox, alguns são textbox.

    Dessa forma, eu selecionaria os campos que necessitam de validação apenas incluindo um texto qualquer, por exemplo, "VALIDAR", na propriedade marca(tag) do controle.

    Isso me ajudaria também a otimizar o BD, pois poderia usar essa função como uma função global, o que seria muito interessante.

    Obrigado desde já,

    Forte abraço e feliz 2010 a todos os amigos do forum.

    Abraços.


    .................................................................................
    JEFFERSON
    Curitiba - Brasil

    MS-ACCESS 2007
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  JPaulo em 11/1/2010, 19:22

    Ola amigo;

    Para o que pretende, utilize este código:

    Código:
    Public Function valNullControl(frm As Form)
    Dim ctl As Control
    Dim minhaArray As String
    Dim validacaoOk As Byte
    validacaoOk = 0
    For Each ctl In frm.Controls
     If ctl.Tag <> Null Or ctl.Tag <> "" Then
       ctl.BackColor = 16777215
     End If
    Next ctl
    For Each ctl In frm.Controls
     If ctl.Visible = True Then
       If ctl.Tag <> Null Or ctl.Tag <> "" Then
         If IsNull(ctl) = True Or ctl = "" Then
           ctl.BackColor = 161616
           validacaoOk = 1
           minhaArray = minhaArray & ctl.Tag & ", "
         End If
       End If
     End If
    Next ctl
    If validacaoOk = 1 Then MsgBox "Campo Obrigatório: " & minhaArray
    End Function


    Chamar a função:

    Call valNullControl(Me)


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

    Utilize o Sistema de Busca do Fórum...
    102 Códigos VBA Gratuitos...
    Instruções SQL como utilizar...
    avatar
    JKOHLERS
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 56
    Registrado : 12/11/2009

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  JKOHLERS em 11/1/2010, 19:51

    Jpaulo,
    Nem preciso dizer que funcionou perfeitamente. vc é mesmo o mago do VBA... Smile Rápido, preciso, e superando as expectativas. Essa de colorir o background foi muito bacana.

    Só tive um problema (que nem chega a ser um problema), criado por mim mesmo. Estou usando um formulario contínuo para estes cadastros, e quando o background de um campo de um registro fica "colorido", obviamente os demais campos similares abaixo, tb ficam, estando ou não preenchidos.

    existe uma forma descomplicada de resolver isto ou é melhor mesmo nao colorir o background?

    o que vc me recomenda?

    muito obrigado

    abraços
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  JPaulo em 12/1/2010, 11:28

    Ola bom dia !

    Para formulario continuo eu recomendaria a formatação condicional direta em cada campo pretendido, ela funciona perfeito e é uma parametrização que fica para sempre.

    O codigo acima não funciona em form continuo.


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

    Utilize o Sistema de Busca do Fórum...
    102 Códigos VBA Gratuitos...
    Instruções SQL como utilizar...
    avatar
    JKOHLERS
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 56
    Registrado : 12/11/2009

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  JKOHLERS em 12/1/2010, 11:38

    Bom dia JPaulo,

    entendido. muito obrigado pela recomendação.

    Abraço e sucesso a vc tb.


    .................................................................................
    JEFFERSON
    Curitiba - Brasil

    MS-ACCESS 2007

    marciomelo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 05/03/2012

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  marciomelo em 22/5/2014, 19:33

    Solução perfeita
    Parabéns pelo código criado, ficou super prático... fiz uma pequena adaptação no final da rotina para retornar True e assim poder testar uma combox de Status, no meu caso que uso tabelas vinculadas eu trabalho os registros conforme um Status... e só consegue ter o valor "Ok - arquivar" quando tiver todos os campos preenchidos...

    Código:
    'Rotina do site http://www.maximoaccess.com/post?t=102&mode=reply
    'De JPaulo - adaptado por Márcio Melo
    'VALIDAR OS CAMPOS DE UM FORM
    Public Function valNullControl(frm As Form)
    Dim ctl As Control
    Dim minhaArray As String
    Dim validacaoOk As Byte
    validacaoOk = 0
    For Each ctl In frm.Controls
    If ctl.Tag <> Null Or ctl.Tag <> "" Then
    ctl.BackColor = 16777215
    End If
    Next ctl
       For Each ctl In frm.Controls
           If ctl.Visible = True Then
               If ctl.Tag <> Null Or ctl.Tag <> "" Then
                   If IsNull(ctl) = True Or ctl = "" Then
                   ctl.BackColor = 255 ' vermelho  '161616 cor original
                   validacaoOk = 1
                   minhaArray = minhaArray & ctl.Tag & ", "
                   End If
               End If
           End If
       Next ctl
    If validacaoOk = 1 Then
    MsgBox "Campo Obrigatório: " & minhaArray
    valNullControl = True 'passei um retorno da função em True quando tiver a mensagem.
    End If
    End Function

    'Abaixo no evento ao Atualizar do Combox StatusOK , se algum campo tiver faltando ser preenchido o status vai ter valor 2;Pendente se não... continua com o outro valor...
    ---------------------------------------
    Código:
    Private Sub StatusOk_AfterUpdate()

    If valNullControl(Me) = True Then
    Me.StatusOk = 2
    Else
    'MsgBox "Dados obrigatórios preenchidos...", vbInformation, "Ok!"
    End If

    End Sub

    Sou mais Brasil!

    Ficou perfeito para a  minha finalidade... e deixo aqui outras combinações e adaptações desta magnífica rotina

    Forte Abraço... J Paulo
    .

    Magnho
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 19/09/2015

    ME SALVOU

    Mensagem  Magnho em 6/11/2015, 18:56

    ESTA DICA ME SALVOU DE TAL FORMA... QUE VOCES NAO TEM NEM NOÇAO...


    MUITO OBRIGADO, A INTELIGÊNCIA DE VOCES TRANSBORDA
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5672
    Registrado : 15/03/2013

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  ahteixeira em 6/11/2015, 19:21

    Olá Magnun, bem-vindo ao fórum.

    Antes de tudo obrigado pelo retorno Wink

    No entanto veja no link abaixo as regras do fórum, em especial o nº 12:
    http://www.maximoaccess.com/t48-regras-do-forum

    Edite a sua mensagem e regularize a situação.
    Abraço e bons estudos.

    alozs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 52
    Registrado : 07/02/2018

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  alozs em 14/1/2019, 13:57

    bom dia pessoal, veja se podem me ajudar, eu inclui no meu bd o exemplo do Jpaulo porem ao clicar em salvar ele não desabilita os botões e opções conforme cód abaixo, alguem sabe o motivo?
    já tentei trocar de false para true, trocar as posições e nada Sad
    Código:
    Private Sub btnSalvar_Click()
        If valNullControl(Me) = False Then
            Cancel = True
        Else
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
        TxtCodProd.enabled = False
        txtdatacad.enabled = False
        DESCRICAO.enabled = False
        PRECO_CUSTO.enabled = False
        PRECO_VENDA.enabled = False
        LUCRO.enabled = False
        cbunid.enabled = False
        cbgrupo.enabled = False
        cbsubgrupo.enabled = False
        txtref.enabled = False
        cbFabricante.enabled = False
        txtgarantia.enabled = False
        cbFornecedor.enabled = False
        txtobs.enabled = False
        btnSalvar.enabled = False
        btneditar.enabled = True
        btnnovo.enabled = True
        btnLocalizar.enabled = True
        btCancelar.enabled = True
        btneditar.enabled = True
        btnCadUnid.enabled = False
        btnCadGrupo.enabled = False
        btnCadSubGrupo.enabled = False
        btncadfab.enabled = False
        btgerar.enabled = False
        btnfoto.enabled = False
        btaddestoque.enabled = False
        End If
    End Sub
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  JPaulo em 14/1/2019, 16:43

    Olá;

    Não utilize o Cancel=True, porque ele não existe no evento Click.

    Teste assim;

    Código:
    Private Sub btnSalvar_Click()
        If valNullControl(Me) = True Then
            'Cancel = True
            Exit Sub
        Else
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

            Me.btneditar.Enabled = True
            Me.btneditar.SetFocus
           
            Me.btnnovo.Enabled = True
            Me.btnLocalizar.Enabled = True
            Me.btCancelar.Enabled = True
            Me.btneditar.Enabled = True
           
            Me.TxtCodProd.Enabled = False
            Me.txtdatacad.Enabled = False
            Me.DESCRICAO.Enabled = False
            Me.PRECO_CUSTO.Enabled = False
            Me.PRECO_VENDA.Enabled = False
            Me.LUCRO.Enabled = False
            Me.cbunid.Enabled = False
            Me.cbgrupo.Enabled = False
            Me.cbsubgrupo.Enabled = False
            Me.txtref.Enabled = False
            Me.cbFabricante.Enabled = False
            Me.txtgarantia.Enabled = False
            Me.cbFornecedor.Enabled = False
            Me.txtobs.Enabled = False
            Me.btnSalvar.Enabled = False
            Me.btnCadUnid.Enabled = False
            Me.btnCadGrupo.Enabled = False
            Me.btnCadSubGrupo.Enabled = False
            Me.btncadfab.Enabled = False
            Me.btgerar.Enabled = False
            Me.btnfoto.Enabled = False
            Me.btaddestoque.Enabled = False
        End If
    End Sub


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

    Utilize o Sistema de Busca do Fórum...
    102 Códigos VBA Gratuitos...
    Instruções SQL como utilizar...

    alozs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 52
    Registrado : 07/02/2018

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  alozs em 14/1/2019, 22:37

    mesma coisa, ele deixa salvar, tentei mudar para If valNullControl(Me) = Cancel Then... mais mesmo assim não vai, ele deixa salvar o registro com o código acima, eu armazenei esse código de validação em um módulo, será que é esse o problema?

    Código:
    Public Function valNullControl(frm As Form)
    Dim ctl As control
    Dim minhaArray As String
    Dim validacaoOk As Byte
    validacaoOk = 0
    For Each ctl In frm.Controls
     If ctl.Tag <> Null Or ctl.Tag <> "" Then
      ctl.BackColor = 16777215
     End If
    Next ctl
    For Each ctl In frm.Controls
     If ctl.Visible = True Then
      If ctl.Tag <> Null Or ctl.Tag <> "" Then
        If IsNull(ctl) = True Or ctl = "" Then
          ctl.BackColor = 161616
          validacaoOk = 1
          minhaArray = minhaArray & ctl.Tag & ", "
        End If
      End If
     End If
    Next ctl
    If validacaoOk = 1 Then MsgBox "Campo Obrigatório: " & minhaArray
    End Function
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  JPaulo em 15/1/2019, 09:33

    If valNullControl(Me) = Cancel ???????

    Amigão, não invente se quiser aprender.

    O seu form deve estar vinculado a uma tabela, logo quando você digita e saí do campo já está a gravar.
    Para não gravar, terá de usar o Me.Undo, mas o melhor é você anexar aqui parte do seu banco para resolver-mos o seu problema.




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

    Utilize o Sistema de Busca do Fórum...
    102 Códigos VBA Gratuitos...
    Instruções SQL como utilizar...

    alozs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 52
    Registrado : 07/02/2018

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  alozs em 15/1/2019, 13:22

    nessas horas a gente tenta de tudo JPaulo...rsrs vou preparar aqui e enviar Smile 

    alozs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 52
    Registrado : 07/02/2018

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  alozs em 15/1/2019, 14:13

    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  JPaulo em 15/1/2019, 15:17

    Seu banco aqui;

    Download

    Código:
    Private Sub btnSalvar_Click()
     'valida campos null pela tag de cada controle
        If valNullControl(Me) = True Then
     'se existirem não passa daqui
            Exit Sub
        Else
     'se tudo estiver preenchido, pergunta
        If MsgBox("Deseja salvar este registro ?", vbQuestion + vbYesNo, "Save") = vbNo Then
     'se a resposta for não, desfaz todo o registro
           DoCmd.RunCommand acCmdUndo
           Me.TxtCodProd.SetFocus
           Exit Sub
        End If
     'se a resposta for sim, avança para um novo, porque não necessita de salvar uma vez que
     'o form está vinculado a uma tabela, logo já fica salvo
        DoCmd.GoToRecord , , acNewRec
        
            Me.btnEditar.enabled = True
            Me.btnEditar.SetFocus
            
            Me.btnNovo.enabled = True
            Me.btnLocalizar.enabled = True
            Me.btCancelar.enabled = True
            Me.btnEditar.enabled = True
            
            Me.TxtCodProd.enabled = False
            Me.txtdatacad.enabled = False
            Me.DESCRICAO.enabled = False
            Me.PRECO_CUSTO.enabled = False
            Me.PRECO_VENDA.enabled = False
            Me.LUCRO.enabled = False
            Me.cbunid.enabled = False
            Me.cbgrupo.enabled = False
            Me.cbsubgrupo.enabled = False
            Me.txtref.enabled = False
            Me.cbFabricante.enabled = False
            Me.txtgarantia.enabled = False
            Me.cbFornecedor.enabled = False
            Me.txtobs.enabled = False
            Me.btnSalvar.enabled = False
            Me.btnCadUnid.enabled = False
            Me.btnCadGrupo.enabled = False
            Me.btnCadSubGrupo.enabled = False
            Me.btncadfab.enabled = False
            Me.btgerar.enabled = False
            Me.btnfoto.enabled = False
            Me.btaddestoque.enabled = False
            
            MsgBox "Registro salvo com sucesso...", , "Salvo"
        End If
    End Sub


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

    Utilize o Sistema de Busca do Fórum...
    102 Códigos VBA Gratuitos...
    Instruções SQL como utilizar...

    alozs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 52
    Registrado : 07/02/2018

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  alozs em 15/1/2019, 19:02

    muito obg JPaulo, deu certinho aqui! fiz alguns ajustes de cores aqui e ficou perfeito!
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Validar campos com preench. obrigatório pela Tag

    Mensagem  JPaulo em 15/1/2019, 19:35

    Fico feliz
    Obrigado pelo retorno o fórum 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

    Utilize o Sistema de Busca do Fórum...
    102 Códigos VBA Gratuitos...
    Instruções SQL como utilizar...

      Data/hora atual: 18/1/2019, 12:22