PDA

Ver la Versión Completa : Por que no se actualiza mi Maldito Store Procedure?


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.

RolphyReyes
11-09-2007, 15:17:11
Saludos.

Verifica el nivel de aislamiento que tienes en la transacción, tambien si tienes conectado el componente SP al componente de Transaction.

Puedes probar a poner AutoCommit en el componente de SP.

Hasta luego.

IcebergDelphi
11-09-2007, 15:28:53
Hola Miago gracias por tu respuesta, ayer mismo al terminar de escribir mi pregunta resolvi el problema, era solamente cambiar mi storeprocedure a otro form al salir de la actulizacion de los pagos, lo unico que faltaba era esperar que se refrescara la tabla maestra.

Saludos y gracias
PD.- Como sismpre me acabo de responder a mi mismo mis preguntas cada vez que termino de escribir aca en Club Delphi jejeje, saludos y gracias.