Fórum Stored procedure para atualizar outra tabela #54073
05/12/2005
0
bom é assim. tenho meu banco em interbase e utilizo para conexao componentes da palheta dbexpress.
Meu sistema é para controle de estoque de peças.
Tenho 2 tabelas. a primeira serve para mim cadastrar as peças.
a segunda é onde eu registro os movimentos de entrada ou saída, informando o codigo da peca e quantidade.
Quero que quando eu fizer um lançamento de entrada de peças, atualize o estoque desta determinada peça na outra tabela. e quando eu fizer um lançamento de saída de peças, atualize os estoque subtraindo a quantidade que foi dada baixa.
Qualquer duvida por favor podem perguntar. Obrigado a todos.
Wagsilvasilva
Curtir tópico
+ 0Post mais votado
05/12/2005
create procedure atualiza_estoque ( id_produto integer, tipo_mov char(1), quantidade numeric(10,2)) returns ( movimento_ok boolean) as begin if tipo_mov = ´E´ then update pecas set saldo = saldo + :quantidade where id_produto = :id_produto else update pecas set saldo = saldo - :quantidade where id_produto = :id_produto; if (rows_affected = 0) then movimento_ok = false else movimento_ok = true; suspend; end
uma forma de executá-la seria através de triggers:
create trigger tgINCLUI_MOVIMENTO for movimento active after insert position 0 as begin atualiza_estoque( new.id_produto, new.tipo, new.quantidade ); end
create trigger tgEXCLUI_MOVIMENTO for movimento active after delete position 0 as begin if old.tipo = ´E´ then atualiza_estoque( old.id_produto, ´S´, old.quantidade ) else atualiza_estoque( old.id_produto, ´E´, old.quantidade ); end
como você não informou nada sobre a estrutura das suas tabelas, eu utilizei:
pecas -> cadastro de pecas, que contém o saldo em estoque no campo SALDO, tendo como referência ao produto o campo ID_Produto
movimento -> onde constam os lançamentos no estoque, também com referência ao produto pelo campo ID_Produto e tendo ainda o campo Quantidade, onde consta a quantidade movimentada e o campo TIPO, onde é informado o tipo de movimento (´E´ para entrada ou ´S´ para saída).
Emerson Nascimento
Gostei + 2
Mais Posts
17/04/2016
Hermeson Gonçalves
Gostei + 0
18/04/2016
Emerson Nascimento
Publique o erro que está sendo apresentado para podermos ajudar na solução.
Aquela forma é prática, porque não é preciso preocupação com a atualização do saldo: basta incluir a movimentação que o próprio banco de dados faz o resto.
Gostei + 1
18/04/2016
Hermeson Gonçalves
Gostei + 0
18/04/2016
Emerson Nascimento
Você também pode chamar a procedure "atualiza_estoque()" manualmente, no momento em que achar conveniente.
Infelizmente não tenho qualquer tutorial, mas você encontra com facilidade na internet. caso não encontro algo específico para sua necessidade, pergunte aqui no fórum. temos muitos colegas solidários que irão ajudar.
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)