none
error Conversion failed when converting the nvarchar value 'a23' to data type int. RRS feed

  • Pregunta

  • Buenas  compañeros 

    Llevo varios días intentando resolver este problema

    Tengo una tabla de ventas y el campo id es del tipo nvarchar(50), cuando agrego un nuevo registro me deja ingresar datos alfanumérico (Ej: a23) pero cuando intento modificar un dato distinto al alfanumérico (a23) al darle clic en el botón modificar me sale el siguiente error

    “Conversion failed when converting the nvarchar value 'a23' to data type int.” 

    Y cuando quiero modificar el dato alfanumérico (a23) me sale el siguiente error

    “Invalid column name 'a23'.”

    Este es el código que está en el botón “MODIFICAR”

    Dim cn As New SqlConnection(cnString)

                    Dim sqlQ As String = "UPDATE Productos SET  categoriaid = '" & cbxcategoria1.Text & "', descripcion = '" & txtdescripcion1.Text & "', codproveedor = '" & txtproveedor1.Text & "',stock ='" & txtstock1.Text & "', stockminimo ='" & txtstockmin1.Text & "', preciodecosto = '" & txtcosto1.Text & "', preciodeventa ='" & txtprecio1.Text & "', activo = '" & ActivoCheckBox.Text & "'  WHERE id = " & txtcodigo1.Text

                    Dim cmd As New SqlCommand(sqlQ, cn)

                    cn.Open()

                    cmd.ExecuteNonQuery()

                    cn.Close()

                   

    Desde da muchas gracias.

    Quedo atento

    Estoy trabajando en Microsoft Visual Basic 2010 Express




    • Editado Es-ti-ven jueves, 19 de octubre de 2017 21:20
    jueves, 19 de octubre de 2017 21:16

Respuestas

  • Using Cn As New SqlConnection(cnString)
    	Dim sqlQ = "UPDATE Productos SET categoriaid = @categoriaid, 
    				descripcion = @descripcion WHERE id = @id"
    
    	Dim cmd As New SqlCommand(sqlQ, Cn)
    
    	cmd.Parameters.AddWithValue("@categoriaid", cbxcategoria1.Text)
    	cmd.Parameters.AddWithValue("@descripcion", txtdescripcion1.Text)
    	cmd.Parameters.AddWithValue("@id", txtcodigo1.Text)
    
    	Cn.Open()
    	cmd.ExecuteNonQuery()
    End Using



    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    viernes, 20 de octubre de 2017 0:49

Todas las respuestas

  • Hola

    ¿Puede hacer un PRINT de la variable sqlQ antes de mandarla a ejecutar?

    Nos envia el resultado

    jueves, 19 de octubre de 2017 21:27
  • hola, a que te refieres exactamente, soy novato en ese cuento.

    gracias

    jueves, 19 de octubre de 2017 21:29
  • Hola

    El mensaje es claro, revisa bien campo a campo como estás actualizando, al parecer el valor "a23" lo estás queriendo insertar en un campo que en la tabla de tu Sql Server es de tipo int

    Revisa ello

    Saludos


    Brayan De la Cruz
    Lima - Perú

    jueves, 19 de octubre de 2017 21:35
  • Hola.

    EL campo id de la tabla ventas que es al que insertó el "a23" es de tipo nVarchar, no se como comvertir el .text en varchar 

    jueves, 19 de octubre de 2017 21:43
  • No es recomendable ejecutar un comando sql de la manera como lo vienes haciendo, debes parametrizar la consulta.

    Respecto al error, si el valor que intentas asignar es una cadena de caracteres entonces debes enmarcar la misma entre signos de apóstrofo (comillas simple)

    WHERE id = '" & txtcodigo1.Text & "'"


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    jueves, 19 de octubre de 2017 21:57
  • bueno, ya te lo recomendaron es con comillas, pruébalo y nos comentas.

    Saludos


    Brayan De la Cruz
    Lima - Perú

    jueves, 19 de octubre de 2017 22:19
  • Muchas  gracias Willams Morales error resuelto, con respecto a lo de parametrizar, me podrias porfavor indicar como seria?

    Muchas gracias.

    jueves, 19 de octubre de 2017 22:21
  • Using Cn As New SqlConnection(cnString)
    	Dim sqlQ = "UPDATE Productos SET categoriaid = @categoriaid, 
    				descripcion = @descripcion WHERE id = @id"
    
    	Dim cmd As New SqlCommand(sqlQ, Cn)
    
    	cmd.Parameters.AddWithValue("@categoriaid", cbxcategoria1.Text)
    	cmd.Parameters.AddWithValue("@descripcion", txtdescripcion1.Text)
    	cmd.Parameters.AddWithValue("@id", txtcodigo1.Text)
    
    	Cn.Open()
    	cmd.ExecuteNonQuery()
    End Using



    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    viernes, 20 de octubre de 2017 0:49