Hola Camilo.
Creo que podrías hacerte un procedimiento similar a este ejemplo:
Código Delphi
[-]
procedure UpdateInventory(qy: TIBQuery; const Cod: string;
const Cant: Integer; const Prec: Currency);
begin
qy.Close;
qy.SQL.Clear;
qy.SQL.Add('UPDATE INVENTARIO');
qy.SQL.Add('SET CANTIDAD = CANTIDAD + COALESCE(:CANTIDAD, 0),');
qy.SQL.Add('PRECIO = PRECIO + COALESCE(:PRECIO, 0)');
qy.SQL.Add('WHERE CODIGO_PRODUCTO = :CODIGO');
qy.ParamByName('CODIGO').AsString := Cod;
qy.ParamByName('CANTIDAD').AsInteger := Cant;
qy.ParamByName('PRECIO').AsCurrency := Prec;
qy.ExecSQL;
end;
Ejemplos de llamada,
Agrega 4 unidades e incrementa 15.5 el precio del producto código '1':
Código Delphi
[-]
UpdateInventory(IBQueryTmp, '1', 4, 15.5);
Decrementa 4 unidades y decrementa 15.5 el precio del producto código '1':
Código Delphi
[-]
UpdateInventory(IBQueryTmp, '1', -4, -15.5);
Saludos