[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