none
Incorrect syntax near '00'. quiro actualizar y me sale este error.. ayuda!!!! RRS feed

  • Pregunta

  • Imports System.Data
    Imports System.Data.SqlClient

    Public Class frminventario
        Private dt As New DataTable
     
        'conexion para boton guardar
        ' Dim conegu As New SqlConnection("data source=(local);initial catalog=dbventas; integrated security= true")
        'variables de conexionn para los demas botones
        Private cnsp As SqlConnection
        Private ds1p As DataSet
        Private da1p As SqlDataAdapter

     Private Sub btactualizar_Click(sender As System.Object, e As System.EventArgs) Handles btactualizar.Click
            If cnsp.State = ConnectionState.Closed Then
                cnsp.Open()

            End If

            Dim cmd1 As New SqlCommand("UPDATE productos set nombre_categoria='" & Me.cbnompro.Text & "', nombre='" & Me.txtnompro.Text & "', descripcion='" & Me.txtdespro.Text & "', stock=" & Me.txtprostock.Text & ", cantidad_ingreso=" & Me.txtinpro.Text & ", stock_cajas=" & Me.txtcaprosto.Text & ", ingreso_cajas=" & Me.txtincaja.Text & ", precio_compra=" & Me.txtprecou.Text & ", precio_venta_unitario=" & Me.txtpreveu.Text & ", precio_caja_compra=" & Me.txtprecoca.Text & ", contenido_caja=" & Me.txtnuproca.Text & ", precio_venta_caja=" & Me.txtpreveca.Text & ", fecha_vencimiento='" & Me.txtfeven.Text & "', nombre_proveedor='" & Me.txtnoprovee.Text & "', fecha_ingreso='" & Me.txtfein.Text & "', numero_factura='" & Me.txtnufa.Text & "'  where idproducto=" & Conversion.Int(Me.txtidpro.Text) & "", cnsp)
            cmd1.ExecuteNonQuery()
            MsgBox("Stock actualizado correctamente......", MsgBoxStyle.Information, "Confirmar")

            'actualizamos dtvpro

            Dim datos As New SqlDataAdapter("select * from productos where idproducto like'" & Me.txtbuspro.Text & "%'", cnsp)
            Dim ds1p As New DataSet()
            datos.Fill(ds1p, "productos")
            Me.dtvpro.DataSource = ds1p.Tables(0)

            If cnsp.State = ConnectionState.Open Then
                cnsp.Close()

            End If
            'llamamos al proceso limpiar
            limpiar()
        End Sub


    • Editado Mark182s jueves, 9 de abril de 2020 6:09
    jueves, 9 de abril de 2020 6:08

Todas las respuestas

  • Cuando te sale ese error, quiere decir que la sentencia SQL que finalmente resulta después de concatenar todo lo que estás concatenando resulta ser incorrecta.

    Es dificilísimo detectar a simple vista por qué es incorrecta, porque depende de los valores que haya en ese momento en los textboxes y también depende de los tipos de campos que haya en la base de datos (los de tipo texto tienen que ir entre comillas y los numéricos sin comillas).

    *Creo* que el problema puede ser una comilla superflua que has añadido justo al final de la sentencia, pero puede que haya más errores; como te digo, a simple vista y sin ver la sentencia final resultante es muy difícil detectar los errores.

    Para evitar estos problemas (y muchos otros que se pueden producir al concatenar datos en una sentencia SQL) no es recomendable construir sentencias concatenando de esta manera. En su lugar, hat que parametrizar la sentencia y meter los datos en los parámetros (no en la sentencia). Esto te evita el problema de las comillas, porque los parámetros se escriben en la sentencia sin encerrarlos entre comillas, y también facilita el verificar que los tipos de datos concuerdan con los que hay en la base de datos porque los pones en la definición del parámetro.

    jueves, 9 de abril de 2020 10:20