[firebase-br] Erro estranho

Zottis bzottis em ig.com.br
Qua Mar 20 18:32:43 -03 2013


Pessoal, ta acontecendo uma coisa muito doida

 

Tenho uma rotina no delphi que verifica se o valor pago(Inserido pelo
usuário) é menor, maior ou igual ao saldo da ContaAPagar Se ele for menor,
ele cadastra um pagamento e essa tabela pagamento tem um gatilho que soma

Os pagamentos e atualiza a tabela ContaAPagar

Se ele for maior ou igual ele cadastra um pagamento e já da baixa na conta

O que esta acontecendo é que quando a segunda opção é acionada(maior ou
igual)

Ele atualiza a tabela de contaAPagar e não dispara o gatilho.

 

Onde será que estou errando?

A  trigger é essa:

 

CREATE OR ALTER TRIGGER TG_SOMA_DEBITO FOR DEBITOS

INACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0

AS

begin

if (inserting) then

execute procedure sp_soma_debito(new.contano) ;

else

if ((deleting) or (updating)) then

execute procedure sp_soma_debito(Old.contano) ;

end

 

CREATE OR ALTER PROCEDURE SP_SOMA_DEBITO (

    conta_no integer)

as

declare variable total_pago numeric(15,2);

begin

select sum(d.valor)

  from debitos d

  where d.contano =:conta_no

  and deletado = 'N'

  into :total_pago;

 

if (:total_pago is null) then total_pago = 0;

 

  update ctapag

     set totalpago    = :total_pago

     where contano    = :conta_no;

end

 

e a rotina é essa:

              if Valor_pago_Lote  >= DadosZCE.CtaPagSALDO.Value then

                 begin

 

                   DadosZCE.DebitosVALOR.Value      :=
DadosZCE.CtaPagSALDO.Value;

                   Valor_Para_o_caixa                   :=
DadosZCE.CtaPagSALDO.Value;

                   dadoszce.Debitos.Post;

                   dadoszce.Debitos.ApplyUpdates;

                   //DadosZCE.MDOTransaction.CommitRetaining;//aqui tentei
comitar antes de atualizar a Conta a Pagar mas tambem nao adiantou

 

                  DadosZce.CtaPag.edit;

                  DadosZce.CtaPagPAGO.Value                :='S';

                  DadosZce.CtaPagDataPgto.Value            :=
DATA_CALENDARIO;

                  DadosZce.CtaPag.Post;

                  dadosZce.CtaPag.applyupdates;

                  //DadosZCE.MDOTransaction.CommitRetaining;

 

                 end else

              if Valor_pago_Lote  < DadosZCE.CtaPagSALDO.Value then

                begin

 

                   DadosZCE.Debitos.edit;

                   DadosZCE.DebitosVALOR.Value      := Valor_pago_Lote;

                   dadoszce.Debitos.Post;

                   dadoszce.Debitos.ApplyUpdates;

                   //DadosZCE.MDOTransaction.CommitRetaining;

 

                end;

 

        DadosZCE.MDOTransaction.CommitRetaining;

 




Mais detalhes sobre a lista de discussão lista