CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Validacion de numeros y de fechas
(1/1)
mi1909:
Hola gente soy nueva en esto, tengo dudas con las siguentes funciones no se bien como trabajan cada una (se que una valida numeros y la otra valida fechas) si alguien seria tan amable de explicarme la funcion de cada una. Muchas gracias
Private Sub txtnum_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtnum.KeyPress
Select Case Asc(e.KeyChar)
Case 4, 24, 4, 19, 127, 13, 9, 15, 14
Exit Sub
End Select
If IsNumeric(e.KeyChar) = False Then
MsgBox("Este carater no es un numero ( " + e.KeyChar + " )", vbCritical, "Importante")
e.KeyChar = ""
End If
End Sub
Private Sub txt_fecha_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtfec.Validated
If IsDate(sender.Text) Then
If Not sender.Text = Format(CDate(sender.text), "dd/mm/yyyy") Then
Else
MsgBox("Fecha invalida", vbOKOnly + vbCritical, "Atención")
sender.Focus()
Exit Sub
End If
Else
MsgBox("Fecha invalida", vbOKOnly + vbCritical, "Atención")
sender.Focus()
Exit Sub
End If
End Sub
gabio2:
Para que solo te lea numeros yo utilizo este:
--- Código: vb.net --- Private Sub txtValorpos_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtValorpos.KeyPress If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub
Si entiendes que estas en el "evento" KeyPress de un Textbox?...
bueno, lo segundo es el IF que es un condicional, donde utilizas un "Char", que es miembro de "System" su definición es: Representa un carácter Unicode, es decir UN simple y común carácter.. y llamas a la función IsDigit, que si te das cuenta esta declarado como un Booleano, es decir que va a retornar un "True" o un "False" y si te das cuenta le pasas un parámetro (e.KeyChar) que es el "caracter" que hayas presionado, por caracter entiende que puede ser hasta un ENTER, LETRAS, NUMEROS, SHIFT, CTRL, ALT.. entonces lo que hace el IF es decir.. "Si e.KeyChar es un Digito o Si e.KeyChar es un control entonces No me manejes el evento (e.Handled = false)".. en caso contrario.. (es decir si son letras), Maneja el evento con un True para que no lo dejes que el usuario pueda teclearlo". Si te preguntas.. por que dejamos pasar los caracteres de tipo control, es que podriamos usar un "enter".. si me vas entendiendo?.. espero que sí.. jejjejeje..
Tu otro evento.. de las fechas, es LO MISMO..
--- Código: vb.net ---Private Sub txt_fecha_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtfec.ValidatedIf IsDate(sender.Text) ThenIf Not sender.Text = Format(CDate(sender.text), "dd/mm/yyyy") ThenElseMsgBox("Fecha invalida", vbOKOnly + vbCritical, "Atención")sender.Focus()Exit SubEnd IfElseMsgBox("Fecha invalida", vbOKOnly + vbCritical, "Atención")sender.Focus()Exit SubEnd IfEnd Sub
Solo que aquí llamas
a IsDate, para que entiendas como funciona IsDate te recomiendo que entres a aquí: h ttp://msdn.microsoft.com/es-es/library/ ... 80%29.aspx , te lo explica más fácil.
pero practicamente es lo mismo.. solo que ademas del IsDate.. tu le pides que tiene que estar en un Determinado formato aquí:
If Not sender.Text = Format(CDate(sender.text), "dd/mm/yyyy") Then , es decir que tiene que estar en el formato "dd/mm/yyyy" dia, mes y año.
SI NO tiene ese formato entonces tampoco te lo detectará como fecha.. :).. es todo.. si tienes alguna otra duda.. puedes seguir preguntando.. saludos! :)
mi1909:
Muchisimas gracias gabi2, la verdad me ayudaste un monton. Saludos
gabio2:
No hay de que, por cierto es Gabio2 :D jejeje.. suerte byez! :)
Navegación
Ir a la versión completa