Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Leudassdf

[Resolvido] atualizar quantidade com dados de outra tabela

Mensagens Recomendadas

Leudassdf

Boas pessoa,

Eu tenho 2 tabelas. Uma é a tabela vendas e a outra é a transacoes. Na tabela vendas fica registado o n_venda que é automatico,o username do cliente,o valor_total da compra... etc

Na tabela transacoes fica registado o n_venda,n_transacao que é automatico, cod_produto,quantidade,preco_unitario,username.

No entanto o meu objectivo passa por permitir ao utilizador eliminar o seu pedido de encomenda. Quando o utilizador faz a encomenda ele escolhe x quantidade de produtos. E essa quantidade é subtraída a quantidade actualmente disponível.

No entanto quando eu cancelar a encomenda deveria "repor" os valores das quantidades nos seus respetivos produtos.

Mas como é que eu consigo fazer isso?

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Boas,

e queres fazer isso com Stored Procedures ou a partir de uma aplicação?

Poderá ser algo assim:

- Ler todos os movimentos da encomenda a cancelar

- Para cada movimento, soma a quantidade do movimento à quantidade disponivel

- Quando chegar ao fim, removes tudo referente à encomenda (tabela vendas e transacoes)

Se for com stored procedure, usas um CURSOR para fazer o ciclo pelos movimentos da encomenda

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leudassdf

Boas,

e queres fazer isso com Stored Procedures ou a partir de uma aplicação?

Poderá ser algo assim:

- Ler todos os movimentos da encomenda a cancelar

- Para cada movimento, soma a quantidade do movimento à quantidade disponivel

- Quando chegar ao fim, removes tudo referente à encomenda (tabela vendas e transacoes)

Se for com stored procedure, usas um CURSOR para fazer o ciclo pelos movimentos da encomenda

o objectivo é que para cada movimento some a quantidade do movimento a quantidade disponivel.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Bem, se percebo o que pretendes, podes fazer uma stored procedure desta maneira:

CREATE PROCEDURE CancelarEncomenda
@n_venda int
AS
BEGIN
SET NOCOUNT ON;

-- Verificar se existe a venda com o número dado
IF EXISTS(SELECT * FROM vendas WHERE n_venda=@n_venda)
BEGIN

	DECLARE @cod_produto varchar(50)
	DECLARE @quantidade float

	-- Passar por todos os movimentos
  	 DECLARE db_cursor CURSOR FOR SELECT cod_produto, quantidade FROM transacoes WHERE n_venda=@n_venda
  	 OPEN db_cursor;
	FETCH NEXT FROM db_cursor INTO @cod_produto, @quantidade
	WHILE @@FETCH_STATUS = 0  
	BEGIN  
		-- Repor quantidade na tabela de produtos
		UPDATE produtos SET quantidade_disponivel=quantidade_disponivel+@quantidade WHERE cod_produto=@cod_produto

		-- Passar para a transaccao seguinte
		FETCH NEXT FROM db_cursor INTO @cod_produto, @quantidade
	END
  	 CLOSE db_cursor
	DEALLOCATE db_cursor

	-- Remover da tabela de transaccoes
	-- DELETE FROM transacoes WHERE n_venda=@n_venda
	-- Remover da tabela de vendas
	-- DELETE FROM vendas WHERE n_venda=@n_venda
END
END
GO

As linhas comentadas no final é para se quiseres remover os movimentos cancelados das tabelas

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jsWizard

triggers:

Trigger "on insert" na tabela transacções que actualiza o stock retirando a quantidade na venda. Outro trigger "on delete" que repoe a quantidade.

Inté!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.