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

[0] Índice de Mensajes

Ir a la versión completa