Fórum Triggers no interbase #56170

12/06/2006

0

Pessoal tenho a seguinte situacao:


Tabela PRODUTOS (ANTES)
codigo descricao quat
001 cerveja 10
002 refrigerante 10


VENDA NR. 010
tabela detalhes (REALIZANDO VENDAS)
codigo descricao quat
001 cerveja 2
002 refrigerante 1


Tabela PRODUTOS (DEPOIS)
codigo descricao quat
001 cerveja 8
002 refrigerante 9

tabela detalhes (ADICIONANDO ITENS NA VENDA ANTERIOR)
Estoque adicionando a quantidade vendida na mesma saida.


VENDA NR. 010
codigo descricao quat
001 cerveja 5 (adicionei 3 Itens na mesma venda)
002 refrigerante 3 (adicionei 2 Itens na mesma venda)


Tabela PRODUTOS
codigo descricao quat
001 cerveja 5
002 refrigerante 7

as Trigger´s que criei foram as seguinte:


CREATE TRIGGER ´INSITEMCOMA´ FOR ´ITENSCOMANDA´
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
UPDATE PRODUTOS SET Estoque = Estoque - NEW.Quant
WHERE Codigo = NEW.Produto;
END


CREATE TRIGGER ´ATUITEMCOMA´ FOR ´ITENSCOMANDA´
ACTIVE BEFORE UPDATE POSITION 0
AS
BEGIN
IF (NEW.Quant <> OLD.Quant) THEN
UPDATE PRODUTOS SET Estoque = Estoque - OLD.Quant +
NEW.Quant WHERE Codigo = OLD.Produto;
END


Os valores do estoque na tabela de produtos estao vindo errado.
nao descobri o erro. Alguem poderia dar uma força?

[color=green:2824840758]Movido de Delphi para Interbase/Firebird[/color:2824840758]


Azimute-al

Azimute-al

Responder

Posts

12/06/2006

Azimute-al

Preciso de trigger para atualizacao de estoque conf. relatado anteriormente. Qualquer ajuda é bem vinda.


Responder

Gostei + 0

16/06/2006

Emerson Nascimento

tente assim:
CREATE TRIGGER "ATUITEMCOMA" FOR "ITENSCOMANDA" 
ACTIVE BEFORE UPDATE POSITION 0 
AS 
BEGIN 
  IF (NEW.Quant <> OLD.Quant) THEN 
    UPDATE PRODUTOS SET
      Estoque = (Estoque + Old.Quant) - New.Quant
    WHERE
      Codigo = New.Produto; 
END
o que foi feito: pego o valor atual do estoque, acrescento a quantidade vendida anteriormente (volta para o estado original) e retiro a nova quantidade.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar