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]Função para habilitar todos os campos

    avatar
    Lidiane
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 16
    Registrado : 09/11/2011

    [Resolvido]Função para habilitar todos os campos Empty [Resolvido]Função para habilitar todos os campos

    Mensagem  Lidiane 17/12/2013, 13:35

    Bom dia,

    Utilizei a ideia desenvolvida pelo colega PILOTO para habilitar ou desabilitar alguns controles.

    http://maximoaccess.forumeiros.com/t15544-habilitar-desabilitar-controles-de-um-formulario-via-funcao-e-a-propriedade-tag  

    Todavia, quando o código é executado aparece o erro: " O objeto não aceita esta propriedade ou método.", no caso em questão é a propriedade ENABLE.

    Alguém podeira me ajudar?

    Segue arquivo com o BD.
    Anexos
    [Resolvido]Função para habilitar todos os campos AttachmentDB DIL.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (88 Kb) Baixado 17 vez(es)
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Função para habilitar todos os campos Empty Função para habilitar todos os campos

    Mensagem  good guy 17/12/2013, 13:53

    Olá Lidiane,

    Não vi o aplicativo postado e, nem sequer se o código que você postou bate com o original do Piloto, mas posso afirmar através de testes que a propriedade Enable não faz parte do conjunto de métodos e propriedades nesta função. Cheque o código original novamente !!! Conheço outras formas de fazer o que você quer, mas vou esperar que você verifique minhas afirmações iniciais e/ou que o próprio Harysohn analise o caso.


    Última edição por good guy em 17/12/2013, 13:54, editado 1 vez(es)
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Função para habilitar todos os campos Empty Re: [Resolvido]Função para habilitar todos os campos

    Mensagem  Marco Messa 17/12/2013, 13:54

    Bem, não tenho Access aqui para abrir seu exemplo, mas já fiz coisas parecidas.
    O que pode estar acontecendo Lidiane, é que algum controle que você colocou a propriedade Tag de verificação não possui a propriedade Enable, e realmente daria esse erro.
    Deu uma verificada nisso.

    Abs,

     Smile 


    .................................................................................
    Tea with me that I book your face Cool
    avatar
    Lidiane
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 16
    Registrado : 09/11/2011

    [Resolvido]Função para habilitar todos os campos Empty Re: [Resolvido]Função para habilitar todos os campos

    Mensagem  Lidiane 17/12/2013, 14:41

    Desculpe se dei a entender que fiz uma cópia fiel do código.
    Na verdade, o que fiz foi me basear nele.

    Em ambos os códigos (meu e do PILOTO), os objetos estão declarados como "Control" e realmente não existe essa propriedade para esse tipo de objeto. Então como ela funcionou para a função do PILOTO e não funcionou na minha?

    Vou postar os códigos para melhor entendimento:

    PILOTO:

    Public Function TControlFunc1(NomeForm As Access.Form)
    On Error Resume Next
    Dim TControle As control
    For Each TControle In NomeForm.Controls
    If TControle.Tag = "A" Then
       If TControle.Enabled = False Then
           TControle.Enabled = True
       Else
           TControle.Enabled = False
       End If
    End If
    Next TControle
    End Function


    Para invocar:

    Call TControle(Me)




    MEU

    Private Function enablectr(frm As Form, x As Integer, i As Integer)
    Dim ctr As Control
    For Each ctr In frm.Controls
           If InStr(ctr.Name, "gp" & i) > 0 Then
               If x = -1 Then
                   ctr.Enable = True
                   Else: ctr.Enable = False
               End If
           End If
    Next
    End Function

    Para invocar

    Call enablectr(Me, Me.NomedoControle.Value, ValorDesignado)


    Se alguém puder me explicar, agradeço muitíssimo, pois não consigo ver onde está o erro.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Função para habilitar todos os campos Empty Função para habilitar todos os campos

    Mensagem  good guy 17/12/2013, 14:59

    Olá Lidiane,

    Declare os parâmetros da função exatamente igual ao do Piloto tente também incluir a propriedade Tag (Marca) presente em cada controle do formulário e atribuir um valor nela em cada controle.

    Private Function enablectr(frm As Access.Form, x As Integer, i As Integer)
    Dim ctr As Control
    For Each ctr In frm.Controls
           If InStr(ctr.Name, "gp" & i) > 0 Then
               If x = -1 Then
                   ctr.Enable = True
                   Else: ctr.Enable = False
               End If
           End If
    Next
    End Function

    Minha sugestão de código. Antes em cada Marca dos seus controle, digite A ou -1 como aprendi a colocar, não esqueça porém de modificar o código e trocar "A" por -1. Testa aí e veja se funfa.

    Private Function enablectr(frm As Access.Form, x As Integer, i As Integer)
    Dim ctr As Control
    For Each ctr In frm.Controls
           If InStr(ctr.Name, "gp" & i) > 0 Then
             If TControle.Tag = "A" Then
               If TControle.Enabled = False Then
                   TControle.Enabled = True
                   Else
                   TControle.Enabled = False
               End If
           End If
    Next
    End Function


    Última edição por good guy em 17/12/2013, 15:10, editado 1 vez(es)
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Função para habilitar todos os campos Empty Re: [Resolvido]Função para habilitar todos os campos

    Mensagem  Marco Messa 17/12/2013, 15:08

    Eu recomendaria que você fizesse uma depuração linha a linha, mas talvez essa modificação te ajude a identificar qual o controle que provavelmente está com o nome fora do padrão e não possui a propriedade Enable:

    Código:
    Private Function enablectr(frm As Form, x As Integer, i As Integer)
    Dim ctr As Control
    For Each ctr In frm.Controls
          If InStr(ctr.Name, "gp" & i) > 0 Then
              If x = -1 Then
                  Debug.Print ctr.Name 'Adicionei essa linha para imprimir os nomes na verificação imediata
                  ctr.Enable = True
                  Else: ctr.Enable = False
              End If
          End If
    Next
    End Function

    O último nome que estiver impresso na verificação imediata do VBA, é o controle que está dando esse erro e não possui a propriedade Enable.


    .................................................................................
    Tea with me that I book your face Cool
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Função para habilitar todos os campos Empty Re: [Resolvido]Função para habilitar todos os campos

    Mensagem  Marco Messa 17/12/2013, 15:25

    Então good guy, a maneira que ela está fazendo também está certa, o objeto Form é o mesmo do Access.Form, apenas hierarquicamente mais detalhado, assim como Form.Control ao invés de só Control.


    .................................................................................
    Tea with me that I book your face Cool
    avatar
    Lidiane
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 16
    Registrado : 09/11/2011

    [Resolvido]Função para habilitar todos os campos Empty Re: [Resolvido]Função para habilitar todos os campos

    Mensagem  Lidiane 17/12/2013, 16:29

    Essa função tenta mudar a propriedade de um grupo formado por uma ComboBox e TextBox e ambos os tipos possuem a propriedade "Enable" disponível.

    Fiz umas mudanças no código, coloquei as funções de modo idêntico, alterando somente a nomenclatura de algumas variáveis. A primeira função está rodando perfeitamente, a segunda continua apresentando erro.

    Problema resolvido com o uso da primeira função.

    Mas a dúvida sobre o motivo pelo qual a segunda função não deu certo ainda perdura.


    Código:
    Private Sub CHK1_Click()
    'alterne as funções para verificar o funcionamento
    Call TControlFunc1(Me, 1)
    'Call enablectr(Me, 1)
    End Sub

    Public Function TControlFunc1(Nomeform As Form, i As Integer)
    Dim TControle As Control
    For Each TControle In Nomeform.Controls
    If InStr(TControle.Name, "gp" & i) > 0 Then
        If TControle.Enabled = False Then
            TControle.Enabled = True
        Else
            TControle.Enabled = False
        End If
    End If
    Next TControle
    End Function

    Private Function enablectr(frm As Form, i As Integer)
    Dim ctr As Control
    For Each ctr In frm.Controls
        If InStr(ctr.Name, "gp" & i) > 0 Then
            If ctr.Enable = False Then
                ctr.Enable = True
            Else
                ctr.Enable = False
            End If
        End If
    Next ctr
    End Function
    Anexos
    [Resolvido]Função para habilitar todos os campos AttachmentDB DIL.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (98 Kb) Baixado 15 vez(es)
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Função para habilitar todos os campos Empty Re: [Resolvido]Função para habilitar todos os campos

    Mensagem  Marco Messa 17/12/2013, 16:42

    Creio que entendi... é porque no primeiro está o nome correto da propriedade, que é Enabled e no segundo está Enable.

    Procure sempre usar o Ctrl+J ou Ctrl+Espaço para auto-completar funções e propriedades, evita esse tipo de erro.


    Abs,

     Smile 


    .................................................................................
    Tea with me that I book your face Cool
    avatar
    Lidiane
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 16
    Registrado : 09/11/2011

    [Resolvido]Função para habilitar todos os campos Empty Re: [Resolvido]Função para habilitar todos os campos

    Mensagem  Lidiane 17/12/2013, 17:21

    Valeu, Marco!

    Agora sim está resolvido.

    No auto completar não aparece, porque o "Enabled" não faz parte do objeto "Control".

    Muito, muito obrigada.

    Como eu faço para colocar o tópico como resolvido?
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido]Função para habilitar todos os campos Empty Re: [Resolvido]Função para habilitar todos os campos

    Mensagem  Marco Messa 17/12/2013, 18:58

    Não foi nada, o que importa é que você mesma corrigiu e agora entendeu o porquê.
    Em relação a como colocar o tópico como resolvido eu não faço ideia porque nunca abri um.


    .................................................................................
    Tea with me that I book your face Cool
    avatar
    Lidiane
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 16
    Registrado : 09/11/2011

    [Resolvido]Função para habilitar todos os campos Empty Re: [Resolvido]Função para habilitar todos os campos

    Mensagem  Lidiane 17/12/2013, 19:25

    ok

    Conteúdo patrocinado


    [Resolvido]Função para habilitar todos os campos Empty Re: [Resolvido]Função para habilitar todos os campos

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 13:50