none
Valido un mensaje si los textbox estan vacios pero NO los toma como si estuvieran vació sin haber NADA alli RRS feed

  • Pregunta

  • Buenas, yo quiero hacer un msgbox que concatene varios resultados de las variables cuando los textbox estan vacios, pero no me muestra todo las variables. solo la primera cuando esta vacia el textbox lo que quiero es que me aparezca todas en un solo mensaje si esta vacio


    este es el codigo:

            Dim a As String = ""
            Dim b As String = ""
            Dim c As String = ""
            Dim d As String = ""
            Dim t As String = ""
            Dim f As String = ""
            Dim g As String = ""

            If (txtNombrespersonas.Text = "") Then
                a = " NOMBRE"
            ElseIf (txtApellidospersonas.Text = "") Then
                b = ",APELLIDO"
            ElseIf (txtCedulapersonas.Text = "") Then
                c = ",CEDULA"
            ElseIf (txtContactopersonas.Text = "") Then
                d = ",CONTACTO"
            ElseIf (TxtNombrefinca.Text = "") Then
                t = ",NOMBRE DE LA FINCA"
            ElseIf (TxtVariedad1.Text = "") Then
                f = ",VARIEDAD"
            ElseIf (TxtCuota.Text = "") Then
                g = ",CUOTA"
            End If
          
            If (txtNombrespersonas.Text = "") Or (txtApellidospersonas.Text = "") Or (txtCedulapersonas.Text = "") Or
                (txtContactopersonas.Text = "") Or (TxtNombrefinca.Text = "") Or (Text = "") Or (TxtCuota.Text = "") Then

                MsgBox("FALTAN ALGUNOS DATOS: " + a + b + c + d + t + f + g + ".", MsgBoxStyle.Critical, "ERROR DE REGISTRO")

            End If

    y lo que pasa es que NO me muestra el valor de las variables que van tomando cuando ya estan vacias

    sábado, 13 de mayo de 2017 23:48

Respuestas

  • En una estructura IF-ELSE sólo se ejecuta las instrucciones contenidas en la expresión condicional que resulte verdadera, el resto de instrucciones no se ejecutan, por tanto es de esperar el resultado que obtienes.

    Si deseas que todas las condiciones sean evaluadas de manera independiente debes crear una estructura IF para cada caso, por ejemplo:

    If (txtNombrespersonas.Text = "") Then
    	a = " NOMBRE"
    End If
    If (txtApellidospersonas.Text = "") Then
    	b = ",APELLIDO"
    End If

    Sin embargo, podrías simplificar la validación de la siguiente manera:

    Dim CamposVacios As String = String.Empty
    
    CamposVacios += String.Concat(
    		If(String.IsNullOrEmpty(txtNombrespersonas.Text), "Nombre, ", String.Empty),
    		If(String.IsNullOrEmpty(txtApellidosPersonas.Text), "Apellido, ", String.Empty),
    		If(String.IsNullOrEmpty(txtCedulaPersonas), "Cedula, ", String.Empty)
    	)
    
    If CamposVacios <> String.Empty Then
    	MessageBox.Show(String.Format("Falta ingresar los siguientes campos: {0}{1}{0}",
    					  Environment.NewLine,
    					  CamposVacios.TrimEnd(","c)))
    End If


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 14 de mayo de 2017 0:16

Todas las respuestas

  • En una estructura IF-ELSE sólo se ejecuta las instrucciones contenidas en la expresión condicional que resulte verdadera, el resto de instrucciones no se ejecutan, por tanto es de esperar el resultado que obtienes.

    Si deseas que todas las condiciones sean evaluadas de manera independiente debes crear una estructura IF para cada caso, por ejemplo:

    If (txtNombrespersonas.Text = "") Then
    	a = " NOMBRE"
    End If
    If (txtApellidospersonas.Text = "") Then
    	b = ",APELLIDO"
    End If

    Sin embargo, podrías simplificar la validación de la siguiente manera:

    Dim CamposVacios As String = String.Empty
    
    CamposVacios += String.Concat(
    		If(String.IsNullOrEmpty(txtNombrespersonas.Text), "Nombre, ", String.Empty),
    		If(String.IsNullOrEmpty(txtApellidosPersonas.Text), "Apellido, ", String.Empty),
    		If(String.IsNullOrEmpty(txtCedulaPersonas), "Cedula, ", String.Empty)
    	)
    
    If CamposVacios <> String.Empty Then
    	MessageBox.Show(String.Format("Falta ingresar los siguientes campos: {0}{1}{0}",
    					  Environment.NewLine,
    					  CamposVacios.TrimEnd(","c)))
    End If


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 14 de mayo de 2017 0:16
  • Muchas gracias por tu ayudad, ese era mi error.
    domingo, 14 de mayo de 2017 0:22