[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