Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

C Alves

[Resolvido] if then em trigger

Recommended Posts

pessoal estou precisando fazer o seguinte:

E preciso que quando um saldo for atualizado na tabela Saldo_Razao,

em um campo DC na tabela D_C apareça D ou C de acordo com o saldo.

Esse campo DC pode ser também na própria tabela saldo_razao.

Já tentei de tudo mas não dá certo´. É inserido só um C ou só um D em todos os campos DC.

Estou usando interbase 7.5

Na ultima tentativa fiz o seguinte:

 

CREATE TRIGGER "DC" FOR "SALDO_RAZAO"

ACTIVE AFTER UPDATE POSITION 0

as

begin

If(new.controle='PASSIVO' and new.saldo >'0')then

update D_C set DC='C';

If(new.controle='PASSIVO' and new.saldo <0)then

update D_C set DC='D';

If(new.controle='ATIVO'and new.saldo<0)then

update D_C set DC='D';

If(new.controle='ATIVO' and new.saldo>0)then

update D_C set DC='C'

where new.cod_empresa=old.cod_empresa and new.cod_cont=old.cod_cont;

end

 

se alguém puder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

CREATE TRIGGER "DC" FOR "SALDO_RAZAO"
	 ACTIVE AFTER UPDATE POSITION 0 as
begin
	 If(new.controle='PASSIVO' and new.saldo >'0')then
			  update D_C set DC='C' where new.cod_empresa=old.cod_empresa and new.cod_cont=old.cod_cont;
	 If(new.controle='PASSIVO' and new.saldo <0)then
			  update D_C set DC='D' where new.cod_empresa=old.cod_empresa and new.cod_cont=old.cod_cont;
	 If(new.controle='ATIVO'and new.saldo<0)then
			  update D_C set DC='D' where new.cod_empresa=old.cod_empresa and new.cod_cont=old.cod_cont;
	 If(new.controle='ATIVO' and new.saldo>0)then
			  update D_C set DC='C' where new.cod_empresa=old.cod_empresa and new.cod_cont=old.cod_cont;
end

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chrnos

antes de mais nada muito obrigado pela ajuda.

Tentei do jeito que você postou mas continua o mesmo problema.

Apareceu C onde devia e onde não devia também. Se você tiver

outras sugestóes agradeço muito :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tenho base do Firebird aqui no trampo instalado pra testar, e a sintaxe do sqlserver pra criar triggers é um pouco diferente, mas talvez assim funcione...

 

CREATE TRIGGER "DC" FOR "SALDO_RAZAO"
	 ACTIVE AFTER UPDATE POSITION 0 as
begin
	 If  (new.controle='PASSIVO' and new.saldo >'0') OR (new.controle='ATIVO' and new.saldo>0) then
			  update D_C set DC='C' where cod_empresa=new.cod_empresa and cod_cont=new.cod_cont
	 Else   If(new.controle='PASSIVO' and new.saldo <0) OR (new.controle='ATIVO'and new.saldo<0) then
			  update D_C set DC='D' where cod_empresa = new.cod_empresa= and cod_cont=new.cod_cont;
end

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chrnos esqueça meu post anterior.

Agora deu certo com ultimo codigo que você indicou.

Eu havia esquecido de retirar o trigger anterior e isso estava interferindo. Feito isso ao testa-lo novamente

deu certo.

Muito obrigado! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

 

Importante: Breve o Senhor Jesus voltará.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hehehehe, o que importa é que conseguiu resolver seu problema amigo. Precisando, estamos ai! ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.