[firebase-br] Alguém me ajude POR FAVOR!!!
Eliomar
eliomar em promediconet.com.br
Qui Jun 2 08:51:24 -03 2005
Eu imagino que ficaria mais facil vc não ter o campo
saldo e sim fazer o calcula na hora que for preciso.
Por ex: vc quer um relatório que retorne os lançamentos
e saia na frente o saldo a cada lançamento? Então faça uma
SP para fazer isso e não uma SP para altera o saldo.
Agradecido.
Eliomar,
ICQ - 167715482
MSN - eliomar0910 em hotmail.com
Soft-Data Softwares Administrativos
hptt://www.promediconet.com.br
------------- Segue mensagem original! -------------
De: "Antonio Bonelli Junior" <junior em wwinfo.com.br>
Data: Wed, 1 Jun 2005 15:21:28 -0300 (BRT)
Para: lista em firebase.com.br
Assunto: [firebase-br] Alguém me ajude POR FAVOR!!!
Boa tarde a todos!
Desculpem a insistência, mas estou precisando muito resolver o problema na
SP que estou utilizando para atualizar saldos bancários.
Tenho a necessidade de atualizar saldos a cada registro inserido/alterado
em minha tabela e através de exemplos postados na lista criei a procedure
abaixo, porém ao ser executada é retornado o seguinte erro: "Too many
concurrent executions of the same request".
Pergunto: Como posso resolver esse problema, pois necessito (realmente) do
saldo em cada registro da tabela?
Se alguém tiver alguma idéia, POR FAVOR, me ajude...
Obrigado
Junior
*** Procedure ***
=================
CREATE PROCEDURE ATUALIZARSALDOS (
DATALANCTO DATE,
CODCONTA INTEGER)
AS
DECLARE VARIABLE ULTIMOLANCTO INTEGER;
DECLARE VARIABLE SALDOANTERIOR NUMERIC(15,2) = 0;
DECLARE VARIABLE NROLANBCO INTEGER;
DECLARE VARIABLE TIPOLANCTO VARCHAR(1);
DECLARE VARIABLE VALORLANCTO NUMERIC(15,2);
BEGIN
SELECT MAX(NroLanBco)
FROM MovBancario
WHERE CodConta = :CodConta AND DataLancto < :DataLancto
INTO :UltimoLancto;
SELECT Saldo
FROM MovBancario
WHERE NroLanBco = :UltimoLancto
INTO :SaldoAnterior;
FOR SELECT NroLanBco, TipoLancto, ValorLancto
FROM MovBancario
WHERE CodConta = :CodConta AND DataLancto >= :DataLancto
ORDER BY DataLancto, NroLanBco
INTO :NroLanBco, :TipoLancto, :ValorLancto
DO
BEGIN
IF (:TipoLancto = 'C') THEN BEGIN
SaldoAnterior = :SaldoAnterior + :ValorLancto;
END ELSE BEGIN
SaldoAnterior = :SaldoAnterior - :ValorLancto;
END
UPDATE MovBancario
SET Saldo = :SaldoAnterior
WHERE NroLanBco = :NroLanBco;
END
END
*** Trigger ***
===============
CREATE TRIGGER T_MOVBANCARIO_AI FOR MOVBANCARIO
ACTIVE AFTER INSERT OR UPDATE POSITION 0
AS
BEGIN
EXECUTE PROCEDURE AtualizarSaldos(New.DataLancto, New.CodConta);
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
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista