[firebase-br] Alguém me ajude POR FAVOR!!!

Antonio Bonelli Junior junior em wwinfo.com.br
Qua Jun 1 17:00:39 -03 2005


Francielo,

Já tinha pensado nisso, mas como vi um exemplo na lista postado em
18/01/2005 com o assunto "Posicao do registro IBO x Firebird", achei que
pudesse colocar a rotina dentro do BD e não na aplicação. Tenho a
esperança ainda de poder fazer isso. De qualquer forma, obrigado.

[]s
Junior


> 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
>
>
> ______________________________________________
> 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