Hola Amigos del Club.
uso Delphi XE y BD - Firebird
Mi pregunta es la Siguiente:
Tengo una tabla que se llama Inventarios. Dentro de ella hay un campo que se llama Codigo_Producto este campo es la llave primaria. y entre otros tengo un campo que se llama cantidad.
Necesito actualizar la cantidad de los productos desde un DbGrideh. esto lo lo gro bien. es decir con el procedimiento que pongo a continuacion me actualiza correctamente el problema es que no me suma lo que hay en el inventario con el parametro que le doy. Ejemplo:
Tengo un producto cuya codigo es 100 y la cantidad en inventarios es 500. Cuando lo actualizo con una cantidad de 100 (Deberia darme 600) entonces lo que hace es reemplazar la cantidad de 500 por la de 100 es decir actualiza con el parametro pero no lo suma.
Por favor me puden guiar en esta inquietud; de antemano mil gracias.
Código Delphi
[-]
procedure TFCargaFactura.BitBtn1Click(Sender: TObject);
begin
DBGridEh1.DataSource.DataSet.First;
While not (DBGridEh1.DataSource.DataSet.Eof) do
begin
with IBQActualizaInventario do
begin
IBQActualizaInventario.Close;
ParamByName('CODIGO_PRODUCTO').AsString:= DbGrideH1.Columns[0].Field.AsString;
ParamByName('NOMBRE_PRODUCTO').AsString:= DbGrideH1.Columns[1].Field.AsString;
ParamByName('CANTIDAD').AsInteger:= DbGrideH1.Columns[2].Field.AsInteger;
ParamByName('PRECIO').AsFloat:= DbGrideH1.Columns[3].Field.AsFloat;
IBQActualizaInventario.Open;
DBGridEh1.DataSource.DataSet.Next;
end;
end;
DataModule1.IBT1.CommitRetaining;
DataModule1.IBTInventario.close;
DataModule1.IBTInventario.Open;
Showmessage('EL INVENTARIO SE ACTUALIZO CON EXITO');
end;
El Query desde el cual se hace la actualizacion es el siguiente
Código SQL
[-]
UPDATE OR INSERT INTO Inventario
(Codigo_Producto, Cantidad, Precio, Nombre_Producto )
VALUES (:Codigo_Producto, :Cantidad, :Precio, :Nombre_Producto)