Ver Mensaje Individual
  #10  
Antiguo 12-04-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Reputación: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Te da errores porque lo hemos escrito de memoria, sin probar.
Crea primero el procedure:
Código SQL [-]
CREATE OR ALTER PROCEDURE REVERSARINVENTARIO (NUMEROFACTURA INTEGER)
AS
DECLARE VARIABLE CodigoArticulo integer; 
DECLARE VARIABLE CantidadARticulos integer;
BEGIN
   for select 
       Codigo, Cantidad
     from DETALLES
     where Numero=:NumeroFactura
     into :CodigoArticulo, 
          :CantidadArticulos
     do begin
      update Inventario
    set Existencia=Existencia + :CantidadArticulos
    where Codigo=:CodigoArticulo;
   end
END
Y luego el trigger:
Código SQL [-]
CREATE TRIGGER FACTURAS_AU0 FOR FACTURAS AFTER UPDATE
AS
begin
     if ((old.Estado<>new.Estado) and (new.Estado='*')) then
     begin        
       execute procedure ReversarInventario(old.Numero);
     end
end
Ahora, si en tu pantalla tienes un dbgrid, por ejemplo, y borras una factura, verás en la base de datos que se ha actualizado el campo existencias con la cantidad de la misma.
Saludos.
Responder Con Cita