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]
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
Curtir tópico
+ 0
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:
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.
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
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)