Atualizar estoque apos vendas
bom dia...tenho um sistema de vendas, porem quando faço as vendas o estoque so atualiza quando saio do sistema...ai nao pode..tem que atualizar automatico certo? bom criei a triggers para baixar o estoque e uma de devolucao(quando deletar):
CREATE TRIGGER `AtualizaEstoqueVenda` AFTER INSERT ON `itens2`
FOR EACH ROW
update produtos p
set estoque = estoque - new.quantidade
where p.codprod = new.codprod;
CREATE TRIGGER `Atualiza_Estoque_Devolucao` AFTER DELETE ON `itens2`
FOR EACH ROW
update produtos p
set estoque = estoque + old.quantidade
where p.codprod = old.codprod;
tenho um form de pesquisa de produtos na hora da venda(dentro do dbgrid - um botao chama o form ), o produto que acabei de vender ja aparece atualizado...mas na tabela de produtos nao....
Alguem pode me ajudar a fazer com que atualize a Tabela de produtos automaticamente...
desde ja agradeço.
uso delphi/mysql com componente ADO/adoquery...o adoquery usa o POST para gravar....Talvez estas triggers nao estejam corretas, favor me ajudar pois estou agarrado nesta parte,...aguardo ajuda..
CREATE TRIGGER `AtualizaEstoqueVenda` AFTER INSERT ON `itens2`
FOR EACH ROW
update produtos p
set estoque = estoque - new.quantidade
where p.codprod = new.codprod;
CREATE TRIGGER `Atualiza_Estoque_Devolucao` AFTER DELETE ON `itens2`
FOR EACH ROW
update produtos p
set estoque = estoque + old.quantidade
where p.codprod = old.codprod;
tenho um form de pesquisa de produtos na hora da venda(dentro do dbgrid - um botao chama o form ), o produto que acabei de vender ja aparece atualizado...mas na tabela de produtos nao....
Alguem pode me ajudar a fazer com que atualize a Tabela de produtos automaticamente...
desde ja agradeço.
uso delphi/mysql com componente ADO/adoquery...o adoquery usa o POST para gravar....Talvez estas triggers nao estejam corretas, favor me ajudar pois estou agarrado nesta parte,...aguardo ajuda..
Jose Maria
Curtidas 0
Respostas
Fernando Ferreira
27/05/2011
Olá colega eu não utilizo trigger tenho uma tabela onde armazeno os itens vendidos e no fim da venda faço desta forma:
//---------------------- baixa no estoque ------------------------------------//
dm.Recover.First;
if not dm.Recover.Eof then
repeat
cod1:=floattostr(dm.RecoverCODIGO.value);
if dm.Produto.Locate('codigo',cod1,[])then
begin
dm.Produto.edit;
dm.ProdutoESTOQUE.Value:=dm.ProdutoESTOQUE.Value-dm.RecoverQUANTIDADE.Value;
dm.Produto.Post;
end;
dm.Recover.Next;
until dm.Recover.Eof;
//---------------------- baixa no estoque ------------------------------------//
dm.Recover.First;
if not dm.Recover.Eof then
repeat
cod1:=floattostr(dm.RecoverCODIGO.value);
if dm.Produto.Locate('codigo',cod1,[])then
begin
dm.Produto.edit;
dm.ProdutoESTOQUE.Value:=dm.ProdutoESTOQUE.Value-dm.RecoverQUANTIDADE.Value;
dm.Produto.Post;
end;
dm.Recover.Next;
until dm.Recover.Eof;
GOSTEI 0