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


2 participantes

    [Resolvido]Função para vários formulários.

    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty [Resolvido]Função para vários formulários.

    Mensagem  Jonatan 17/7/2014, 20:49

    Olá, adaptei o seguinte exemplo do amigo JPaulo:

    Public Function ValidaPreenchimento() As Boolean
    'By JPaulo ® Maximo Access
    Dim ctl As Control
    For Each ctl In Forms(Fomulário_Usuários).Controls

    If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then ' Altera: incluso: "Or ctl.ControlType = acComboBox"
    If ctl.Tag = 1 Then
    If IsNull(ctl.Value) Then
    MsgBox "O Campo '" & ctl.StatusBarText & "' não pode ficar em branco"
    ctl.SetFocus
    DoCmd.CancelEvent
    Exit Function
    End If
    End If
    End If
    Next
    End Function


    Preciso que essa função esteja acessível a todos os forms.

    Grato
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Jonatan 18/7/2014, 12:33

    Alguém faz alguma ideia?
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Noobezinho 18/7/2014, 13:52

    Olá Jonatan

    Veja se isso te ajuda:


    Código:


    Function TestaCampos() As Boolean
        Dim I As Integer
        Dim strMsg As String
        Dim strTitle As String
       TestaCampos = True

        '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 Function



    Abraços

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Noobezinho 18/7/2014, 14:02

    ...


    Última edição por Noobezinho em 18/7/2014, 14:32, editado 1 vez(es)


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Jonatan 18/7/2014, 14:28

    Noobezinho, não teria como fazer com a função que passei? Deixar acessível a todos os forms?

    E outra coisa que notei:

    A função do JPaulo funcionou pra mim, mas abro o form de usuários através de uma macro, depois disso a função não funciona mais. Sabe o porquê?

    Talvez seja por isso: For Each ctl In Forms(Fomulário_Usuários).Controls (as vezes depuro e da errro, mas em outras vezes não)

    O código original era: For Each ctl In Me.Controls (erro: Uso de Me inválido)

    Abraços

    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Noobezinho 18/7/2014, 14:42

    Aquela é igual a essa.

    A diferença é porque a função é para todos os formulários.

    Ela funciona no formulário que está ativo no momento.
    A função deve ser chamada através de um botão fechar do formulário, ou no evento ao fechar de um formulário, melhor
    nesse ultimo.
    E se não sabe ainda, tem que colocar a letra t na propriedade Marca na folha de propriedades
    de cada controle que deseja forçar o preenchimento.

    O fato de chamar o form por uma macro não interfere no código

    Isso depende de em qual evento está executando o código.

    Lembre-se esse código é o ultimo ser executando quando fechar o formulário ou mudar de registro.

    Noob





    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Jonatan 18/7/2014, 14:50

    Quando uso For Each ctl In Forms(Fomulário_Usuários).Controls, ocorre isso:

    O número que você utilizou para se referir ao formulário é inválido.

    Sabe o porquê?
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Noobezinho 18/7/2014, 15:11

    Jonatan


    Ai está o código modificado

    Código:

    Public Function ValidaPreenchimento() As Boolean
    'By JPaulo ® Maximo Access
    'Alterado por Noob
    Dim ctl As Control
    For Each ctl In Screen.ActiveForm.Controls

        If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then ' Altera: incluso: "Or ctl.ControlType = acComboBox"
          If ctl.Tag = 1 Then
              If IsNull(ctl.Value) Then
                MsgBox "O Campo '" & ctl.Name & "' não pode ficar em branco"
                ctl.SetFocus
                ValidaPreenchimento = False
                DoCmd.CancelEvent
                Exit Function
              End If
          End If
        End If
    Next
    End Function


    Abraços

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Jonatan 18/7/2014, 15:33

    Noob, perfeito. Funcionou direitinho.

    Só para constar, o primeiro código que passou também funcionou perfeitamente.


    Para encerrar gostaria de tirar umas dúvidas se possível:

    1. Quando depuro aparece: Você inseriu uma expressão que requer que um formulário seja a janela ativa.

    2. Pra que serve esse ValidaPreenchimento = False?

    3. Abro esse form a partir de um form principal com uma macro, depois a função não funciona. Mas com o seu código funcionou.

    Grato pela ajuda.
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Noobezinho 18/7/2014, 16:00

    Bem, vejo que sabe usar a janela imediata.  Wink 

    1-A nome da propriedade ActiveForm já diz tudo.

    O formulário tem que estar ativo ou ela dará erro.

    Como você deve ter colocado o ponto de interrupção antes ou na linha dessa propriedade , ela vai reclamar.
    Procure colocar o ponto de interrupção logo após essa linha e poderá depurar o código normalmente.

    2) Veja que a função retorna um boolean (true/false)
    Eu chamo a função assim:
    If Not ValidaPreenchimento Then 'Se a função retornou falso
    Exit Sub
    End If

    3) Não posso dizer nada sobre isso sem analisar a coisa toda. Mas que bom que funfou com o código que enviei  Razz   Wink 

    Valeu o retorno

    Boa sorte

    Noob



    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    Jonatan
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Jonatan 18/7/2014, 19:42

    Obrigado.

    Vou anexar um exemplo, caso queira analisar dê retorno, por favor.


    Grato
    Anexos
    [Resolvido]Função para vários formulários. AttachmentDatabase1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (40 Kb) Baixado 9 vez(es)

    Conteúdo patrocinado


    [Resolvido]Função para vários formulários. Empty Re: [Resolvido]Função para vários formulários.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/4/2024, 22:26