[firebase-br] Alguém me ajude POR FAVOR!!!
Francielo J. Isotton
darkisotton em yahoo.com.br
Qua Jun 1 16:52:24 -03 2005
Poderia disparar a procedure via aplicação.
Antonio Bonelli Junior escreveu:
>Rafael,
>
>Da forma que vc falou eu estaria atualizando o saldo só do lançamento que
>estou incluindo/alterando, correto?
>
>Se eu estiver alterando um lançto do dia 25/05/2005, o saldo deste será
>atualizado, porém os lançtos de 26/05/2005 em diante não serão
>atualizados. É aí que está o problema, preciso atualizar tanto o lançto
>que estou alterando quanto os demais.
>
>[]s
>Junior
>
>
>
>
>>Junior,
>>
>>Faz o seguinte, altere esse SP para fazer o cálculo do saldo anterior e
>>retorne para dentro do trigger. Se o valor que vc deseja alterar for
>>apenas
>>do registro que está sendo incluído ou alterado então com certeza
>>funciona.
>>Faz o teste. ;)
>>
>>Não se esqueça de colocar as condições de tipo de lançamento no trigger e
>>altere o valor usando NEW.SALDO.
>>
>>[]s,
>>
>>Rafael Cabral
>>
>>-----Original Message-----
>>From: lista-bounces em firebase.com.br
>>[mailto:lista-bounces em firebase.com.br]On Behalf Of Antonio Bonelli
>>Junior
>>Sent: quarta-feira, 1 de junho de 2005 15:40
>>To: FireBase
>>Subject: Re: [firebase-br] Alguém me ajude POR FAVOR!!!
>>
>>
>>Obrigago Cantu, mas não querendo abusar, como posso fazer então para
>>atualizar esse campo "Saldo" quando incluir ou alterar um determinado
>>registro na tabela?
>>
>>[]s
>>Junior
>>
>>
>>
>>
>>>Você está criando um loop infinito, pois a procedure atualiza
>>>registros na tabela, e o trigger da tabela chama a procedure, e o
>>>processo se repete infinitamente...
>>>
>>>[]s
>>>Cantu
>>>http://www.warmboot.com.br
>>>FireBase - http://www.FireBase.com.br
>>>
>>>ABJ> Boa tarde a todos!
>>>
>>>ABJ> Desculpem a insistência, mas estou precisando muito resolver o
>>>problema na
>>>ABJ> SP que estou utilizando para atualizar saldos bancários.
>>>
>>>ABJ> Tenho a necessidade de atualizar saldos a cada registro
>>>inserido/alterado
>>>ABJ> em minha tabela e através de exemplos postados na lista criei a
>>>procedure
>>>ABJ> abaixo, porém ao ser executada é retornado o seguinte erro: "Too
>>>many
>>>ABJ> concurrent executions of the same request".
>>>
>>>ABJ> Pergunto: Como posso resolver esse problema, pois necessito
>>>(realmente) do
>>>ABJ> saldo em cada registro da tabela?
>>>
>>>ABJ> Se alguém tiver alguma idéia, POR FAVOR, me ajude...
>>>
>>>ABJ> Obrigado
>>>ABJ> Junior
>>>
>>>
>>>ABJ> *** Procedure ***
>>>ABJ> ================ABJ> CREATE PROCEDURE ATUALIZARSALDOS (
>>>ABJ> DATALANCTO DATE,
>>>ABJ> CODCONTA INTEGER)
>>>ABJ> AS
>>>ABJ> DECLARE VARIABLE ULTIMOLANCTO INTEGER;
>>>ABJ> DECLARE VARIABLE SALDOANTERIOR NUMERIC(15,2) = 0;
>>>ABJ> DECLARE VARIABLE NROLANBCO INTEGER;
>>>ABJ> DECLARE VARIABLE TIPOLANCTO VARCHAR(1);
>>>ABJ> DECLARE VARIABLE VALORLANCTO NUMERIC(15,2);
>>>ABJ> BEGIN
>>>ABJ> SELECT MAX(NroLanBco)
>>>ABJ> FROM MovBancario
>>>ABJ> WHERE CodConta = :CodConta AND DataLancto < :DataLancto
>>>ABJ> INTO :UltimoLancto;
>>>
>>>ABJ> SELECT Saldo
>>>ABJ> FROM MovBancario
>>>ABJ> WHERE NroLanBco = :UltimoLancto
>>>ABJ> INTO :SaldoAnterior;
>>>
>>>ABJ> FOR SELECT NroLanBco, TipoLancto, ValorLancto
>>>ABJ> FROM MovBancario
>>>ABJ> WHERE CodConta = :CodConta AND DataLancto >= :DataLancto
>>>ABJ> ORDER BY DataLancto, NroLanBco
>>>ABJ> INTO :NroLanBco, :TipoLancto, :ValorLancto
>>>ABJ> DO
>>>ABJ> BEGIN
>>>ABJ> IF (:TipoLancto = 'C') THEN BEGIN
>>>ABJ> SaldoAnterior = :SaldoAnterior + :ValorLancto;
>>>ABJ> END ELSE BEGIN
>>>ABJ> SaldoAnterior = :SaldoAnterior - :ValorLancto;
>>>ABJ> END
>>>ABJ> UPDATE MovBancario
>>>ABJ> SET Saldo = :SaldoAnterior
>>>ABJ> WHERE NroLanBco = :NroLanBco;
>>>ABJ> END
>>>ABJ> END
>>>
>>>ABJ> *** Trigger ***
>>>ABJ> ==============ABJ> CREATE TRIGGER T_MOVBANCARIO_AI FOR MOVBANCARIO
>>>ABJ> ACTIVE AFTER INSERT OR UPDATE POSITION 0
>>>ABJ> AS
>>>ABJ> BEGIN
>>>ABJ> EXECUTE PROCEDURE AtualizarSaldos(New.DataLancto, New.CodConta);>
>>>
>>>
>>ABJ> 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
>>>
>>>
>>>
>>______________________________________________
>>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
>>
>>
>>
>>______________________________________________
>>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
>>
>>
>>
>
>
>______________________________________________
>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
>
>
>
____________________________________________________
Yahoo! Mail, cada vez melhor: agora com 1GB de espaço grátis! http://mail.yahoo.com.br
Mais detalhes sobre a lista de discussão lista