Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Evilkenzera

Subtrair estoque do produto

Recommended Posts

Pessoal, preciso de uma ajuda aqui.

Essa código SQL no ASP está correto?

 

sqlEstoque = "UPDATE Produto INNER JOIN Pedido_Item "

sqlEstoque = sqlEstoque & "ON Produto.COD_Produto = Pedido_Item.Cod_Produto "

sqlEstoque = sqlEstoque & "SET Produto.QTD_Estoque = [QTD_Estoque]-[Pedido_Item]![QTD_Pedido] "

sqlEstoque = sqlEstoque & "WHERE Pedido_Item.Cod_Pedido = " & Session("CodPed")

 

O que quero fazer é subtrair a quantidade de estoque de um produto da tabela produto.

Esse comando do MySQL é certo?

[QTD_Estoque]-[Pedido_Item]![QTD_Pedido]

 

Tá dando esse erro:

 

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '! QTD_Pedido WHERE Pedido_Item.Cod_Pedido = 40' at line 1

/supermercado/confirma_pedido.asp, line 13

 

 

line 13: Set rs=Conexao.Execute(sqlEstoque)

 

-----------------------------------------------------------------------------------------------------

Segue abaixo o código completo

 

 

<!--#include file="Connection/bib_conexao.asp"-->

<%

Dim Conexao, rs, sqlEstoque

 

sqlEstoque = "UPDATE Produto INNER JOIN Pedido_Item "

sqlEstoque = sqlEstoque & "ON Produto.COD_Produto = Pedido_Item.Cod_Produto "

sqlEstoque = sqlEstoque & "SET Produto.QTD_Estoque = [QTD_Estoque]-[Pedido_Item]![QTD_Pedido] "

sqlEstoque = sqlEstoque & "WHERE Pedido_Item.Cod_Pedido = " & Session("CodPed")

 

'abre a conexao

Call abre_conexao

Set rs=Conexao.Execute(sqlEstoque)

 

'fecha a conexao

Call fecha_conexao

Set rs = Nothing

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brother,

 

Não manjo muto de MySQL mas SQL entendo um pouco! http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

 

Então não posso afirmar se a sintaxe...

[QTD_Estoque]-[Pedido_Item]![QTD_Pedido]
... é correta. Mesmo que for correta talvez ela somente será aceita para o MySQL.

 

Sugiro que você use uma sintaxe padrão do SQL (ANSI) pois caso seja necessário portar os dados para outro banco de dados os ajustes de sintaxe serão menores e rodará na maioria dos bancos de dados disponivíes.

 

Sugestões:

[*]Jogar o valor de QTD_Pedido para uma variável e depois usá-la no update

[*]Criar uma subquery para retornar QTD_Pedido

Não sei das limitações do MySql mas acredito que qq banco de dados decente suportaria a execução das duas sugestões acima.

 

 

 

QQ duvida estamos ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nem endendo direito esse código SQLNa verdade estou querendo que o sql veja a quantidade do campo QTD_Pedido(1) que está na tabela PEDIDO_ITEMe subtraia essa quantidade do campo QTD_Estoque(40) da tabela PRODUTOTAbela PEDIDO_ITEMQTD_Pedido = 1-------------------Tabela ProdutoQTD_Estoque = 40------------------------Quero que baixe o estoqueTabela ProdutoQTD_Estoque = 39Entendeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brother,

 

Vai ai algumas sugestões:

UPDATE 	Produto SET 	Produto.QTD_Estoque = QTD_Estoque-Pedido_Item.QTD_Pedido FROM 	Pedido_Item WHERE 	Produto.COD_Produto = Pedido_Item.Cod_Produto 		Pedido_Item.Cod_Pedido =  --conteúdo da Session("CodPed")

... ou ...

 

DECLARE @QTD_Pedido INTSELECT 	@QTD_Pedido = Pedido_Item.QTD_Pedido FROM	Pedido_Item WHERE 	Pedido_Item.Cod_Pedido =  --conteúdo da Session("CodPed")UPDATE 	Produto SET 	Produto.QTD_Estoque = @QTD_PedidoWHERE 	Produto.COD_Produto =  --conteúdo da Session("CodPed")

 

Você pode jogar o conteúdo dos exemplos acima para sua variável sqlEstoque e executá-lo.

 

Não sei se funcionará no MySQL mas pode lhe dar uma idéia.

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.