VERIFICAR HORA
Pessoal , vi alguns topicos mais nada que consegui adaptar no formato hh:mm:ss , que achei poco material
qdo vo gravar uma Hora completa no Access e se eu colocar 555555 e clicar no botao gravar da um erro tipo incompativeis
alguem tem alguma verificação para verificar uma hora que existe , e que de uma mensagem essa hora nao existe
Abs
Marcelo Fazan
qdo vo gravar uma Hora completa no Access e se eu colocar 555555 e clicar no botao gravar da um erro tipo incompativeis
alguem tem alguma verificação para verificar uma hora que existe , e que de uma mensagem essa hora nao existe
Abs
Marcelo Fazan
Dá um erro pois a hora = 55 não existe.
Máximo 24
Verificando datas
Geralmente usamos uma caixa de texto para a entrada de dados , certo? e como fazemos para saber se um
valor informado pelo usuário é um valor que pode ser convertido para uma data ? Para isto podemos usar a
função IsDate.
A sintaxe é a seguinte : IsDate(expressão)
A função retorna True se a data pode ser convertida para uma Data. Assim:
Dim Data, Data1, Data2 , MData
Data = [Ô]February 12, 1969[Ô]: Data1 = #2/12/69#: Data2 = [Ô]Hello[Ô]
MData = IsDate(Data) [ô] Retorna True.
MData = IsDate(Data1) [ô] Retorna True.
MData = IsDate(Data2) [ô] Retorna False.
OBS : Mas cuidado a função IsDate aceita valores de formato de datas inválidos. Por exemplo para 66/9/15 IsDate
retorna True
Ai você faz uma condição... [txt-color=#e80000]Se Hora < 24 e Minuto < 60 e Segundo < 60 Então[/txt-color]
Fonte: Trabalhando com datas no Visual Basic
Máximo 24
Verificando datas
Geralmente usamos uma caixa de texto para a entrada de dados , certo? e como fazemos para saber se um
valor informado pelo usuário é um valor que pode ser convertido para uma data ? Para isto podemos usar a
função IsDate.
A sintaxe é a seguinte : IsDate(expressão)
A função retorna True se a data pode ser convertida para uma Data. Assim:
Dim Data, Data1, Data2 , MData
Data = [Ô]February 12, 1969[Ô]: Data1 = #2/12/69#: Data2 = [Ô]Hello[Ô]
MData = IsDate(Data) [ô] Retorna True.
MData = IsDate(Data1) [ô] Retorna True.
MData = IsDate(Data2) [ô] Retorna False.
OBS : Mas cuidado a função IsDate aceita valores de formato de datas inválidos. Por exemplo para 66/9/15 IsDate
retorna True
Ai você faz uma condição... [txt-color=#e80000]Se Hora < 24 e Minuto < 60 e Segundo < 60 Então[/txt-color]
Fonte: Trabalhando com datas no Visual Basic
Jonathan bonito sua explicacao do isdate só que ainda a duvida continua
preciso algo assim, ou mesmo um exemplo usando isdate para validar essa hora pois tambem nao achei
Private Sub Text1_Validate(Cancel As Boolean)
If Not IsDate(Text1.Text) Then
MsgBox [Ô] Hora Invalida !! [Ô], vbCritical, [Ô] Erro na Hora [Ô]
Cancel = True
Else
Data = CVDate(Text1.Text)
End If
End Sub
Não tem nada parecido mais para dar certo com Hora Completa ???? ou esse codigo acima tambem verifica a hora completa no access ?
Abs
Marcelo Fazan
preciso algo assim, ou mesmo um exemplo usando isdate para validar essa hora pois tambem nao achei
Private Sub Text1_Validate(Cancel As Boolean)
If Not IsDate(Text1.Text) Then
MsgBox [Ô] Hora Invalida !! [Ô], vbCritical, [Ô] Erro na Hora [Ô]
Cancel = True
Else
Data = CVDate(Text1.Text)
End If
End Sub
Não tem nada parecido mais para dar certo com Hora Completa ???? ou esse codigo acima tambem verifica a hora completa no access ?
Abs
Marcelo Fazan
Vc pode colocar a data e a hora completa na função IsDate, mas não dá para saber os detalhes do erro.
Porém, vc pode restringir a entrada das informações, por exemplo: colocar a data num textbox e as horas numa combobox.
Agora, se for necessário que tudo esteja no mesmo textbox, então vc vair ter que separar as informações que estão dentro do textbox e validar detalhadamente.
Porém, vc pode restringir a entrada das informações, por exemplo: colocar a data num textbox e as horas numa combobox.
Agora, se for necessário que tudo esteja no mesmo textbox, então vc vair ter que separar as informações que estão dentro do textbox e validar detalhadamente.
O ideal seria usar o controle DateTimePicker...
Mas quando não se pode utilizá-lo... use uma validação de data em textBox.
[ô]***************
[ô]Formata automaticamente a entrada de data em um objeto TextBox
Function CampoData(OBJ As Object, Keyasc As Integer)
If Not ((Keyasc >= Asc([Ô]0[Ô]) And _
Keyasc <= Asc([Ô]9[Ô])) Or Keyasc = 8) Then
Keyasc = 0
Exit Function
End If
If Keyasc <> 8 Then
If Len(OBJ.Text) = 2 Or _
Len(OBJ.Text) = 5 Then
OBJ.Text = OBJ.Text + [Ô]/[Ô]
OBJ.SelStart = Len(OBJ.Text)
End If
End If
End Function
[ô]*******************************
Private Sub TxtData_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys [Ô]{TAB}[Ô]
KeyAscii = 0
End If
[ô]Formata automaticamente a entrada de data
CampoData TxtData, KeyAscii
End Sub
[ô]*******************************
Private Sub TxtData_LostFocus()
[ô] Jesus is Lord
Select Case TestaData(TxtData)
Case Is = [Ô]ANO[Ô]
MsgBox [Ô]Verifique o ANO ![Ô], vbCritical, [Ô]Data inválida![Ô]
Exit Sub
Case Is = [Ô]MES[Ô]
MsgBox [Ô]Verifique o MÊS ![Ô], vbCritical, [Ô]Data inválida![Ô]
Exit Sub
Case Is = [Ô]DIA[Ô]
MsgBox [Ô]Verifique o DIA ![Ô], vbCritical, [Ô]Data inválida![Ô]
Exit Sub
End Select
End Sub
[ô]********************
Public Function TestaData(VerData As String)
Dim xUltimoDiaMes As String
Dim xyAno As Integer
Dim xyMes As Integer
[ô]Testa o Ano
If Mid(VerData, 7, 4) < 1980 Or Mid(VerData, 7, 4) > 2010 Then
TestaData = [Ô]ANO[Ô] [ô]False
Exit Function
Else
xyAno = Mid(VerData, 7, 4)
End If
[ô]Testa o Mes
If Mid(VerData, 4, 2) < 1 Or Mid(VerData, 4, 2) > 12 Then
TestaData = [Ô]MES[Ô] [ô]False
Exit Function
Else
xyMes = Mid(VerData, 4, 2)
End If
[ô]verifica o ultimo dia do mes da data solicitada
xUltimoDiaMes = Day(DateSerial(xyAno, xyMes + 1, 1) - 1)
[ô]testa o DIA
If Mid(VerData, 1, 2) < 1 Or Mid(VerData, 1, 2) > xUltimoDiaMes Then
TestaData = [Ô]DIA[Ô] [ô]False
Exit Function
Else
TestaData = True
End If
End Function
[ô]********************
Fonte: validação de data em textBox
Mas quando não se pode utilizá-lo... use uma validação de data em textBox.
[ô]***************
[ô]Formata automaticamente a entrada de data em um objeto TextBox
Function CampoData(OBJ As Object, Keyasc As Integer)
If Not ((Keyasc >= Asc([Ô]0[Ô]) And _
Keyasc <= Asc([Ô]9[Ô])) Or Keyasc = 8) Then
Keyasc = 0
Exit Function
End If
If Keyasc <> 8 Then
If Len(OBJ.Text) = 2 Or _
Len(OBJ.Text) = 5 Then
OBJ.Text = OBJ.Text + [Ô]/[Ô]
OBJ.SelStart = Len(OBJ.Text)
End If
End If
End Function
[ô]*******************************
Private Sub TxtData_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys [Ô]{TAB}[Ô]
KeyAscii = 0
End If
[ô]Formata automaticamente a entrada de data
CampoData TxtData, KeyAscii
End Sub
[ô]*******************************
Private Sub TxtData_LostFocus()
[ô] Jesus is Lord
Select Case TestaData(TxtData)
Case Is = [Ô]ANO[Ô]
MsgBox [Ô]Verifique o ANO ![Ô], vbCritical, [Ô]Data inválida![Ô]
Exit Sub
Case Is = [Ô]MES[Ô]
MsgBox [Ô]Verifique o MÊS ![Ô], vbCritical, [Ô]Data inválida![Ô]
Exit Sub
Case Is = [Ô]DIA[Ô]
MsgBox [Ô]Verifique o DIA ![Ô], vbCritical, [Ô]Data inválida![Ô]
Exit Sub
End Select
End Sub
[ô]********************
Public Function TestaData(VerData As String)
Dim xUltimoDiaMes As String
Dim xyAno As Integer
Dim xyMes As Integer
[ô]Testa o Ano
If Mid(VerData, 7, 4) < 1980 Or Mid(VerData, 7, 4) > 2010 Then
TestaData = [Ô]ANO[Ô] [ô]False
Exit Function
Else
xyAno = Mid(VerData, 7, 4)
End If
[ô]Testa o Mes
If Mid(VerData, 4, 2) < 1 Or Mid(VerData, 4, 2) > 12 Then
TestaData = [Ô]MES[Ô] [ô]False
Exit Function
Else
xyMes = Mid(VerData, 4, 2)
End If
[ô]verifica o ultimo dia do mes da data solicitada
xUltimoDiaMes = Day(DateSerial(xyAno, xyMes + 1, 1) - 1)
[ô]testa o DIA
If Mid(VerData, 1, 2) < 1 Or Mid(VerData, 1, 2) > xUltimoDiaMes Then
TestaData = [Ô]DIA[Ô] [ô]False
Exit Function
Else
TestaData = True
End If
End Function
[ô]********************
Fonte: validação de data em textBox
Olá Marcos Obrigado a postagem
Bom , com a ajuda do Jonathan e sua resolveu assim
no ACCESS Hora - Hora completa hh:mm:ss sem a DATA queria Verificar para Nao gravar errado
só que não sei ainda sobre AM PM mais ai é outro assunto pelos testes que fiz .....
digitando 08: Hora invalida
digitando 55:55 Hora invalida
digitando 08:00 transforma para 08:00:00 que é o que preciso
Fiz isso e atendeu as necessidades
Obrigado Abs
Marcelo Fazan
Bom , com a ajuda do Jonathan e sua resolveu assim
no ACCESS Hora - Hora completa hh:mm:ss sem a DATA queria Verificar para Nao gravar errado
só que não sei ainda sobre AM PM mais ai é outro assunto pelos testes que fiz .....
digitando 08: Hora invalida
digitando 55:55 Hora invalida
digitando 08:00 transforma para 08:00:00 que é o que preciso
Citação:
Private Sub Txthora_gotFocus()
Txthora.Text = Format(Now, [Ô]hh:mm:ss[Ô])
End Sub
Private Sub Txthora_Validate(Cancel As Boolean)
If Not IsDate(Txthora.Text) Then
MsgBox [Ô] Hora Invalida [Ô]
Cancel = True
Else
Txthora.Text = Format(Txthora.Text, [Ô]hh:mm:ss[Ô])
End If
End Sub
Fiz isso e atendeu as necessidades
Obrigado Abs
Marcelo Fazan
Olá Jonatthan obrigado o esforço ,
acho que já está como pretendo , somente esse isdate aceitar o 66/9/15 que nao é favoravel
o meu medo maior é erro de fechar a tela ai fica feio .....
utilizo assim por enquanto
para datas
Private Sub Txtpagamento_GotFocus()
If Not IsDate(TxtData.Text) Then
MsgBox [Ô]Data Invalida Favor Corrigir [Ô], vbInformation, [Ô]Data Cadastro[Ô]
TxtData.SetFocus
Exit Sub
End If
End Sub
e
Function CampoDATA(obj As Object, Keyasc As Integer)
If Not ((Keyasc >= Asc([Ô]0[Ô]) And Keyasc <= Asc([Ô]9[Ô])) Or Keyasc = 8) Then
Keyasc = 0
Exit Function
End If
If Keyasc <> 8 Then
If Len(obj.Text) = 2 Or Len(obj.Text) = 5 Then
obj.Text = obj.Text + [Ô]/[Ô]
obj.SelStart = Len(obj.Text)
End If
End If
End Function
O lance é mais verificar a Hora, fiquei confuso com ISdate , por ler em todos lugares que tinha que ter DATA + HORA
mais somente gravo HORA VALIDO e nao precisei tratar nehuma string
Abs
Marcelo Fazan
acho que já está como pretendo , somente esse isdate aceitar o 66/9/15 que nao é favoravel
o meu medo maior é erro de fechar a tela ai fica feio .....
utilizo assim por enquanto
para datas
Private Sub Txtpagamento_GotFocus()
If Not IsDate(TxtData.Text) Then
MsgBox [Ô]Data Invalida Favor Corrigir [Ô], vbInformation, [Ô]Data Cadastro[Ô]
TxtData.SetFocus
Exit Sub
End If
End Sub
e
Function CampoDATA(obj As Object, Keyasc As Integer)
If Not ((Keyasc >= Asc([Ô]0[Ô]) And Keyasc <= Asc([Ô]9[Ô])) Or Keyasc = 8) Then
Keyasc = 0
Exit Function
End If
If Keyasc <> 8 Then
If Len(obj.Text) = 2 Or Len(obj.Text) = 5 Then
obj.Text = obj.Text + [Ô]/[Ô]
obj.SelStart = Len(obj.Text)
End If
End If
End Function
O lance é mais verificar a Hora, fiquei confuso com ISdate , por ler em todos lugares que tinha que ter DATA + HORA
mais somente gravo HORA VALIDO e nao precisei tratar nehuma string
Abs
Marcelo Fazan
Tópico encerrado , respostas não são mais permitidas