none
update con access y visual basic RRS feed

  • Pregunta

  • Hola yo tengo este codigo, y me pasa que cuando quiero actualizar el stock de un articulo me cambia los valores de todos los articulos con ese codigo al mismo stock, tengo un campo id:autonumerico tambien como clave principal.

    Dim cnx As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Facturacion\Facturacion\Facturacion.mdb")
                Dim SQLUpdate As String
                SQLUpdate = "update Articulos set Codigo=@Codigo, Marca=@Marca, Nombre=@Nombre, Color=@Color, Talle=@Talle, Stock=@Stock, Precio=@Precio, PrecioLista=@PrecioLista where Codigo=@Codigo"
                Dim cmd As New OleDbCommand(SQLUpdate, cnx)
                cmd.CommandType = CommandType.Text
                cmd.Parameters.AddWithValue("@Codigo", TxtCodigo.Text)
                cmd.Parameters.AddWithValue("@Marca", ComboBox1.Text)
                cmd.Parameters.AddWithValue("@Nombre", TxtNombre.Text)
                cmd.Parameters.AddWithValue("@Color", TxtColor.Text)
                cmd.Parameters.AddWithValue("@Talle", TxtTalle.Text)
                cmd.Parameters.AddWithValue("@Stock", TxtStock.Text)
                cmd.Parameters.AddWithValue("@Precio", TxtPrecio.Text)
                cmd.Parameters.AddWithValue("@PrecioLista", TxtPrecioLista.Text)

    viernes, 6 de julio de 2012 21:22

Todas las respuestas

  • Efectivamente, la sentencia SQL que has escrito significa "actualizar todos los registros cuyo código sea @Codigo", y eso es exactamente lo que está haciendo, según lo que indicas en el enunciado de tu pregunta. Si en la tabla puede haber varios artículos diferentes con el mismo Codigo, y solo quieres actualizar el stock de uno de ellos, entonces en el WHERE de la sentencia tienes que añadir alguna condición que permita distinguir entre dichos artículos. Por ejemplo, podría ser el Id autonumérico, en cuyo caso pondrías "... WHERE Id=@Id" y en los Parameters indicarías el Id del que quieres actualizar. O bien, podrías poner una combinación de datos con AND que distinga el artículo de forma unívoca. Por ejemplo, si sabes que sólo puede haber un registro que tenga el mismo Codigo, Color y Talle, puedes cambiar el Stock así:

    SQLUpdate = "update Articulos set Stock=@Stock where Codigo=@Codigo and Color=@Color and Talle=@Talle"

    Obviamente, si la combinación de campos que identifican el registro es otra, tendrás que modificar la sentencia en consonancia.

    viernes, 6 de julio de 2012 23:18