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]Problemas com Função para Verificar Digitação em Formulário

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Problemas com Função para Verificar Digitação em Formulário Empty Problemas com Função para Verificar Digitação em Formulário

    Mensagem  rgondim 31/3/2012, 04:45

    Uso a função abaixo para verificar se alguns campos de meus formulários estão preenchidos corretamente.
    Caso retorne False, a atualização do registro é cancelada e uma mensagem informa o campo (ou o primeiro deles) com digitação incorreta.
    Infelizmente ainda tenho dois problemas com ela:

    1) Apesar de conseguir informar corretamente qual campo tem digitação incorreta (.Form(i).Controls(0).Caption), não consigo por o foco nele, após a exibição da mensagem.
    O código .Form(i).Setfocus não funciona e .Form(i).Controls(0).Setfocus gera propriedade inválida para Controls.

    2)Ao chamar a função num formulário contínuo, é gerado um erro informando que o objeto não existe ou foi fechado. O problema ocorre apenas com eles, pois chamar a função em um formulário simples não gera nenhum erro.

    Obs: a função está armazenada em um módulo global.
    --------------
    Public Function TestaCampos() As Boolean
    TestaCampos = True
    Dim strTexto, strTitle As String
    Dim i, intRetVal As Integer
    Const conDigMinima = "1"
    Const conDigExigida = "2"
    Const conDigMaiuscula = "3"

    With CodeContextObject
    For i = 0 To .Form.Count - 1
    If .Form(i).Tag = conDigMinima Then
    If IsNull(.Form(i)) Or Len(.Form(i)) < 12 Then
    strTexto = "O preenchimento do campo " & .Form(i).Controls(0).Caption & " está incorreto!"
    strTitle = "Preenchimento Incompleto"
    intRetVal = MsgBox(strTexto, vbCritical, strTitle)
    .Form(i).setfocus
    TestaCampos = False
    Exit Function
    End If
    ElseIf .Form(i).Tag = conDigExigida Then
    If IsNull(.Form(i)) Then 'Or .Form(i) = ""
    strTexto = "É obrigatório o preenchimento do campo " & .Form(i).Controls(0).Caption & "!"
    strTitle = "Preenchimento Incompleto"
    intRetVal = MsgBox(strTexto, vbCritical, strTitle)
    .Form(i).setfocus
    TestaCampos = False
    Exit Function
    End If
    End If
    Next i
    End With

    End Function
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8496
    Registrado : 05/11/2009

    [Resolvido]Problemas com Função para Verificar Digitação em Formulário Empty Re: [Resolvido]Problemas com Função para Verificar Digitação em Formulário

    Mensagem  Alexandre Neves 31/3/2012, 11:10

    Bom dia, rgondim
    1) Em vez de NomeControlo, utilize Me(NomeControlo)
    2) Quase não trabalho com subformulários, pois exigem muito mais ginástica
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    [Resolvido]Problemas com Função para Verificar Digitação em Formulário Empty Re: [Resolvido]Problemas com Função para Verificar Digitação em Formulário

    Mensagem  rgondim 31/3/2012, 17:36

    Olá Alexandre.

    1) Já tentei fazer referência com (Me.). Não posso usá-la pois a função é externa ao formulário. Também não posso especificar o nome do controle/porque a ideia é usar a função em vários formulários. Então, .Form faz referência ao formulário e (i) é o contador.

    2) Quantos as formulários contínuos, não são subformulários, apenas forms com organização dos dados ao "estilo tabela".

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8496
    Registrado : 05/11/2009

    [Resolvido]Problemas com Função para Verificar Digitação em Formulário Empty Re: [Resolvido]Problemas com Função para Verificar Digitação em Formulário

    Mensagem  Alexandre Neves 31/3/2012, 18:17

    Olá rgondim

    O i representa o índice do formulário?
    Se fôr, onde tem o ciclo para correr os controlos do formulário?
    Parece-me que está a colocar o setfocus para um formulário e não para um controlo
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8496
    Registrado : 05/11/2009

    [Resolvido]Problemas com Função para Verificar Digitação em Formulário Empty Re: [Resolvido]Problemas com Função para Verificar Digitação em Formulário

    Mensagem  Alexandre Neves 30/7/2012, 18:57

    Tópico resolvido, por falta de retorno atempado.

    Conteúdo patrocinado


    [Resolvido]Problemas com Função para Verificar Digitação em Formulário Empty Re: [Resolvido]Problemas com Função para Verificar Digitação em Formulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 09:57