Fórum Trigger não funciona no FIREBIRD #60048
25/07/2008
0
Alguém sabe por que?
[b:965ce019ce]ASSIM FUNCIONA NO INTERBASE E NÃO FUNCIONA NO FIREBIRD:[/b:965ce019ce]
AS
declare variable vquant_total real;
begin
select sum(senfitemped.quantidade) from senfitemped
left join senfitem on senfitemped.id_senfitem=senfitem.id_senfitem
left join senf on senfitem.id_senf=senf.id_senf
left join nfsitens on senfitemped.id_nfsitem=nfsitens.id_nfsitem
left join nfsaida on nfsitens.id_nfsaida=nfsaida.id_nfsaida
where
[b:965ce019ce]senfitemped.id_pedido=old.id_pedido
and senfitemped.pedido_numero=old.pedido_numero[/b:965ce019ce]
and ((nfsaida.tipo=´S´ and nfsaida.situacao<>´C´ and
nfsaida.situacao<>´D´ and nfsaida.numero is not null) or
(nfsaida.numero is null and senf.situacao<>´C´))
into :vquant_total;
update pedidos_itens set quantidade_entregue=:vquant_total
where pedidos_itens.id_pedido=old.id_pedido and
pedidos_itens.numero=old.pedido_numero;
end
[b:965ce019ce]ASSIM FUNCIONA NOS DOIS (COM VARIAVEL AO INVES DE OLD.):[/b:965ce019ce]
AS
declare variable vquant_total real;
[b:965ce019ce]declare variable vid_pedido integer;
declare variable vpedido_numero varchar(10);[/b:965ce019ce]
begin
[b:965ce019ce] vid_pedido=old.pedido_numero;
vpedido_numero=new.pedido_numero;[/b:965ce019ce]
select sum(senfitemped.quantidade) from senfitemped
left join senfitem on senfitemped.id_senfitem=senfitem.id_senfitem
left join senf on senfitem.id_senf=senf.id_senf
left join nfsitens on senfitemped.id_nfsitem=nfsitens.id_nfsitem
left join nfsaida on nfsitens.id_nfsaida=nfsaida.id_nfsaida
where
[b:965ce019ce]senfitemped.id_pedido=:vid_pedido
and senfitemped.pedido_numero=:vpedido_numero[/b:965ce019ce]
and ((nfsaida.tipo=´S´ and nfsaida.situacao<>´C´ and
nfsaida.situacao<>´D´
and nfsaida.numero is not null) or (nfsaida.numero is null and
senf.situacao<>´C´))
into :vquant_total;
update pedidos_itens set quantidade_entregue=:vquant_total
where pedidos_itens.id_pedido=old.id_pedido and
pedidos_itens.numero=old.pedido_numero;
end
[b:965ce019ce]ASSIM FUNCIONA NO INTERBASE E NÃO FUNCIONA NO FIREBIRD:[/b:965ce019ce]
AS
declare variable vquant_total real;
begin
select sum(senfitemped.quantidade) from senfitemped
left join senfitem on senfitemped.id_senfitem=senfitem.id_senfitem
left join senf on senfitem.id_senf=senf.id_senf
left join nfsitens on senfitemped.id_nfsitem=nfsitens.id_nfsitem
left join nfsaida on nfsitens.id_nfsaida=nfsaida.id_nfsaida
where
[b:965ce019ce]senfitemped.id_pedido=old.id_pedido
and senfitemped.pedido_numero=old.pedido_numero[/b:965ce019ce]
and ((nfsaida.tipo=´S´ and nfsaida.situacao<>´C´ and
nfsaida.situacao<>´D´ and nfsaida.numero is not null) or
(nfsaida.numero is null and senf.situacao<>´C´))
into :vquant_total;
update pedidos_itens set quantidade_entregue=:vquant_total
where pedidos_itens.id_pedido=old.id_pedido and
pedidos_itens.numero=old.pedido_numero;
end
[b:965ce019ce]ASSIM FUNCIONA NOS DOIS (COM VARIAVEL AO INVES DE OLD.):[/b:965ce019ce]
AS
declare variable vquant_total real;
[b:965ce019ce]declare variable vid_pedido integer;
declare variable vpedido_numero varchar(10);[/b:965ce019ce]
begin
[b:965ce019ce] vid_pedido=old.pedido_numero;
vpedido_numero=new.pedido_numero;[/b:965ce019ce]
select sum(senfitemped.quantidade) from senfitemped
left join senfitem on senfitemped.id_senfitem=senfitem.id_senfitem
left join senf on senfitem.id_senf=senf.id_senf
left join nfsitens on senfitemped.id_nfsitem=nfsitens.id_nfsitem
left join nfsaida on nfsitens.id_nfsaida=nfsaida.id_nfsaida
where
[b:965ce019ce]senfitemped.id_pedido=:vid_pedido
and senfitemped.pedido_numero=:vpedido_numero[/b:965ce019ce]
and ((nfsaida.tipo=´S´ and nfsaida.situacao<>´C´ and
nfsaida.situacao<>´D´
and nfsaida.numero is not null) or (nfsaida.numero is null and
senf.situacao<>´C´))
into :vquant_total;
update pedidos_itens set quantidade_entregue=:vquant_total
where pedidos_itens.id_pedido=old.id_pedido and
pedidos_itens.numero=old.pedido_numero;
end
Phfdelphi
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)