Используйте компонент TAdoQuery с оператором SQL, например так:
ADOQuery.SQL.Text :=
'UPDATE product'
+ ' SET quantity = quantity - :quantity_delivered'
+ ' WHERE product_key = :product_key';
ADOQuery.Parameters.ParamByName('quantity_delivered').DataType := ftInteger;
ADOQuery.Parameters.ParamByName('quantity_delivered').Value := 42;
ADOQuery.Parameters.ParamByName('product_key').DataType := ftInteger;
ADOQuery.Parameters.ParamByName('product_key').Value := 123;
ADOQuery.ExecSQL;
Этот код работает с параметрами SQL.Это полезно для предотвращения взломов SQL-инъекций, поскольку значения параметров преобразуются и экранируются должным образом.
Поскольку вы не предоставили подробных сведений о разметке таблиц, мне пришлось привести еще один пример того, как это происходитготово!
Пожалуйста, проверьте тип данных первичного ключа таблицы product
или, тем не менее, вы идентифицируете один продукт и измените свойства параметра DataType
и Value
, а также идентификатор "product_key"
вКоманда SQL!
Вам также придется вставить переменную для значения параметра quantity_delivered
, так как вы, конечно, не хотите уменьшать количество на 42 каждый раз.