Alguem me dah uma mão com Trigger!!
Tem que fazer uma trigger que quando tu mecher na tabela produção, ele vai procurar na tabela ingredientes os ingredientes que vão na receito do produto a ser fabricado, a outra ele vai passar essa movimentação de baixa de ingredientes e aumento de produtos na tabela produtos e registrar na tabela movimentação do estoque.
Tabelas: Produto
Campos: Código do produto
Nome do produto
Categoria do produto
Saldo estoque
Unidade produto
Preço do produto
Tabela: Movimentação do estoque
Campos: Código do produto
Código do vendedor
Código do cliente
Data
Quantidade
Valor total
Tipo de movimento
Movimento do preço total
Fornecedor cliente
Tabela: Receita
Campos: Código da receita
Nome da receita
Rendimentos
Tabela: Ingredientes
Campos: Código da receita
Código do produto
Quantidade
Tabela: Produção
Campos: Data da produção
Código da receita
Receita quantidade
Tabelas: Produto
Campos: Código do produto
Nome do produto
Categoria do produto
Saldo estoque
Unidade produto
Preço do produto
Tabela: Movimentação do estoque
Campos: Código do produto
Código do vendedor
Código do cliente
Data
Quantidade
Valor total
Tipo de movimento
Movimento do preço total
Fornecedor cliente
Tabela: Receita
Campos: Código da receita
Nome da receita
Rendimentos
Tabela: Ingredientes
Campos: Código da receita
Código do produto
Quantidade
Tabela: Produção
Campos: Data da produção
Código da receita
Receita quantidade
Marciobrignol
Curtidas 0
Respostas
Frcjf
27/11/2003
Aí
vai alguns exemplos de como baixa, adicionar usando trigger de uma estudada.
Flávio Campos
SET TERM ^ ;
/* Triggers only will work for SQL triggers */
CREATE TRIGGER ´BI_I_SAIDA´ FOR ´I_SAIDA´
ACTIVE BEFORE INSERT POSITION 0
as
begin
/* Testar se o produto existe, caso contrário gero excessão */
Update Produto set Qtde = Qtde - New.Qtde where CodigoProduto = New.CodigoProduto;
Update Produto_lote set Qtde = Qtde - New.Qtde
where (CodigoProduto = New.CodigoProduto)
and (Lote = New.Lote);
end
^
CREATE TRIGGER ´AU_I_SAIDA´ FOR ´I_SAIDA´
ACTIVE AFTER UPDATE POSITION 0
as
Declare variable iReg smallint;
begin
iReg = 0;
Select Count(CodigoProduto)
from Produto where CodigoProduto = old.CodigoProduto
into :iReg;
/* Caso o Produto não exista gero erro...*/
if (:iReg = 0 ) Then EXCEPTION Codigo_invalido;
/* Antes da alteração somo o valor anterior em Produto */
Update Produto set Qtde = Qtde + Old.Qtde where CodigoProduto = Old.CodigoProduto;
iReg = 0;
Select Count(CodigoProduto) from Produto_lote
where (CodigoProduto = old.CodigoProduto)
and (Lote = old.Lote) into :iReg;
/* Testar se o produto_lote existe, caso contrário gero o registro com Qtde 0 */
if (:iReg = 0 ) Then
EXCEPTION Codigo_invalido;
Update Produto_lote set Qtde = Qtde + Old.Qtde
where (CodigoProduto = Old.CodigoProduto)
and (Lote = Old.Lote);
iReg = 0;
Select Count(CodigoProduto)
from Produto where CodigoProduto = New.CodigoProduto
into :iReg;
/* Caso o Produto não exista gero erro...*/
if (:iReg = 0 ) Then EXCEPTION Codigo_invalido;
/* Depois de alterar somo o valor novo*/
Update Produto set Qtde = Qtde - New.Qtde where CodigoProduto = New.CodigoProduto;
iReg = 0;
Select Count(CodigoProduto) from Produto_lote
where (CodigoProduto = New.CodigoProduto)
and (Lote = new.Lote) into :iReg;
/* Testar se o produto_lote existe, caso contrário gero o registro com Qtde 0 */
if (:iReg = 0 ) Then
EXCEPTION Codigo_invalido;
Update Produto_lote set Qtde = Qtde - New.Qtde
where (CodigoProduto = New.CodigoProduto)
and (Lote = New.Lote);
end
^
CREATE TRIGGER ´BD_I_SAIDA´ FOR ´I_SAIDA´
ACTIVE BEFORE DELETE POSITION 0
as
begin
Update Produto set Qtde = Qtde + Old.Qtde where CodigoProduto = Old.CodigoProduto;
Update Produto_lote set Qtde = Qtde + Old.Qtde
where (CodigoProduto = Old.CodigoProduto)
and (Lote = Old.Lote);
end
^
COMMIT WORK ^
SET TERM ;^
vai alguns exemplos de como baixa, adicionar usando trigger de uma estudada.
Flávio Campos
SET TERM ^ ;
/* Triggers only will work for SQL triggers */
CREATE TRIGGER ´BI_I_SAIDA´ FOR ´I_SAIDA´
ACTIVE BEFORE INSERT POSITION 0
as
begin
/* Testar se o produto existe, caso contrário gero excessão */
Update Produto set Qtde = Qtde - New.Qtde where CodigoProduto = New.CodigoProduto;
Update Produto_lote set Qtde = Qtde - New.Qtde
where (CodigoProduto = New.CodigoProduto)
and (Lote = New.Lote);
end
^
CREATE TRIGGER ´AU_I_SAIDA´ FOR ´I_SAIDA´
ACTIVE AFTER UPDATE POSITION 0
as
Declare variable iReg smallint;
begin
iReg = 0;
Select Count(CodigoProduto)
from Produto where CodigoProduto = old.CodigoProduto
into :iReg;
/* Caso o Produto não exista gero erro...*/
if (:iReg = 0 ) Then EXCEPTION Codigo_invalido;
/* Antes da alteração somo o valor anterior em Produto */
Update Produto set Qtde = Qtde + Old.Qtde where CodigoProduto = Old.CodigoProduto;
iReg = 0;
Select Count(CodigoProduto) from Produto_lote
where (CodigoProduto = old.CodigoProduto)
and (Lote = old.Lote) into :iReg;
/* Testar se o produto_lote existe, caso contrário gero o registro com Qtde 0 */
if (:iReg = 0 ) Then
EXCEPTION Codigo_invalido;
Update Produto_lote set Qtde = Qtde + Old.Qtde
where (CodigoProduto = Old.CodigoProduto)
and (Lote = Old.Lote);
iReg = 0;
Select Count(CodigoProduto)
from Produto where CodigoProduto = New.CodigoProduto
into :iReg;
/* Caso o Produto não exista gero erro...*/
if (:iReg = 0 ) Then EXCEPTION Codigo_invalido;
/* Depois de alterar somo o valor novo*/
Update Produto set Qtde = Qtde - New.Qtde where CodigoProduto = New.CodigoProduto;
iReg = 0;
Select Count(CodigoProduto) from Produto_lote
where (CodigoProduto = New.CodigoProduto)
and (Lote = new.Lote) into :iReg;
/* Testar se o produto_lote existe, caso contrário gero o registro com Qtde 0 */
if (:iReg = 0 ) Then
EXCEPTION Codigo_invalido;
Update Produto_lote set Qtde = Qtde - New.Qtde
where (CodigoProduto = New.CodigoProduto)
and (Lote = New.Lote);
end
^
CREATE TRIGGER ´BD_I_SAIDA´ FOR ´I_SAIDA´
ACTIVE BEFORE DELETE POSITION 0
as
begin
Update Produto set Qtde = Qtde + Old.Qtde where CodigoProduto = Old.CodigoProduto;
Update Produto_lote set Qtde = Qtde + Old.Qtde
where (CodigoProduto = Old.CodigoProduto)
and (Lote = Old.Lote);
end
^
COMMIT WORK ^
SET TERM ;^
GOSTEI 0