RES: [firebase-br] CORREÇÃO: SP Posicao do registro IBO x Firebird
RAMJ SISTEMAS & CONSULTORIA
jubrovolski em yahoo.com.br
Qua Jan 26 10:17:48 -03 2005
Caro Josauro
Como faço para executar esta procedure via código ( Dentro do Delphi ). No
caso estava atualizando quando do update, o que gerava o erro, mas há
situações em que o usuário alterará o valor de um lançamento havendo assim a
necessidade de atualizar os saldos posteriores.
Desculpe a "gonorância", ainda sou novo nisso de triggers, store procedures.
Venho do clipper, sabe como é.
Reuber
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Josauro S.J.
Enviada em: quarta-feira, 26 de janeiro de 2005 07:38
Para: FireBase
Assunto: Re: [firebase-br] CORREÇÃO: SP Posicao do registro IBO x Firebird
A sua procedure esta recursiva cada vez que voce atualiza o saldo a trigger
executa a novamente.
Josauro S.J.
Diretor
josauro em casasoft.inf.br
----- Original Message -----
From: RAMJ SISTEMAS & CONSULTORIA
To: 'FireBase'
Sent: Wednesday, January 26, 2005 8:30 AM
Subject: RES: [firebase-br] CORREÇÃO: SP Posicao do registro IBO x Firebird
Bom a Dia a todos
Criei a SP para o recalculo do saldo do caixa, porém agora esta dando um
erro quando da inserção/update do registro: Mensagem:
Too manu concurrent executions of the same request
Alguém poderia me ajudar? Ai vai a SP e o Trigger
****************************************** SP
SET TERM ^ ;
CREATE PROCEDURE SALDOCAIXA (
DATA DATE,
CAIXA INTEGER)
AS
DECLARE VARIABLE ULTLANCTO INTEGER;
DECLARE VARIABLE SALDOANT NUMERIC(15,2); DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE TIPO VARCHAR(1); DECLARE VARIABLE VALOR NUMERIC(15,2);
begin
select Max(NUMLAN) from MOVCAIXA where DATALAN<:DATA and CODCAIXA =
:CAIXA into :ULTLANCTO; /* Aki eu estou solicitando o ID do ultimo
lançamento até o dia 01/01/2005 */
select SALDOAT from MOVCaixa where NUMLAN=:ULTLANCTO and CODCAIXA =
:CAIXA into :SALDOANT; /* Aki eu consegui achar o valor do ultimo saldo
antes do dia 02/01/2005 */
for select NUMLAN,TIPOLAN,VALORLAN from MOVCaixa where DataLAN>=:DATA
order by DATALAN,TIPOLAN,NUMLAN into :ID,:TIPO,:VALOR do
begin
if (:TIPO='C') then begin
SALDOANT=:SALDOANT+:VALOR;
end else begin
SALDOANT=:SALDOANT-:VALOR;
end
update MOVcaixa set SALDOAT=:SALDOANT where NUMLAN=:ID;
end
end
^
SET TERM ; ^
GRANT SELECT,UPDATE ON MOVCAIXA TO PROCEDURE SALDOCAIXA;
GRANT EXECUTE ON PROCEDURE SALDOCAIXA TO SYSDBA;
*************************************************** TRIGGER SET TERM ^ ;
CREATE TRIGGER RECALSALDOCAIXA FOR MOVCAIXA ACTIVE AFTER INSERT OR UPDATE
POSITION 0 AS begin
EXECUTE PROCEDURE SALDOCAIXA(NEW.DATALAN,NEW.CODCAIXA);
/* Trigger text */
end
^
**************************************************
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Mais detalhes sobre a lista de discussão lista