Ajuda - Transact SQL p/ MS-ACCESS, executado apartir de uma AdoQuery.

Iniciado por cebolaaa, 08 de Fevereiro , 2008, 01:23:29 AM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

cebolaaa

Olá.

Preciso de ajuda para um update, este faria o seguinte:

Seria trabalhado sobre 2 tabelas, a tabela "Vendas" e a tabela "Estoque".
Na tabela "Vendas" iremos mexer nos campos: Status, NomeProduto, Quantidade.
Na tabela "Estoque" iremos mexer nos campos: NomeProduto e Quantidade.

Teriamos primeiramente que dar um select para selecionar da tabela "Vendas" todos registros onde o campo Status teria o valor igual a: 'Iniciada'.
(Select * From Vendas Where Status = 'Iniciada') -> Até aqui OK.

Depois teriamos de pesquisar na tabela "Estoque" onde o campo "NomeProduto" é igual os registros da tabela "Vendas" que tem o campo "Status" igual a 'Iniciada' e que seu campo "NomeProduto" seja igual ao campo "NomeProduto" da tabela "Estoque".

Após isto, teriamos que somar aos registros encontrados na tabela "Estoque" no campo "Quantidade", o valor do comparado da tabela "Vendas".

Bem, este procedimento serviria para voltar ao estoque, a quantidade que foi retirada deste produto na venda, de uma nota fiscal que teria sido cancelada.

Espero que tenha sido claro e que alguem possa me ajudar. xD
Obrigado.
: 07 Fevereiro 2008, 04:21:49
Tentei fazer algo assim:

UPDATE Estoque SET Quantidade = Estoque.Quantidade + VendasEfetuadas.QuantidadeProd Where VendasEfetuadas.NomeProd = Estoque.Item and VendasEfetuadas.Status = 'Iniciada'

Porém nao deu certo, mas acho que com isso ai da para se ter + noção do que preciso fazer.

Alucard

Bem pelo o que entendi ficaria mais ou menos assim.

UPDATE Estoque,VendasEfetuadas SET Estoque.Quantidade = Estoque.Quantidade + VendasEfetuadas.QuantidadeProd Where VendasEfetuadas.NomeProduto = Estoque.NomeProduto and VendasEfetuadas.Status = 'Iniciada'
Fiz uma pequena alteração para que não fique toda hora voltando os produtos.

UPDATE Estoque,VendasEfetuadas SET Estoque.Quantidade = Estoque.Quantidade + VendasEfetuadas.QuantidadeProd, VendasEfetuadas.Status = 'Finalizada'  Where VendasEfetuadas.NomeProduto = Estoque.NomeProduto and VendasEfetuadas.Status = 'Iniciada'
Os campos Estoque.NomeProduto é equivalente a Estoque.Item.
Valeu

cebolaaa

obrigado xD... mas entao, eu tentei os 2 modos, porem, nenhum deu certo, executei no access pra ver no q dava,,, apareceu a seguinte mensagem: "A ação ou evento solicitado foi bloqueado pelo Modo Desabilitado"... vc sabe o q esta errado? Obrigado.

Alucard

Nem sei o que pode tá acontecendo, se for possivel me passa o seu banco de dados... para poder dar uma analizada.
A seguir o link do banco de dados que fiz para teste.

http://alucard.dxs.googlepages.com/TesteMdb.mdb

Valeu

cebolaaa

entao,,, eu consegui, so q so roda no SQL, access nao, fikou

UPDATE Estoque SET Quantidade = Quantidade + VendasEfetuadas.QuantidadeProd
From Estoque Left Join VendasEfetuadas on Estoque.Codigo = VendasEfetuadas.CodProd
Where VendasEfetuadas.Status = 'Iniciada'

dai fiz um jeito meio manhoso no delphi msm e ja era...
so q um problema... do jeito q fiz, pode acontecer, e vai acontecer, de nao voltar todos os prods se tiver + q 1 pc trabalhando com o prog ao msm tempo e vendendo...

obrigado a ajuda ai... e ah, so + uma coisa... o do modo so pro SQL ali em cima... so retorna um registro... estranho tbm, era pra retornar +.

ty, c u la8er