none
error al validar una fecha con maskedtextbox bindeado RRS feed

  • Pregunta

  • Hola, tengo un formulario en el que la fecha se muestra a través de un maskedtexbox bindeado a un campo de una tabla de la base de datos.

    Tengo el código de validación que debería indicar cuando una fecha no es válida (esto si lo hace) y debería dar por válida las fechas vacías, aquí es donde no me funciona, cuando encuentra la fecha vacía no dice (por medio de errorprovider) que la fecha no sea válida, pero no deja pasar al siguiente control. Revisando he comprobado que el código si funciona con maskedtextbox que no estén bindeados.

    Para la comprobación de la fecha tengo:

    Public Sub validar_fecha(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
            sender.TextMaskFormat = mfMaskFormat

        End Sub

        Public Sub comprobar_fechas(ByVal sender As Object, ByVal e As System.Windows.Forms.TypeValidationEventArgs)
            mfMaskFormat = sender.TextMaskFormat
            sender.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
                   If Not e.IsValidInput And sender.Text.Length <> 0 Then
                ErrorProvider1.SetError(sender, "fecha incorrecta")
                e.Cancel = True
            Else
                ErrorProvider1.Clear()

            End If

        End Sub

    Gracias

    • Cambiado Enrique M. Montejo miércoles, 13 de junio de 2012 16:07 controles de Windows Forms (De:Lenguaje VB.NET)
    viernes, 1 de junio de 2012 15:03

Todas las respuestas

  • pero no deberias validar la fecha tomando lo ingresado y usando

    Dim fecha As DateTime
    
    If Not DateTime.TryParse(sender.Text, fecha) Then
    
       ErrorProvider1.SetError(sender, "fecha incorrecta")
       e.Cancel = True
    
    End If

    o sea intentas tomar la fecha si puede parsearla entonces es correcta

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 1 de junio de 2012 15:19
  • Hola Leandro.

    Se sustituido

    Public Sub comprobar_fechas(ByVal sender As Object, ByVal e As System.Windows.Forms.TypeValidationEventArgs)
            mfMaskFormat = sender.TextMaskFormat
            sender.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
                   If Not e.IsValidInput And sender.Text.Length <> 0 Then
                ErrorProvider1.SetError(sender, "fecha incorrecta")
                e.Cancel = True
            Else
                ErrorProvider1.Clear()
            End If
        End Sub

    por

    Public Sub comprobar_fechas(ByVal sender As Object, ByVal e As System.Windows.Forms.TypeValidationEventArgs)

            mfMaskFormat = sender.TextMaskFormat
            sender.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
           

              If String.IsNullOrEmpty(sender.Text) Then
                ErrorProvider1.Clear()
               'punto 1

               e.Cancel = True
           
            End If 

            Dim fecha As DateTime
            If Not DateTime.TryParse(sender.Text, fecha) Then
                ErrorProvider1.SetError(sender, "fecha incorrecta")
                e.Cancel = True
            Else
                ErrorProvider1.Clear()
            End If
        End Sub

    y me sigue pasando lo mismo, en lo intento poner una fecha vacía, aunque se sale en el punto uno no pasa al siguiente control, se que el foco actual para ingresar una fecha correcta


    • Editado novelera lunes, 4 de junio de 2012 12:17
    sábado, 2 de junio de 2012 2:21