Validação de uma da...
 
Notifications
Clear all

Validação de uma data

4 Posts
2 Usuários
0 Reactions
869 Visualizações
(@carlos-mussi)
Posts: 2
New Member
Topic starter
 

Prezados amigos estou tendo um problema na validação de uma data. Usei a função Isdate mas não esta validando. Por exemplo digitei 10/15/2009, e a rotina valida como correta. Acho que o problema é na definição do formato padrão de data americano e da brasileira. Alguém pode me ajudar. Anexei um exemplo.

 
Postado : 19/08/2012 8:20 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Seja bem vindo!!

Isso deve te ajudar, faça os teste!

Private Sub TextBox2_AfterUpdate()
    Dim iDate As String
    Dim iDays, iMnths, iYrs As String
    Dim i As Integer
     
    iDate = TextBox2.Text
    i = InStr(1, iDate, "/", vbTextCompare)
    iDays = Format(Left(iDate, (i - 1)), "###00")
    iDate = Right(iDate, Len(iDate) - i)
     
    i = InStr(1, iDate, "/", vbTextCompare)
    iMnths = Format(Left(iDate, (i - 1)), "###00")
    iDate = Right(iDate, Len(iDate) - i)
    iYrs = Format(iDate, "###00")
     
     
    If iDays > 31 Then
        MsgBox "Entre com o formato correto" & vbCrLf & "Veja como ""dd/mm/yy"""
        TextBox2.Text = ""
        Exit Sub
    ElseIf iMnths > 12 Then
        MsgBox "Entre com o formato correto" & vbCrLf & "Veja como ""dd/mm/yy"""
        TextBox1.Text = ""
        Exit Sub
    ElseIf CInt(iYrs) < 30 And CInt(iYrs) > 80 Then
        MsgBox "Por favor entre com o ano 1980 & 2030"
        TextBox2.Text = ""
        Exit Sub
    End If
     
    TextBox2.Text = iDays & "/" & iMnths & "/" & iYrs
     
End Sub

Seu tópico será movido, para o local correto!

Att ;)

 
Postado : 20/08/2012 6:13 am
(@carlos-mussi)
Posts: 2
New Member
Topic starter
 

Bom dia!!

Seja bem vindo!!

Isso deve te ajudar, faça os teste!

Private Sub TextBox2_AfterUpdate()
Dim iDate As String
Dim iDays, iMnths, iYrs As String
Dim i As Integer

iDate = TextBox2.Text
i = InStr(1, iDate, "/", vbTextCompare)
iDays = Format(Left(iDate, (i - 1)), "###00")
iDate = Right(iDate, Len(iDate) - i)

i = InStr(1, iDate, "/", vbTextCompare)
iMnths = Format(Left(iDate, (i - 1)), "###00")
iDate = Right(iDate, Len(iDate) - i)
iYrs = Format(iDate, "###00")

If iDays > 31 Then
MsgBox "Entre com o formato correto" & vbCrLf & "Veja como ""dd/mm/yy"""
TextBox2.Text = ""
Exit Sub
ElseIf iMnths > 12 Then
MsgBox "Entre com o formato correto" & vbCrLf & "Veja como ""dd/mm/yy"""
TextBox1.Text = ""
Exit Sub
ElseIf CInt(iYrs) < 30 And CInt(iYrs) > 80 Then
MsgBox "Por favor entre com o ano 1980 & 2030"
TextBox2.Text = ""
Exit Sub
End If

TextBox2.Text = iDays & "/" & iMnths & "/" & iYrs

End Sub

Obrigado Alexandre. Mas eu pensei em uma rotina mais enxuta utilizando apenas a função Isdate(). No seu exemplo a rotina aceita como válida a data de 31/04/2012. E como fica o mês de fevereiro do ano bisexto ?

 
Postado : 20/08/2012 9:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Carlos,
o problema é que IsDate() Retorna um valor Boolean que indica se uma expressão pode ser convertida em uma data.; portanto, qualquer expressão de data (mesmo que no formato mes_dia_ano) será considerada como uma data valida.

 
Postado : 20/08/2012 10:04 am