IcebergDelphi
10-09-2007, 23:43:14
Hola Amigos llevo un dia batallando con un store procedure que necesito que cada que se haga un pago en la tabla de detalles , se actualize el total en la tabla principal o padre, mi store procedure en Firebird lo tengo de la siguiente manera:
SET TERM ^ ;
CREATE PROCEDURE "Sumariza_TablaPagos" (
"Pe_DIdPagos" INTEGER,
"Pe_IdGrupo" INTEGER)
AS
DECLARE VARIABLE "V_TotBonificacion" NUMERIC(10,2);
DECLARE VARIABLE "V_TotReservas" NUMERIC(10,2);
DECLARE VARIABLE "V_TotContingencia" NUMERIC(10,2);
DECLARE VARIABLE "V_TotCxS" NUMERIC(10,2);
DECLARE VARIABLE "V_TotInteres" NUMERIC(10,2);
DECLARE VARIABLE "V_TotCapital" NUMERIC(10,2);
DECLARE VARIABLE "V_TotMontoPagado" NUMERIC(10,2);
begin
For Select Sum("DetallePagos"."MontoPagado")as Pago,Sum("DetallePagos"."Capital")as Capital,Sum("DetallePagos"."Interes") as Interes
From "DetallePagos"
Where "DetallePagos"."StatusPago"='PAGADO' and "DetallePagos"."D_IdPagos"=:"Pe_DIdPagos" and "DetallePagos"."DP_ClaveGrupo"=:"Pe_IdGrupo"
group by "DetallePagos"."D_IdPagos"
Into :"V_TotMontoPagado",:"V_TotCapital",:"V_TotInteres"
/*Actualizamos la Tabla Pagos Con los Parametros registrados*/
Do Begin
Update "Pagos"
Set "Pagos"."TotalPagos"=:"V_TotMontoPagado","Pagos"."TotCapital"=:"V_TotCapital","Pagos"."TotInteres"=:"V_TotInteres"
Where "Pagos"."IdPagos"=:"Pe_DIdPagos" and "Pagos"."P_IdGrupo"=:"Pe_IdGrupo";
end
end
^
Ya en Delphi Uso un Componente del FibPlus el Store Procedure y cada que se hace un pago en la Tabla detalle lo llamo de la siguiente manera:
V_IdPagos:=DataModuloMain.TDetallePagosD_IdPagos.Value;
V_ClaveGrupo:=DataModuloMain.TDetallePagosDP_ClaveGrupo.Value;
//Generamos La suma a la Tabla Pagos
With Sp_SumarizaTablaPagos Do
Begin
StoredProcName:='Sumariza_TablaPagos';
Prepare;
Params[0].AsInteger:=V_IdPagos;
Params[1].AsInteger:=V_ClaveGrupo;
Transaction.StartTransaction;
ExecProc;
Transaction.CommitRetaining;
End;
No se por que no me actuliza nada desde Delphi, en Cambio dentro de Firebird si ejecuto el Procedimiento con los parametros dados se ejecuta demaciado bien.
Espero que alguien pueda ayudarme gracias.
SET TERM ^ ;
CREATE PROCEDURE "Sumariza_TablaPagos" (
"Pe_DIdPagos" INTEGER,
"Pe_IdGrupo" INTEGER)
AS
DECLARE VARIABLE "V_TotBonificacion" NUMERIC(10,2);
DECLARE VARIABLE "V_TotReservas" NUMERIC(10,2);
DECLARE VARIABLE "V_TotContingencia" NUMERIC(10,2);
DECLARE VARIABLE "V_TotCxS" NUMERIC(10,2);
DECLARE VARIABLE "V_TotInteres" NUMERIC(10,2);
DECLARE VARIABLE "V_TotCapital" NUMERIC(10,2);
DECLARE VARIABLE "V_TotMontoPagado" NUMERIC(10,2);
begin
For Select Sum("DetallePagos"."MontoPagado")as Pago,Sum("DetallePagos"."Capital")as Capital,Sum("DetallePagos"."Interes") as Interes
From "DetallePagos"
Where "DetallePagos"."StatusPago"='PAGADO' and "DetallePagos"."D_IdPagos"=:"Pe_DIdPagos" and "DetallePagos"."DP_ClaveGrupo"=:"Pe_IdGrupo"
group by "DetallePagos"."D_IdPagos"
Into :"V_TotMontoPagado",:"V_TotCapital",:"V_TotInteres"
/*Actualizamos la Tabla Pagos Con los Parametros registrados*/
Do Begin
Update "Pagos"
Set "Pagos"."TotalPagos"=:"V_TotMontoPagado","Pagos"."TotCapital"=:"V_TotCapital","Pagos"."TotInteres"=:"V_TotInteres"
Where "Pagos"."IdPagos"=:"Pe_DIdPagos" and "Pagos"."P_IdGrupo"=:"Pe_IdGrupo";
end
end
^
Ya en Delphi Uso un Componente del FibPlus el Store Procedure y cada que se hace un pago en la Tabla detalle lo llamo de la siguiente manera:
V_IdPagos:=DataModuloMain.TDetallePagosD_IdPagos.Value;
V_ClaveGrupo:=DataModuloMain.TDetallePagosDP_ClaveGrupo.Value;
//Generamos La suma a la Tabla Pagos
With Sp_SumarizaTablaPagos Do
Begin
StoredProcName:='Sumariza_TablaPagos';
Prepare;
Params[0].AsInteger:=V_IdPagos;
Params[1].AsInteger:=V_ClaveGrupo;
Transaction.StartTransaction;
ExecProc;
Transaction.CommitRetaining;
End;
No se por que no me actuliza nada desde Delphi, en Cambio dentro de Firebird si ejecuto el Procedimiento con los parametros dados se ejecuta demaciado bien.
Espero que alguien pueda ayudarme gracias.