none
GUARDAR TRUE O FALSE EN UNA TABLA EN SQL RRS feed

  • Pregunta

  • Hola,

    Alguien me puede ayudar con los siguiente, tengo un formulario y agregue un checkbox, requiero que cuando se marque este me lleve un 1 a una columna de una tabla en SQL y si se deja en blanco lleve 0 a otra columna de la tabla en SQL.

    Tengo esta conexion a mi base de datos, donde lista es el nombre de la columna en sql

     Function ingreso(ByVal lista As Boolean) As String

            Dim resultado As String = ""

            Try
                ingresar = New SqlCommand("insert into validar(lista) values(" & lista & ")", conexiones)
                ingresar.ExecuteNonQuery()
                resultado = "Se ha reservado correctamente"
                'conexiones.Close()

            Catch ex As Exception
                resultado = "No se pudo realizar la Reservacion"
                'conexiones.Close()

            End Try
            Return resultado
        End Function

    y tengo este codigo que la idea es que cuando le de guardar me lleve la información a sql

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            MsgBox(ingreso(Me.CheckBox1.Checked))

    Muchas gracias.

    martes, 23 de enero de 2018 19:41

Respuestas

  • Fíjate en esta línea:

     ingresar = New SqlCommand("insert into validar(lista) values(" & lista & ")", conexiones)

    Ahí estás concatenando la variable lista en un string. Y lista es de tipo Boolean. ¿Qué sucede cuando concatenas un Boolean en un String? Pues que concatena "True" o "False". Luego el texto de la sentencia va a quedar así:

    "insert into validar(lista) values(True)"

    Evidentemente, eso no es una sintaxis correcta en lenguaje SQL. Para grabar un campo de tip "bit" se necesita poner 1 o 0, no True o False. Una de las muchas formas de conseguirlo es esta:

     ingresar = New SqlCommand("insert into validar(lista) values(" & IIF(lista,1,0) & ")", conexiones)

    • Propuesto como respuesta Pablo Rubio martes, 23 de enero de 2018 22:52
    • Marcado como respuesta Pablo Rubio martes, 23 de enero de 2018 22:52
    martes, 23 de enero de 2018 19:49
  • Muchas gracias por su colaboración.

    Funcionó perfectamente, una pregunta mas y que pena, y como se haría para que en vez de llevar true o false llevara 1 ó 0?

    tendrias que cambiar el tipo de dato y ponerle un tinyint.

    el sql no se realmente como trabaja en ese punto pero hay consultas que te retorna 1 y 0 y en otras ves que dice true y false, aunque te dire que cuando mandas a insertar o actualizar realmente le envias un 1 o un 0, cuando declaras un parametro de tipo bit lo que el recibe es un 1 o un 0 y si le pones un valor por defalult este tiene que ser un 1 o un 0


    Att. Franklin Andino

    Muchas gracias nuevamente, ya realicé el cambio en el tipo de dato en sqlserver.

    y agregué una linea que me facilitaron en el foro (Alberto Poblacion)

    ingresar = New SqlCommand("insert into validar(lista) values(" & IIF(lista,1,0) & ")", conexiones) y funciona perfectamente. Muchas gracias por su colaboración.

    • Marcado como respuesta Pablo Rubio martes, 23 de enero de 2018 22:52
    martes, 23 de enero de 2018 20:22

