Estimado
kainchu3102,debe ser mas claro en la explicación de su duda o problema. Como le indica el colega
mRoman, esto podria ser implementado con triggers (Disparadores) en la base de datos.
A continuación le propongo una opción de acuerdo a lo que creo comprender de su problema...
Código Delphi
[-]
QVenta.Sql.Clear;
QVenta.Sql.Add('Select id_venta ');
QVenta.Sql.Add('from Ventas');
QVenta.Sql.Add('where id_venta=:id_Venta');
QVenta.ParamByName('id_venta').AsInteger:=Id_Venta;
QVenta.Open;
QVentaDet.Sql.Clear;
QVentaDet.Sql.Add('Select id_pro_detven, can_detven)'
QVentaDet.Sql.Add('From det_venta)'
QVentaDet.Sql.Add('Where id_ven_detven = :id_Venta)';
QVentaDet.ParamByName('id_venta').AsInteger:=Id_Venta;
QVentaDet.Open;
QReversaStock.SQL.Clear;
QReversaStock.SQL.Add('Update Producto');
QReversaStock.SQL.Add('SET producto.sto_prod = producto.sto_prod + :CANT1');
QReversaStock.SQL.Add('Where producto.id_prod = :PROD');
While not QVentaDet.Eof Do
begin
QReversaStock.Params.ParamByName('CANT1').AsInteger := QVentaDet.FieldByName('CAN_DETVEN').AsInteger;
QReversaStock.Params.ParamByName('PROD').AsInteger := QVentaDet.FieldByName('ID_PRO_DETVEN').AsInteger;
QReversaStock.ExecSQL;
QVentaDet.Next;
end;
QDelete.Sql.Clear;
QDelete.Sql.Add('Delete From Det_venta');
QDelete.Sql.Add('Where id_ven_detven = :ID_DETVENE');
QDelete.ParamByName('ID_DETVENE').AsInteger:=Id_Venta;
QDelete.ExecSQL;
QDelete.Sql.Clear;
QDelete.Sql.Add('Delete From Ventas');
QDelete.Sql.Add('Where id_venta = :ID_Venta');
QDelete.ParamByName('id_venta').AsInteger:=Id_Venta;
QDelete.ExecSQL;
Espero le ayude...Saludos cordiales