none
como puedo hacer porfavor RRS feed

  • Pregunta

  • como hacer que mi textbox que esta desclarado en integer no me marque 0 cuando esta vacio. por que entonces no me validara

    Dim c, disponible As Integer

            c = Convert.ToDouble(Tbcantidadpedido.Text)
            disponible = Convert.ToDouble(TBcantidadisponibel.Text)

            If ((Tbcantidadpedido.Text = "") Or (c = 0)) Then
                Tbcantidadpedido.Clear()
                Tbcantidadpedido.Focus()
                MsgBox("¡Error!... Debe Tener en cuenta que debe Ingresar una Cantidad", MsgBoxStyle.Critical, "Cantidad")


            Else
                If disponible = 0 Then
                    MsgBox("¡Atención!... No hay Producto Disponible Para Salida", MsgBoxStyle.Critical, "Cantidad")
                    limpieza()



                Else

                    If (Tbcantidadpedido.Text > TBcantidadisponibel.Text) Then
                        MsgBox("¡Error!... Supera el limite del Producto disponible  ", MsgBoxStyle.Critical, "Cantidad")

                        Tbcantidadpedido.Clear()
                        Tbcantidadpedido.Focus()



                    Else
                        agregarfila()
                        agregaradtgsalida()
                        restadelproducto()
                        SQLDAProducto.Update(DSsalida1.Producto)
                        SQLDAProducto.Fill(DSsalida1.Producto)
                        eventodelcomboproduc()

                        limpieza()

                        DTGWsalida.Enabled = True
                        PBAceptar.Enabled = True
                    End If




                End If

            End If

    este es el codigo

    Oswal

    jueves, 14 de junio de 2018 20:27

Respuestas

  • "Oswal Noguera" preguntó:

    > como hacer que mi textbox que esta desclarado en integer no me marque 0
    > cuando esta vacio. por que entonces no me validara
    >
    > Dim c, disponible As Integer

    Hola, Oswal:

    ¿Está declarado como Integer o como Double? Te lo pregunto porque si bien ambas variables están declaradas como Integer, el caso es que le estás asignado un valor Double producto de convertir el valor de los controles TextBox al tipo de dato Double:

        c = Convert.ToDouble(Tbcantidadpedido.Text)
        disponible = Convert.ToDouble(TBcantidadisponibel.Text)

    Si deseas validar si el contenido de los controles TextBox se pueden convertir a un número válido, ya sea Integer, Double, Long, Decimal, etc., lo correcto es utilizar su método TryParse, el cual te dirá si la conversión es verdadera (True) o no (False), pero sin llegar a producir una excepción (error), tal y como muestra la modificación que he efectuado al código que has publicado:

        Dim c, disponible As Integer
    
        If ((Not Integer.TryParse(Tbcantidadpedido.Text, c)) OrElse (c <= 0)) Then
            Tbcantidadpedido.Clear()
            Tbcantidadpedido.Focus()
            MsgBox("¡Error!... Debe Tener en cuenta que debe Ingresar una Cantidad", MsgBoxStyle.Critical, "Cantidad")
    
            ' Abandonar el procedimiento, ya que el valor de "c" será 0.
            Return
        End If
    
        If ((Not Integer.TryParse(TBcantidadisponibel.Text, disponible)) OrElse (disponible <= 0)) Then
            MsgBox("¡Atención!... No hay Producto Disponible Para Salida", MsgBoxStyle.Critical, "Cantidad")
            limpieza()
    
            ' Abandonar el procedimiento, ya que el valor de "disponible" será 0.
            Return
        End If
    
        If (c > disponible) Then
            MsgBox("¡Error!... Supera el limite del Producto disponible  ", MsgBoxStyle.Critical, "Cantidad")
            Tbcantidadpedido.Clear()
            Tbcantidadpedido.Focus()
    
        Else
            agregarfila()
            agregaradtgsalida()
            restadelproducto()
            SQLDAProducto.Update(DSsalida1.Producto)
            SQLDAProducto.Fill(DSsalida1.Producto)
            eventodelcomboproduc()
    
            limpieza()
    
            DTGWsalida.Enabled = True
            PBAceptar.Enabled = True
        End If

    Observa que si el valor de los controles TextBox no se pueden convertir a Integer (el método TryParse devuelve el valor False), procedemos a abandonar el procedimiento Sub donde se encuentre incluido el código que has publicado.

    Como comentas que no deseas que te marque 0 cuando el control esté vacío, te advierto que si en el control TextBox el usuario ha escrito explícitamente el valor 0, o cualquier número negativo, es decir, un número menor que cero, los métodos TryParse.Integer o TryParse.Double devolverán el valor True, porque tanto el valor 0 como un número negativo cualquiera dentro del rango de los valores permitidos, es un número Integer o Double , por tanto, tienes que verificar en SEGUNDO LUGAR si el valor de las variables 'c' o 'disponible' es igual o menor que cero para abandonar el procedimiento.

    Si las variables en lugar de ser Integer son Double, entonces utilizarías el método TryParse de la estructura Double:

        Dim c, disponible As Double
    
        If ((Not Double.TryParse(Tbcantidadpedido.Text, c)) OrElse (c <= 0)) Then
    
        If ((Not Double.TryParse(TBcantidadisponibel.Text, disponible)) OrElse (disponible <= 0)) Then

    NOTA:

    Aprovecho el mensaje para comentarte lo siguiente.

    Observo que has iniciado bastantes conversaciones cuyo Asunto poco tiene que ver con lo que realmente explicas en el mensaje:

        como puedo hacer porfavor

        buenas como estas

        tengo una duda grande

        tengo una duda

    Me imagino que la duda de ésta última pregunta es más pequeña que la anterior. ;-)

    Si admites un consejo de una persona que lleva ya bastantes años frecuentando y participando activamente en foros, te comento que esos son Asuntos que deberías de evitar utilizarlos en tus mensajes, si deseas que alguien del foro te ayude de verdad. Tienes que limitarte a explicar brevemente el problema o duda que realmente tienes.

    Yo comprendo que puede que sea difícil escribir un buen Asunto, pero al menos, que se vea que lo intentas. ¿OK?

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    viernes, 15 de junio de 2018 9:42
    Moderador