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