Ver Mensaje Individual
  #4  
Antiguo 11-11-2022
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 921
Reputación: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
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 [-]
{1: Recuperar registro de ventas}
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;

{2: Recuperar detalle de la venta}
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;

{3: Ciclo para recorrer detalle de ventas y Reversar stock a tabla Productos}

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;

{5: Eliminar Detalle de venta}
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;

{6: Eliminar venta}
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
Responder Con Cita