Mysql 5 - sistema nao esta deletando os itens da venda no banco de dados...como corrigir
faço uma venda e baixa o estoque blz, mas qdo deleto uma venda, so apaga a venda, os itensdavenda nao estao sendo deletados, voltando assim as quantidades para o estoque..por que?
Para deletar a venda pelo sistema uso apenas datamodule.tabelavenda.delete;
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;
Para deletar a venda pelo sistema uso apenas datamodule.tabelavenda.delete;
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;
Jose Maria
Curtidas 0
Respostas
Gustavo Bretas
30/09/2011
José Maria, seu problema aparentemente é por falta de integridade no banco de dados, vc não criou o relacionamento entre a tabela venda e a tabela de itens, caso tivesse criado, quando tentasse excluir a venda o banco não deixaria por conta do relacionamento.
Dependendo do Banco de dados que vc usa, vc tem duas opções, criar o relacionamento entre as tabelas e usar a opção DELETE CASCADE, que ao deletar o pai os filhos são deletados automaticamente. Ou então enviar um comando para o banco excluindo o itens, e depois a venda, e a sua trigger volta o estoque.
Dependendo do Banco de dados que vc usa, vc tem duas opções, criar o relacionamento entre as tabelas e usar a opção DELETE CASCADE, que ao deletar o pai os filhos são deletados automaticamente. Ou então enviar um comando para o banco excluindo o itens, e depois a venda, e a sua trigger volta o estoque.
GOSTEI 0
Jose Maria
30/09/2011
obrigado por responder...cara sou iniciante, entao...eu estou usando o mysql 5 com zeos...a minha tabela venda esta ligada com a tabela itensvendas nos componentes zqueryitensvendas...assim:
masterfields=codvenda
mastersource=dsvendas
SQL ESTA ASSIM= SELECT * FROM ITENS2
WHERE CODVENDA =:CODVENDA
favor me dizer se esta errado, e me diz como proceder....
aguardo retorno...
masterfields=codvenda
mastersource=dsvendas
SQL ESTA ASSIM= SELECT * FROM ITENS2
WHERE CODVENDA =:CODVENDA
favor me dizer se esta errado, e me diz como proceder....
aguardo retorno...
GOSTEI 0
Jose Maria
30/09/2011
bom...alterei a tabela itensvendas,add a chave estrangeira e agora esta deletando a venda e os itens da venda....Porem a quantidade dos produtos vendidos nao estao retornando para o estoque...como corrigir..minha triger esta assim..
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;
por que nao esta aumentando o estoque apos deletar uma venda?
aguardo retorno....
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;
por que nao esta aumentando o estoque apos deletar uma venda?
aguardo retorno....
GOSTEI 0
Rafael Ribeiro
30/09/2011
No MySQL você tem que criar o relacionamento entre as chaves estrangeiras. Não é somente fazer o relacionamento no sql do delphi.
GOSTEI 0
Jose Maria
30/09/2011
no mysql eu ja fiz o relacionamento....
GOSTEI 0
Jose Maria
30/09/2011
ohhh pessoal me ajuda ai....Eu estou conseguindo deletar a venda e os itens da venda....Preciso agora resolver o problema dos produtos na venda/itensvendas que NAO estao voltando para o estoque...ja tentei uma trigger com update NEW E OLD.Quantidade e nada....nao retorna as quantidade...ja to chateado com isto...
Aguardo ajuda.....
Aguardo ajuda.....
GOSTEI 0
Rafael Ribeiro
30/09/2011
Por, favor... abra um novo post com a dúvida.
GOSTEI 0