[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