[firebase-br] Trigger x Select III (Se alguém mais puder me ajudar) ... Roger 27/04/06
Roger
roger em dgpram.com.br
Qui Abr 27 08:10:41 -03 2006
Olá Luiz, obrigado por enquanto ...
Se alguém souber me explicar o que poderia estar acontecento ... agradeço
...
[]´s Roger
-----Mensagem original-----
De: RedDevil [mailto:reddevil em reddevil.eti.br]
Enviada em: quarta-feira, 26 de abril de 2006 19:09
Para: Roger
Assunto: Re: [firebase-br] Trigger x Select II ... Roger 26/04/06
ola Roger,
putz, este teu caso aqui esta extremamente estranho...
eu nao sei te dizer o "porque" de a historia nao ter funcionado antes no
"after" (e agora nem no "before"...;o).
o que eu fiz foi pegar o codigo que voce tinha postado na lista, criar aqui
uma Trigger começando da seguinte maneira:
create trigger athena for medicamentos
active before insert or update position 0
e entao eu consegui fazer um select no inicio da Trigger e usar o resultado
desse select em qualquer parte da Trigger...
[]s
força sempre!!!
ate +++
--
Luiz "RedDevil" Stefanski - Linux User #399026
http://www.RedDevil.eti.br - Delphi 4 Powered by IBObjects
exemplos e dicas sobre o IBObjects:
http://www.RedDevil.eti.br/ibob.htm
usando o IBExpert no Linux:
http://www.firebase.com.br/fb/artigo.php?id=1366
----- Original Message -----
From: "Roger" <roger em dgpram.com.br>
To: "RedDevil" <reddevil em reddevil.eti.br>
Sent: Wednesday, April 26, 2006 3:26 PM
Subject: RES: [firebase-br] Trigger x Select II ... Roger 26/04/06
> Olá Luiz, boa tarde !!
>
> Realmente após vários testes por aqui, não sei por que motivo, mas nem no
> "BEFORE" nem no "AFTER" consigo resultado desejado envolvendo a variável
> "nparcelas". Aliás pela lógica construída até aqui, na verdade precisaria
> usar isto no "AFTER" (mas nada que não desse para mudar).
>
> Tomei a liberdade de lhe transcrever a rotina toda logo abaixo. Se, por
> curiosidade vc quiser analisar, agradeço.
>
> []´s Roger
>
>
/***************************************************************************
> ***/
> /**** Generated by IBExpert 26/04/2006 15:13:13
> ****/
>
/***************************************************************************
> ***/
>
> SET SQL DIALECT 3;
>
> SET NAMES WIN1252;
>
>
> SET TERM ^ ;
>
>
> CREATE TRIGGER REQUISICOES_BU1 FOR REQUISICOES
> ACTIVE BEFORE UPDATE POSITION 0
> AS
> declare variable I integer;
> declare variable NParcelas integer;
> declare variable Entrada char(1);
> declare variable dias00 integer;
> declare variable dias01 integer;
> declare variable dias02 integer;
> declare variable dias03 integer;
> declare variable dias04 integer;
> declare variable dias05 integer;
> declare variable dias06 integer;
> declare variable dias07 integer;
> declare variable dias08 integer;
> declare variable dias09 integer;
> declare variable dias10 integer;
> declare variable VParcela numeric(15,2);
> declare variable VParcelas numeric(15,2);
> declare variable TParcelas numeric(15,2);
>
> begin
> /* Trigger text */
> if ((new.req_impressao='T') and (new.req_impressao<>old.req_impressao))
> then
> begin
> /* Inserir em Estoques */
> execute procedure insere_estoque('Q',new.req_id);
> /*/
> select c.cnd_parcelas, c.cnd_entrada, c.cnd_dias01, c.cnd_dias02,
> c.cnd_dias03, c.cnd_dias04,
> c.cnd_dias05, c.cnd_dias06, c.cnd_dias07, c.cnd_dias08,
> c.cnd_dias09, c.cnd_dias10
> from condicoes c where c.cnd_id = new.cnd_id
> into nparcelas, entrada, dias01, dias02, dias03, dias04, dias05,
> dias06, dias07, dias08, dias09, dias10;
> /* inserir MF (a vista) */
> if (new.req_valorrecebido > 0) then
> begin
> /*
> select c.cnd_parcelas, c.cnd_entrada, c.cnd_dias01, c.cnd_dias02,
> c.cnd_dias03, c.cnd_dias04,
> c.cnd_dias05, c.cnd_dias06, c.cnd_dias07, c.cnd_dias08,
> c.cnd_dias09, c.cnd_dias10
> from condicoes c where c.cnd_id = new.cnd_id
> into nparcelas, entrada, dias01, dias02, dias03, dias04, dias05,
> dias06, dias07, dias08, dias09, dias10;
> */
> execute procedure insere_financeiro('Q',new.req_id,'REQ', '1/' ||
> nparcelas, new.req_valorrecebido, '001001001', 1);
>
> **** Red ***** na linha acima por exemplo " '1/' || nparcelas " não foi
> resolvida, ficando nulo no campo!
>
> end
> /*/
>
> /* Inserir em Contas a Receber */
> if (new.req_valorcobranca > 0) then
> begin
> if (new.req_valorrecebido > 0) then
> I=2;
> else
> I=1;
> /*
> select c.cnd_parcelas, c.cnd_entrada, c.cnd_dias01, c.cnd_dias02,
> c.cnd_dias03, c.cnd_dias04,
> c.cnd_dias05, c.cnd_dias06, c.cnd_dias07, c.cnd_dias08,
> c.cnd_dias09, c.cnd_dias10
> from condicoes c where c.cnd_id = new.cnd_id
> into nparcelas, entrada, dias01, dias02, dias03, dias04, dias05,
> dias06, dias07, dias08, dias09, dias10;
> */
> vparcelas=new.req_valorcobranca/(nparcelas-I+1);
> tparcelas=vparcelas*(nparcelas-I+1);
> vparcela =vparcelas+(new.req_valorcobranca-tparcelas);
> while (I <= nparcelas) do
> begin
> if (I = 1) then dias00=dias01;
> else if (I = 2) then dias00=dias02;
> else if (I = 3) then dias00=dias03;
> else if (I = 4) then dias00=dias04;
> else if (I = 5) then dias00=dias05;
> else if (I = 6) then dias00=dias06;
> else if (I = 7) then dias00=dias07;
> else if (I = 8) then dias00=dias08;
> else if (I = 9) then
> dias00=dias09;
> else
> dias00=dias10;
>
> execute procedure insere_receber('Q',new.req_id,'REQ',I || '/' ||
> nparcelas ,dias00,vparcela,'001001001',null);
>
> **** Red ***** a linha acima, não foi executada (acho que na verdade nem o
> while foi!) !!
>
> vparcela=vparcelas;
> I=I+1;
> end
> end
> end
> end
> ^
>
>
> SET TERM ; ^
>
>
>
> --------------------------------------------------
> Esta mensagem foi verificada por Ultralink-Scanner
> e nenhum virus foi encontrado.
>
> Web Server Ultralink: http://www.ultralink.com.br
> --------------------------------------------------
--------------------------------------------------
Esta mensagem foi verificada por Ultralink-Scanner
e nenhum virus foi encontrado.
Web Server Ultralink: http://www.ultralink.com.br
--------------------------------------------------
--------------------------------------------------
Esta mensagem foi verificada por Ultralink-Scanner
e nenhum virus foi encontrado.
Web Server Ultralink: http://www.ultralink.com.br
--------------------------------------------------
Mais detalhes sobre a lista de discussão lista