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]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    avatar
    tombr300
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 223
    Registrado : 08/04/2018

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  tombr300 em 20/8/2019, 13:56

    Olá,

    Por favor, me ajudar se possível.

    Após clicar no botão de comando NOVO.

    O primeiro campo de cadastro no meu formulário seja "Obrigatório" digitar um texto ou escolher um texto já salvo na caixa de combinação.

    Somente após esse processo liberar os demais campos para preencher.

    Como faço esse procedimento?
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2823
    Registrado : 21/04/2011

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  Marcelo David em 20/8/2019, 14:45

    Bom dia.
    Suponhamos que a combo onde tem os textos que bloqueiam ou desbloqueiam os campos o nome seja MinhaCBO e nela tenha os valores: Sim e Não.

    Caso seja selecionado Sim, os campos podem ser editados, caso não, os campos ficam bloqueados.

    No VBA do formulário, ponha copie essa sub:

    Código:
    Sub BloqueiaControles(Acao As Boolean)
        For Each ctl In Me.Controls 'Percorro todos os controles do formulário
            If If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox And ctl.Name <> "MinhaCBO" Then ctl.Locked = Acao 'Caso seja um combo ou uma textbox e não seja a combo que uso como critério, aplico o bloquei ou desbloqueio
        Next
    End Sub

    No evento após atualizar da MinhaCBO:

    Código:
    Form_Current

    No evento No atual do formulário, ponha isso:

    Código:
    If Me.MinhaCBO = "Sim" Then
        BloqueiaControles False 'Passo para sub que os controles não precisam ser bloqueados, pois informei "Sim"
    Else
        BloqueiaControles True  'Passo para sub que os controles devem ser bloqueados, pois informei "Não"
    End If

    No evento


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    tombr300
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 223
    Registrado : 08/04/2018

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  tombr300 em 20/8/2019, 19:09

    Olá, Marcelo David

    Obrigado pela ajuda.

    Inseri as formulas que você passou, mas não deu certo.

    Após digitar o texto no campo "CboEmpresa" os demais campos não consigo digitar nada. Ficou travado.

    O que fiz de errado?



    Última edição por tombr300 em 20/8/2019, 21:14, editado 1 vez(es)
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2823
    Registrado : 21/04/2011

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  Marcelo David em 20/8/2019, 19:18

    Vamos..
    Qual é o valor que precisa está na combo para liberar a digitação?
    Em quais condições a regra de bloquear deve ser aplicada?

    Desconfio (dependendo das respostas) podemos usar formatação condicional e nada de VBA...


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    tombr300
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 223
    Registrado : 08/04/2018

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  tombr300 em 20/8/2019, 19:26

    Olá, Marcelo David

    No formulário: FormEmpresaGeral quero que o campo chamado Empresa (CboEmpresa) seja obrigatório eu começar a digitar por ele.

    Somente após digitar o texto nesse campo citado seja liberado os demais campos (Produto, Valor Unitário e Valor Total).
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2823
    Registrado : 21/04/2011

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  Marcelo David em 20/8/2019, 20:12

    Para o seu caso, por se tratar de consistência de dados da regra de negócio,
    apenas definiria o campo Empresa da tabela EmpresaGeral com requerido.

    Assim, o registro não será salvo caso não ponha nada.

    Faça um teste:

    Remova todo o código que passei para vc, e faça a alteração no campo
    como mencionei acima.

    O usuário até pode digitar, mas não consegue salvar. É o mais indicado nessa situação.



    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    tombr300
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 223
    Registrado : 08/04/2018

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  tombr300 em 20/8/2019, 21:26

    Olá, Marcelo

    Obrigado pela dica. Fiz o que você orientou.

    Mas gostaria que os campos Produto, Valor Unitário e Valor Total ficasse travado até eu digitar primeiro no campo Empresa.

    Não existe outra maneira de fazer isso no Access?

    Segue em anexo o arquivo para visualizar.
    Anexos
    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos AttachmentTeste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (38 Kb) Baixado 3 vez(es)
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 897
    Registrado : 01/03/2014

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  Celso Roberto em 20/8/2019, 22:32

    Olá a todos

    Uma sugestão

    No evento atual do formulário

    Código:
    Private Sub Form_Current()
     Dim ctl As Control
       
        For Each ctl In Me.Controls
        Select Case ctl.ControlType
            Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox
                If IsNull(Me.CboEmpresa) Or Me.CboEmpresa = "" Then
                    If ctl.Name = "CboEmpresa" Then
                        ctl.Locked = False
                        ctl.Enabled = True
               
                    Else
                        ctl.Locked = True
                        ctl.Enabled = False
                    End If
                Else
                    ctl.Locked = False
                    ctl.Enabled = True
                End If
        End Select
        Next
    End Sub

    No evento após atualizar da CboEmpresa:

    Código:
    Private Sub CboEmpresa_AfterUpdate()
    Dim ctl As Control
       
        For Each ctl In Me.Controls
        Select Case ctl.ControlType
            Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox
                If Not IsNull(Me.CboEmpresa) Or Me.CboEmpresa <> "" Then
                    ctl.Locked = False
                    ctl.Enabled = True
                Else
                    ctl.Locked = True
                    ctl.Enabled = False
                End If
        End Select
        Next
    End Sub

    Aguardamos retorno

    Abraços



    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 897
    Registrado : 01/03/2014

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  Celso Roberto em 20/8/2019, 22:53

    Olá..

    Altere o código do evento após atualizar passado na mensagem anterior por este

    Código:
    Private Sub CboEmpresa_AfterUpdate()
    Dim ctl As Control
       
        For Each ctl In Me.Controls
        Select Case ctl.ControlType
            Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox
                If Not IsNull(Me.CboEmpresa) Or Me.CboEmpresa <> "" Then
                    ctl.Locked = False
                    ctl.Enabled = True
                   
                Else
               
                    If ctl.Name = "CboEmpresa" Then
                        ctl.Locked = False
                        ctl.Enabled = True
                    Else
                        ctl.Locked = True
                        ctl.Enabled = False
                    End If
                End If
        End Select
        Next
    End Sub

    Este ira evitar o bloqueio da CboEmpresa se após atualizar ela seja deixada vazia.

    Abraços


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....
    avatar
    tombr300
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 223
    Registrado : 08/04/2018

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  tombr300 em 20/8/2019, 23:34

    Olá, Celso Roberto

    Agora deu certo com suas fórmulas.

    Muito Obrigado pela dica.
    Celso Roberto
    Celso Roberto
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 897
    Registrado : 01/03/2014

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  Celso Roberto em 20/8/2019, 23:48

    Olá..

    Ficamos felizes por ter ajudado.

    O Fórum agradece seu retorno

    Abraços e sucesso


    .................................................................................
    Quando sua dúvida estiver resolvida, Agradeça ao Fórum e de seu tópico por Resolvido



    A Única coisa que sei é que ainda nada sei, Mas em breve Saberei.....

    Conteúdo patrocinado

    [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos Empty Re: [Resolvido]Obrigar um campo a digitar os dados primeiro para poder liberar os demais campos

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 15/9/2019, 21:51