VAMOS AO LOOP NO VB.

USUARIO.EXCLUIDOS 05/06/2007 11:41:27
#219809
Cara fiz conforme orientado porem nao funciona.

Na realidade trata-se de um função que posso colocar em um module.bas ?

O nome do meu campo e tb_dt "No caso o campo da data"



Private Sub tb_dt_LostFocus()

If Fu_Checa_Data(tb_dt.Text) = False Then
tb_dt.SetFocus

End If

End Sub


USUARIO.EXCLUIDOS 05/06/2007 13:44:06
#219835
O código está correto...Mas me diga uma coisa: Quando vc sai do foco do seu text(td_dt) ele não está entrando na função (Fu_Checa_data)??? ou seja ele não valida...o que acontece exatamente depois que vc sai do foco(Teclando ENTER,ou TAB ou clicando em outro text?
USUARIO.EXCLUIDOS 05/06/2007 13:54:29
#219840
Então ele verifica que a data esta errada ,mas simplesmente sai do campo e vai para o proximo ,não fica fazendo nenhum laço de repetição.

O que pode ser ?

Olha todo codigo do FORM


Private Sub bot_limpar_Click()
'Funcao Limpar
TB_nom.Text = ""
ob_ets.Value = False
ob_spl.Value = False
ob_crc.Value = False


If Fu_limpa_data(tb_dt) = False Then
'Chamando a funcao limpa data tb_dt em module1.bas
MsgBox "TESTE"
Exit Sub
End If

tb_dv.PromptInclude = False
'Limpa o campo documento versao
tb_dv.Mask = "##/####"
tb_dv.Text = ""
tb_dv.PromptInclude = True

tb_vrs.PromptInclude = False
'Limpa o campo Versao
tb_vrs.Mask = "#.#"
tb_vrs.Text = ""
tb_vrs.PromptInclude = True


End Sub


Private Sub bot_voltar_Click()
Unload Me
End Sub



Private Sub tb_dt_KeyPress(KeyAscii As Integer)
'Funcao- Quando chegar no 10 digito ,mudara de campo
If tb_dt.SelStart = 9 Then
SendKeys "{TAB}"

End If

End Sub


Private Sub TextBox1_LostFocus()

If Fu_Checa_Data(TextBox1.Text) = False Then
TextBox1.SetFocus
End If



End Sub



Private Sub tb_dt_LostFocus()
If tb_dt.ClipText <> "" Then
If Not Fu_Checa_Data(CStr(tb_dt.Text)) Then
MsgBox "DATA INVALIDA", vbExclamation, "ATENÇÃO"
End If
End If
End Sub



Private Sub tb_dv_KeyPress(KeyAscii As Integer)
'Funcao- Quando chegar no 10 digito ,mudara de campo
If tb_dv.SelStart = 6 Then
SendKeys "{TAB}"

End If

End Sub





Private Sub tb_dv_LostFocus()
If tb_dv.ClipText <> "" Then
If Not Fu_Checa_Data_Documentacao(CStr(tb_dv.Text)) Then
MsgBox "DATA INVALIDA", vbExclamation, "ATENÇÃO"
End If
End If
End Sub




Private Sub TB_nom_Change()
'Verifica no campo nome ,que seja digitado somente letras com numeros
If IsNumeric(TB_nom) = True Then
MsgBox "VERIFIQUE INFORMAÇÃO DIGITADA"
TB_nom.Text = ""
TB_nom.SetFocus
Exit Sub
End If

'Data da maquina no rodapé
pd3d_status(1).Caption = Date

End Sub




Private Sub tb_vrs_KeyPress(KeyAscii As Integer)
'Permite somente número no campo
On Error Resume Next
'KeyAscii = SoNumeros(KeyAscii)
Call SU_Permite_Numero_versao(KeyAscii)


'Funcao- Quando chegar no 02 digito ,mudara de campo
If tb_vrs.SelStart = 2 Then
SendKeys "{TAB}"
End If


End Sub





USUARIO.EXCLUIDOS 05/06/2007 14:31:17
#219852
O problema está aqui:
Citação:



Private Sub tb_dt_LostFocus()
If tb_dt.ClipText <> "" Then
If Not Fu_Checa_Data(CStr(tb_dt.Text)) Then
MsgBox "DATA INVALIDA", vbExclamation, "ATENÇÃO"
End If
End If
End Sub




Depois da msg (Data Inválida) vc deve retornar o foco para o textbox (tb_dt) conforme abaixo:

Private Sub tb_dt_LostFocus()
If tb_dt.ClipText <> "" Then
If Not Fu_Checa_Data(CStr(tb_dt.Text)) Then
MsgBox "DATA INVALIDA", vbExclamation, "ATENÇÃO"
tb_dt.setfocus
exit sub
End If
End If
End Sub


USUARIO.EXCLUIDOS 05/06/2007 14:39:59
#219856
Rsrsrsrsrsr e o retorno.

Deixa eu verificar
USUARIO.EXCLUIDOS 05/06/2007 15:48:30
#219880
ALLANFOX,

Usa o Evento Validate e não o LostFocus, pq vc cancelando no Validate o foco nem sai do campo.
No LostFocus, se vc tiver 2 campos com essa verificação, com a tabulacao em sequencia, vai dar erro.

Private Sub tb_dt_Validate(Cancel As Boolean)
If tb_dt.ClipText <> "" Then
If Not Fu_Checa_Data(CStr(tb_dt.Text)) Then
MsgBox "DATA INVALIDA", vbExclamation, "ATENÇÃO"
Cancel = True
Exit Sub
End If
End If
End Sub

USUARIO.EXCLUIDOS 05/06/2007 16:34:21
#219887
Mesmo jogando VALIDATE não funciona.

E frau mesmo com o comamndo acima ela retorna agora ,so que quando o campo fica branco e nao e preenchido ele passa direto quando utilizo o TAB.

Tem como bloquear tambem ,se for "" - branco ele nao passar tambem.

So mudará de campo se a data estiver correta.



USUARIO.EXCLUIDOS 05/06/2007 18:11:58
#219908
Quem bom que deu certo...para bloquear se for em branco é fácil, veja abaixo:

Private Sub tb_dt_LostFocus()
if len(tb_dt.text)=0 then
msgbox "A data não pode ficar em branco.",vbExclamation
tb_dt.setfocus
exit sub
end if
If tb_dt.ClipText <> "" Then
If Not Fu_Checa_Data(CStr(tb_dt.Text)) Then
MsgBox "DATA INVALIDA", vbExclamation, "ATENÇÃO"
tb_dt.setfocus
exit sub
End If
End If
End Sub

USUARIO.EXCLUIDOS 06/06/2007 09:56:54
#219970
Ainda passa direto pelo campo em branco.

Que estranho ,o que será que acontece.

Esse LEN na frente do If faz o que ?
USUARIO.EXCLUIDOS 06/06/2007 10:15:36
#219979
o Len conta qtos caracteres tem no campo.

Se vc tiver usando um MskEditBox (ou outro que faz Mascara) o código não vai da certo.
Página 2 de 3 [23 registro(s)]
Tópico encerrado , respostas não são mais permitidas