SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: agfed en Martes 11 de Febrero de 2003, 21:35
-
Me pueden ayudar por favor con la rutina para validar la entrada de un textbox como formato hora hh:mm:ss
siendo que hh es de formato 24 hrs?
-
Hola agfed
¿Es hora militar lo que quieres?
porque si es eso, entonces este pequeño proyectico te puede servir, lo hace en un Label, en tu caso será para un TextBox.
Si es para validar el ingreso a una BD, pues.... hummm..... no sé si te sirva hacer una variable asi:
Dim Hora as Date
y con eso podrías hacer Hora = Text1.Text pero no estoy muy seguro, o podría usarse el DateTime que sirve para trabajar con campos fechas y horas.
-
gracias por este código. Pero lo que quiero hacer es restringir al usuario la entrada en el textbox para evitar errores que paren la ejecución. El usuario tiene que teclear la hora de entrada para usarla en un reloj checador.
-
A ver si te sirve esto, ponlo en el evento change de tu textbox:
If Len(TxtHora.Text) = 2 Or Len(TxtHora.Text) = 5 Then 'ponemos los 2 puntos
TxtHora.Text = TxtHora.Text & ":"
TxtHora.SelStart = Len(TxtHora.Text)
End If
El control numerico de rangos de horas te lo dejo a ti, usa el format para ello
Suerte
Egala
-
Function esHora(ByVal txt As String) As Boolean
Dim arr() As String = txt.Split(":")
If arr.GetLength(0) < 2 Then
Return False
ElseIf Not IsNumeric(arr(0)) Then
Return False
ElseIf Not IsNumeric(arr(1)) Then
Return False
ElseIf Not IsNumeric(arr(2)) Then
Return False
ElseIf arr(0) < 0 Or arr(0) > 23 Then
Return False
ElseIf arr(1) < 0 Or arr(0) > 59 Then
Return False
ElseIf arr(2) < 0 Or arr(0) > 59 Then
Return False
End If
Return True
End Function
-
Function esHora(ByVal txt As String) As Boolean
Dim arr() As String = txt.Split(":")
If arr.GetLength(0) < 2 Then
Return False
ElseIf Not IsNumeric(arr(0)) Then
Return False
ElseIf Not IsNumeric(arr(1)) Then
Return False
ElseIf Not IsNumeric(arr(2)) Then
Return False
ElseIf arr(0) < 0 Or arr(0) > 23 Then
Return False
ElseIf arr(1) < 0 Or arr(0) > 59 Then
Return False
ElseIf arr(2) < 0 Or arr(0) > 59 Then
Return False
End If
Return True
End Function
2 cosas, que no has tenido en cuenta:
A - Este es un post del 2003 es decir de hace 6 años... mala cosa si el autor aún estuviera esperando respuesta. No resucites post muertos
B - Éste foro es de VB6, el código que expones no se aplica aquí.
Para la fecha, (si no se refiere concretamente a la hora)... Hay soluciones bastante mejores que cualquiera de las expuestas en este hilo, en los foros de vb6 ( a día de hoy) sólo es cuestión de buscar. Concretamente usar un control DTPicker (Date Time Picker). Permite opciones de formato y no requiere complejidades de validación ya que puede fijar el rango de fechas admitidas (propiedades maxDate y minDate) y permite al usuario (por torpe que sea) elegir una fecha siempre válida.
Para la hora VBA.DateTime tiene funciones específicas para tratar adecuadamente la hora...