Todas las respuestas

  • Fíjate en esta línea:

     ingresar = New SqlCommand("insert into validar(lista) values(" & lista & ")", conexiones)

    Ahí estás concatenando la variable lista en un string. Y lista es de tipo Boolean. ¿Qué sucede cuando concatenas un Boolean en un String? Pues que concatena "True" o "False". Luego el texto de la sentencia va a quedar así:

    "insert into validar(lista) values(True)"

    Evidentemente, eso no es una sintaxis correcta en lenguaje SQL. Para grabar un campo de tip "bit" se necesita poner 1 o 0, no True o False. Una de las muchas formas de conseguirlo es esta:

     ingresar = New SqlCommand("insert into validar(lista) values(" & IIF(lista,1,0) & ")", conexiones)

    • Propuesto como respuesta Pablo Rubio martes, 23 de enero de 2018 22:52
    • Marcado como respuesta Pablo Rubio martes, 23 de enero de 2018 22:52
    martes, 23 de enero de 2018 19:49
  • Hola,

    Alguien me puede ayudar con los siguiente, tengo un formulario y agregue un checkbox, requiero que cuando se marque este me lleve un 1 a una columna de una tabla en SQL y si se deja en blanco lleve 0 a otra columna de la tabla en SQL.

    Tengo esta conexion a mi base de datos, donde lista es el nombre de la columna en sql

     Function ingreso(ByVal lista As Boolean) As String

            Dim resultado As String = ""

            Try
                ingresar = New SqlCommand("insert into validar(lista) values(" & lista & ")", conexiones)
                ingresar.ExecuteNonQuery()
                resultado = "Se ha reservado correctamente"
                'conexiones.Close()

            Catch ex As Exception
                resultado = "No se pudo realizar la Reservacion"
                'conexiones.Close()

            End Try
            Return resultado
        End Function

    y tengo este codigo que la idea es que cuando le de guardar me lleve la información a sql

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            MsgBox(ingreso(Me.CheckBox1.Checked))

    Muchas gracias.

    ingresar = New SqlCommand("insert into validar(lista) values(" & lista.ToString()
    & ")", conexiones)

    Att. Franklin Andino

    martes, 23 de enero de 2018 19:53
  • Muchas gracias por su colaboración.

    Funcionó perfectamente, una pregunta mas y que pena, y como se haría para que en vez de llevar true o false llevara 1 ó 0?

    martes, 23 de enero de 2018 19:56
  •  como se haría para que en vez de llevar true o false llevara 1 ó 0?

    Ya está hecho. Eso es precisamente lo que te he puesto en la respuesta. El IIF(lista,1,0) precisamente lo que hace es cambiar el true/false por 1/0.
    martes, 23 de enero de 2018 20:05
  • Hola,

    Alguien me puede ayudar con los siguiente, tengo un formulario y agregue un checkbox, requiero que cuando se marque este me lleve un 1 a una columna de una tabla en SQL y si se deja en blanco lleve 0 a otra columna de la tabla en SQL.

    Tengo esta conexion a mi base de datos, donde lista es el nombre de la columna en sql

     Function ingreso(ByVal lista As Boolean) As String

            Dim resultado As String = ""

            Try
                ingresar = New SqlCommand("insert into validar(lista) values(" & lista & ")", conexiones)
                ingresar.ExecuteNonQuery()
                resultado = "Se ha reservado correctamente"
                'conexiones.Close()

            Catch ex As Exception
                resultado = "No se pudo realizar la Reservacion"
                'conexiones.Close()

            End Try
            Return resultado
        End Function

    y tengo este codigo que la idea es que cuando le de guardar me lleve la información a sql

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            MsgBox(ingreso(Me.CheckBox1.Checked))

    Muchas gracias.

    ingresar = New SqlCommand("insert into validar(lista) values(" & lista.ToString()
    & ")", conexiones)

    Att. Franklin Andino


    Franklin Muchas gracias por tu ayuda, pero al utilizar el código que me enviaste no me lleva ningún dato la base de datos de sqlserver.
    martes, 23 de enero de 2018 20:08
  • Muchas gracias por su colaboración.

    Funcionó perfectamente, una pregunta mas y que pena, y como se haría para que en vez de llevar true o false llevara 1 ó 0?

    tendrias que cambiar el tipo de dato y ponerle un tinyint.

    el sql no se realmente como trabaja en ese punto pero hay consultas que te retorna 1 y 0 y en otras ves que dice true y false, aunque te dire que cuando mandas a insertar o actualizar realmente le envias un 1 o un 0, cuando declaras un parametro de tipo bit lo que el recibe es un 1 o un 0 y si le pones un valor por defalult este tiene que ser un 1 o un 0


    Att. Franklin Andino

    martes, 23 de enero de 2018 20:08
  • ...(" & lista.ToString() & ...
    No, eso no sirve absolutamente para nada. El operador de concatenación "&" precisamente lo que hace es llamar al .ToString() del objeto que se concatena, por lo que resulta completamente superfluo escribir expresamente el .ToString().
    martes, 23 de enero de 2018 20:08
  • Muchas gracias por su colaboración.

    Funcionó perfectamente, una pregunta mas y que pena, y como se haría para que en vez de llevar true o false llevara 1 ó 0?

    Hola Wilmar has lo siguiente:

    int valor = CheckBox.Checked ? 1 : 0; ==> Esto es código C#

    creo en visual basic quedaría así Dim valor AS int =  CheckBox.Checked ? 1:0;

    Si la persona a marcado el Checkbox que es true le pasa 1 si no 0 y usas la variable para guardar ese valor.

    Espero te sirva

    martes, 23 de enero de 2018 20:13
  •  como se haría para que en vez de llevar true o false llevara 1 ó 0?

    Ya está hecho. Eso es precisamente lo que te he puesto en la respuesta. El IIF(lista,1,0) precisamente lo que hace es cambiar el true/false por 1/0.

    Muchas gracias.

    el inconveniente que tenia era el tipo de dato que tenia configurado en SQLSERVER (BIT), por tal motivo me llevaba la informacion como TRUE o FALSE, cambié el tipo de dato por (NVARCHAR) y ya me lleva el dato como 1 ó 0.

    De ante mano muchas gracias por su colaboración.

    martes, 23 de enero de 2018 20:18
  • Muchas gracias por su colaboración.

    Funcionó perfectamente, una pregunta mas y que pena, y como se haría para que en vez de llevar true o false llevara 1 ó 0?

    tendrias que cambiar el tipo de dato y ponerle un tinyint.

    el sql no se realmente como trabaja en ese punto pero hay consultas que te retorna 1 y 0 y en otras ves que dice true y false, aunque te dire que cuando mandas a insertar o actualizar realmente le envias un 1 o un 0, cuando declaras un parametro de tipo bit lo que el recibe es un 1 o un 0 y si le pones un valor por defalult este tiene que ser un 1 o un 0


    Att. Franklin Andino

    Muchas gracias nuevamente, ya realicé el cambio en el tipo de dato en sqlserver.

    y agregué una linea que me facilitaron en el foro (Alberto Poblacion)

    ingresar = New SqlCommand("insert into validar(lista) values(" & IIF(lista,1,0) & ")", conexiones) y funciona perfectamente. Muchas gracias por su colaboración.

    • Marcado como respuesta Pablo Rubio martes, 23 de enero de 2018 22:52
    martes, 23 de enero de 2018 20:22
  • Muchas gracias por su colaboración.

    Funcionó perfectamente, una pregunta mas y que pena, y como se haría para que en vez de llevar true o false llevara 1 ó 0?

    Hola Wilmar has lo siguiente:

    int valor = CheckBox.Checked ? 1 : 0; ==> Esto es código C#

    creo en visual basic quedaría así Dim valor AS int =  CheckBox.Checked ? 1:0;

    Si la persona a marcado el Checkbox que es true le pasa 1 si no 0 y usas la variable para guardar ese valor.

    Espero te sirva


    Muchas gracias por tu información.
    martes, 23 de enero de 2018 20:30