Ir para conteúdo

POWERED BY:

Arquivado

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

pedrovisk

Atualizando mais de um campo ao mesmo tempo

Recommended Posts

Olá turma!

 

Estou concluindo um sistema de orçamento. Nele há um "carrinho de compras" que lista todos os produtos sem o valor, para que possamos inserir na resposta do orçamento.

Para acessa este sistema, estou deixando o link aqui com o login:

 

http://www.fortalmag.com.br/2006/Orcamento

 

Login: pedrovisk

Senha: 123

 

Após logar, ele levará direto para a lista de pordutos disponíveis, insira dois produtos a página levará a Confirmação do Orçamento, página onde estou tendo o problema.

Nesta página, terei vários campos de Quantidade, dependendo do que for adicionado, só que se quizer alterar a quantidade, se for mais de um produto, o sistema não está recebendo a quantidade correta de produtos, confira o SQL de resposta:

 

SQL da página: Atualiza_Lista_Produtos.asp

UPDATE Pedido SET Pedido.Quantidade = 5 WHERE (((Pedido.IDPreOrcamento)= 39) AND ((Pedido.IDProduto)=11, 13));
Veja que ((Pedido.IDProduto)=11, 13)); está recebendo mais de um produto, a quantidade está funcionando, pois não recebe mais de uma valor, já que eu estou utilizando o ASP abaixo:

 

Página: Atualiza_Lista_Produtos.asp

Produtoz = Request("Produto")	intIDPreOrcamento = cstr(Session("IDPreOrcamento"))	Quantidade = split(Request("Qtd"), ",")	For I = 0 To ubound(Quantidade)			SQL2 = "UPDATE Pedido SET Pedido.Quantidade = "&Quantidade (I)&" WHERE (((Pedido.IDPreOrcamento)= "&intIDPreOrcamento&") AND ((Pedido.IDProduto)="&Produtoz&"));"		Response.Write SQL2		Response.End()			abredb.Execute(SQL2)	Next
O código acima, está na página:

http://www.fortalmag.com.br/2006/Orcamento...td=1&Produto=11

 

Aqui está o input da página: Exibe_Solicita_Orcamento.asp

<td bgcolor="#E0E2DE" class="texto_Cinza2"><input onBlur="document.forms['Solicita_Orcamento'].action= 'Atualiza_Lista_Produtos.asp?Acao=Atualizar&Produto=<%=(rsPed.Fields.Item("IDProduto").Value)%>&Qtd=<%=(rsPed.Fields.Item("Quantidade").Value)%>'; document.forms['Solicita_Orcamento'].submit()" name="Qtd" type="text" class="text_01" id="Qtd" value="<%= Trim((rsPed.Fields.Item("Quantidade").Value)) %>" size="5"><input name="Produto" type="hidden" id="Produto" value="<%=(rsPed.Fields.Item("IDProduto").Value)%>"></td>
Que pelo meu ver, o onsubmit não está funcionando como deveria, pois precisei inserir o HIDDEN acima, senão, o produto não ia para a próxima página.

 

Eu não sei como corrigir este problema de alterar o valor do campo Quantidade de vários produtos ao mesmo tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kra, eu nao entendi mto bem.. ta dando pau no sql?Tenta usar o IN:UPDATE Pedido SET Pedido.Quantidade = 5 WHERE (((Pedido.IDPreOrcamento)= 39) AND ((Pedido.IDProduto) IN (11, 13)));Assim ele vai setar a quantidade igual a 5 e o IDPreOrcamento = 39 onde o IDProduto for igual a 11 e igual a 13.. é isso memo? To com preguiça de ler todo o topico... ehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado Noodle por ter respondido.

 

É quase isso, o problema é que a Quantidade 5 é para o Produto 11, mas o Produto 13 está indo tbm, pois para a Quantidade, estou utilizando o ASP abaixo:

 

Produtoz = Request("Produto")	intIDPreOrcamento = cstr(Session("IDPreOrcamento"))	Quantidade = split(Request("Qtd"), ",")	For I = 0 To ubound(Quantidade)			SQL2 = "UPDATE Pedido SET Pedido.Quantidade = "&Quantidade (I)&" WHERE (((Pedido.IDPreOrcamento)= "&intIDPreOrcamento&") AND ((Pedido.IDProduto)="&Produtoz&"));"		Response.Write SQL2		Response.End()			abredb.Execute(SQL2)	Next

você chegou a acessar a página?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse campo:Produtoz = Request("Produto")Ele ta montando um vetor.. por isso passa varios valores.. poste o codigo completo para analisar..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Página: Atualiza_Produtos.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%><!--#include file="../Incluides/Conexao.asp" --><% 'Remove os itens do carrinho do comprasIf Request("Acao") = "Remover" Then	Produtoz = Request("Produto")	intIDPreOrcamento = cstr(Session("IDPreOrcamento"))	Quantidade = Request("Qtd")	SQL = "DELETE Pedido.IDPreOrcamento, Pedido.IDProduto, Pedido.Quantidade FROM Pedido WHERE (((Pedido.IDPreOrcamento)="&intIDPreOrcamento&") AND ((Pedido.IDProduto)="&Produtoz&") AND ((Pedido.Quantidade)='"&Quantidade&"'));"	'Response.Write SQL	'Response.End()	abredb.Execute(SQL)	Response.Redirect "Exibe_Solicita_Orcamento.asp"'End IfElse'If Request("Acao") = "Atualizar" Then	Produtoz = Request("Produto")	intIDPreOrcamento = cstr(Session("IDPreOrcamento"))	Quantidade = split(Request("Qtd"), ",")	For I = 0 To ubound(Quantidade)			SQL2 = "UPDATE Pedido SET Pedido.Quantidade = "&Quantidade (I)&" WHERE (((Pedido.IDPreOrcamento)= "&intIDPreOrcamento&") AND ((Pedido.IDProduto)="&Produtoz&"));"		Response.Write SQL2		Response.End()			abredb.Execute(SQL2)	Next		Response.Redirect "Exibe_Solicita_Orcamento.asp"End If%>
Página: Exibe_Solicita_Orcamento

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%><!--#include file="../Connections/Fortalmag.asp" --><%Dim rsCli__MMColParamrsCli__MMColParam = "1"If (Session("IDCliente") <> "") Then   rsCli__MMColParam = Session("IDCliente")End If%><%Dim rsCliDim rsCli_cmdDim rsCli_numRowsSet rsCli_cmd = Server.CreateObject ("ADODB.Command")rsCli_cmd.ActiveConnection = MM_Fortalmag_STRINGrsCli_cmd.CommandText = "SELECT * FROM Cliente WHERE IDCliente = ?" rsCli_cmd.Prepared = truersCli_cmd.Parameters.Append rsCli_cmd.CreateParameter("param1", 5, 1, -1, rsCli__MMColParam) ' adDoubleSet rsCli = rsCli_cmd.ExecutersCli_numRows = 0%><%Dim rsPed__MMColParamrsPed__MMColParam = "1"If (Session("IDPreOrcamento") <> "") Then   rsPed__MMColParam = Session("IDPreOrcamento")End If%><%Dim rsPedDim rsPed_cmdDim rsPed_numRowsSet rsPed_cmd = Server.CreateObject ("ADODB.Command")rsPed_cmd.ActiveConnection = MM_Fortalmag_STRINGrsPed_cmd.CommandText = "SELECT * FROM Exibe_Pedido WHERE IDPreOrcamento = ?" rsPed_cmd.Prepared = truersPed_cmd.Parameters.Append rsPed_cmd.CreateParameter("param1", 5, 1, -1, rsPed__MMColParam) ' adDoubleSet rsPed = rsPed_cmd.ExecutersPed_numRows = 0%><%Dim Repeat1__numRowsDim Repeat1__indexRepeat1__numRows = -1Repeat1__index = 0rsPed_numRows = rsPed_numRows + Repeat1__numRows%><% 	'Set objCon = Server.CreateObject("ADODB.Connection")	'strCon = MM_Fortalmag_STRING	'objCon.Open strCon 	IDCliente = Session("IDCliente")	IDProduto = Request.QueryString("Produto")	Quantidade = Request.QueryString("Quantidade")			'SQL = SQL & "INSERT INTO Orcamento (IDCliente,IDProduto,Quantidade) "	'SQL = SQL & "VALUES ("& IDCliente &","& IDProduto &","& Quantidade &") "	  	'Response.Write(SQL)	'Response.End()	'objCon.Execute SQL%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>FORTALMAG :: CONFIRMAÇÃO DE ORÇAMENTO</title><link href="../daryus.css" rel="stylesheet" type="text/css"></head><body bgcolor="#F4F4F4" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">  <table width="100%" border="0" cellspacing="0" cellpadding="0">	<tr>	  <td background="../images/Barra_Titulo.jpg"><img src="../images/Seta_Barra_Titulo.gif" width="36" height="13"><span class="texto_Cinza_Bold">Confirmação de  Orçamento </span></td>	</tr>	<tr>	  <td align="right"><a href="../Sistema/Sair.asp" class="texto_Laranja_Bold">Sair</a></td>	</tr>  <% If Not rsCli.EOF Or Not rsCli.BOF Then %>		<tr>	  <td align="center">		<table width="100%" border="1" cellspacing="0" cellpadding="0">		  <tr class="texto_Preto_Titulo">			<td colspan="4" align="left">Dados do Cliente </td>		  </tr>		  <tr>			<td colspan="4" align="left" class="texto_Cinza_Bold"><% Cookie = Request.Cookies("Fortalmag")("Cliente") %> <%= Cookie %> </td>		  </tr>		  <tr>			<td width="9%" align="left" class="texto_Cinza_Bold_02">Cliente:</td>			<td width="44%" align="left" class="texto_Cinza2"><%=(rsCli.Fields.Item("dProEmpresa").Value)%></td>			<td width="8%" align="left" class="texto_Cinza_Bold_02">CPF/CNPJ:</td>			<td width="39%" align="left" class="texto_Cinza2"><%=(rsCli.Fields.Item("dProCNPJ").Value)%></td>		  </tr>		  <tr>			<td align="left" class="texto_Cinza_Bold_02">Endereço:</td>			<td align="left" class="texto_Cinza2"><%=(rsCli.Fields.Item("dProEndereco").Value)%></td>			<td align="left" class="texto_Cinza_Bold_02">Cidade:</td>			<td align="left" class="texto_Cinza2"><%=(rsCli.Fields.Item("dProCidade").Value)%></td>		  </tr>		  <tr>			<td align="left" class="texto_Cinza_Bold_02">Contato:</td>			<td align="left" class="texto_Cinza2"><%=(rsCli.Fields.Item("dPesNome").Value)%></td>			<td align="left" class="texto_Cinza_Bold_02">Estado:</td>			<td align="left" class="texto_Cinza2"><%=(rsCli.Fields.Item("dProUF").Value)%></td>		  </tr>		  <tr>			<td align="left" class="texto_Cinza_Bold_02">Tele:</td>			<td align="left" class="texto_Cinza2"><%=(rsCli.Fields.Item("dPesTele").Value)%></td>			<td align="left" class="texto_Cinza_Bold_02">E-mail:</td>			<td align="left" class="texto_Cinza2"><%=(rsCli.Fields.Item("dPesEmail").Value)%></td>		  </tr>		  <tr>			<td align="left" class="texto_Cinza_Bold_02">Fax:</td>			<td align="left" class="texto_Cinza2"><%=(rsCli.Fields.Item("dProFax").Value)%></td>			<td colspan="2" align="left"> </td>		  </tr>	  </table></td>	</tr>		<tr align="center" class="texto_Laranja_Bold">		  <td> </td>		</tr>	    <% End If ' end rsCli.EOF And rsCli.BOF %>	<% If rsPed.EOF And rsPed.BOF Then %>	  <tr align="center" class="texto_Laranja_Bold">		<td height="40">Não há nenhum item em sua lista de produtos.<br>		  Se você adicionou algum produto anteriormente, sua sessão de orçamento está expirada!<br>		<a href="Solicita_Orcamento.asp">Solicitar outro Orçamento?</a> </td>	  </tr>	  <% End If ' end rsPed.EOF And rsPed.BOF %>	<% If Not rsPed.EOF Or Not rsPed.BOF Then %>		  <tr>		<td>		<table width="100%" border="0" cellpadding="1" cellspacing="1">		  <form name="Solicita_Orcamento" onSubmit="return valida()">			<tr class="texto_Preto_Titulo">			  <td colspan="4">Detalhes do Orçamento </td>			</tr>			<tr class="texto_Cinza">			  <td colspan="4"><span class="texto_Laranja_Bold">O N° de seu Orçamento é: <font color="#FF0000"><%= Session("IDPreOrcamento") %></font></span></td>			</tr>			<tr bgcolor="#CCCCCC" class="texto_Pedro_SubTitulo">			  <td width="8%" align="center">Quantidade</td>				<td width="49%" align="center">Produto</td>				<td width="43%" align="center">Tipo de Máquina </td>				<td width="43%" align="center">Remover</td>			</tr>			<% TotalPodutos = 0While ((Repeat1__numRows <> 0) AND (NOT rsPed.EOF)) TotalPodutos = TotalPodutos + 1%>			  <tr align="center">				<td bgcolor="#E0E2DE" class="texto_Cinza2"><input onBlur="document.forms['Solicita_Orcamento'].action= 'Atualiza_Lista_Produtos.asp?Acao=Atualizar&Produto=<%=(rsPed.Fields.Item("IDProduto").Value)%>&Qtd=<%=(rsPed.Fields.Item("Quantidade").Value)%>'; document.forms['Solicita_Orcamento'].submit()" name="Qtd" type="text" class="text_01" id="Qtd" value="<%= Trim((rsPed.Fields.Item("Quantidade").Value)) %>" size="5"><input name="Produto" type="hidden" id="Produto" value="<%=(rsPed.Fields.Item("IDProduto").Value)%>"></td>				<td bgcolor="#E0E2DE" class="texto_Cinza2"><%=(rsPed.Fields.Item("NomeProduto").Value)%></td>				<td bgcolor="#E0E2DE" class="texto_Cinza2"><%=(rsPed.Fields.Item("NomeTipo").Value)%></td>				<td bgcolor="#E0E2DE" class="texto_Cinza2"><a onclick="return confirm('Você deseja remover este produto da sua lista?')" href="Atualiza_Lista_Produtos.asp?Acao=Remover&Produto=<%=(rsPed.Fields.Item("IDProduto").Value)%>&Qtd=<%=(rsPed.Fields.Item("Quantidade").Value)%>""><img src="../images/Remover.gif" width="9" height="11" border="0"></a></td>			  </tr>			  <%   Repeat1__index=Repeat1__index+1  Repeat1__numRows=Repeat1__numRows-1  rsPed.MoveNext()Wend%>			  <tr class="texto_Laranja_Bold">				<td colspan="2">Produtos na Lista: <%= TotalPodutos %></td>				<td> </td>				<td> </td>			  </tr>			  <tr align="center">				<td colspan="4">				<table width="100%" border="0" cellspacing="1" cellpadding="1">				  <tr align="center" class="texto_Cinza_Bold_02">					<td width="33%" bgcolor="#E0E2DE"> </td>					<td width="37%" bgcolor="#E0E2DE"><a href="Solicita_Orcamento.asp">Adicionar Mais Produtos</a></td>					<td width="30%" bgcolor="#E0E2DE"><a href="Exibe_Orcamento_Final.asp">Fechar Orçamento</a> </td>				  </tr>				</table>				</td>			  </tr>			<tr>			  <td colspan="4"> </td>			</tr>		  </form>		</table>		</td>	  </tr>	  <% End If ' end Not rsPed.EOF Or NOT rsPed.BOF %>  	<tr>	  <td> </td>	</tr>  </table></body></html><%rsCli.Close()Set rsCli = Nothing%><%rsPed.Close()Set rsPed = Nothing%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é:

 

<input name="Produto" type="hidden" id="Produto" value="<%=(rsPed.Fields.Item("IDProduto").Value)%>">

você joga todos os IDProduto em apenas 1 hidden.. assim ele vai jogar mesmo todos os id de produtos no sql.. resultando nisso:

 

UPDATE Pedido SET Pedido.Quantidade = 5 WHERE (((Pedido.IDPreOrcamento)= 43) AND ((Pedido.IDProduto)=5, 6, 14));

você teria q criar 1 hidden para cada produto, ou usar split, ou qq outra forma para quebrar esse hidden..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Noodle,

 

Eu poderia fazer assim:

 

Produtoz = split(Request("Produto"), ",")	intIDPreOrcamento = cstr(Session("IDPreOrcamento"))	Quantidade = split(Request("Qtd"), ",")	For I = 0 To ubound(Quantidade,Produtoz)			SQL2 = "UPDATE Pedido SET Pedido.Quantidade = "&Quantidade(I)&" WHERE (((Pedido.IDPreOrcamento)= "&intIDPreOrcamento&") AND ((Pedido.IDProduto)="&Produtoz(I)&"));"		Response.Write SQL2		Response.End()			abredb.Execute(SQL2)	Next

Pois já utilizo um Split para o campo Qtd, e falta apenas essa pedra no caminho para eu concluir meu sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho q isso resolveria o problema.. so nao precisa fazer o ubound dos 2.. deixa so a quantidade e boa.. testa e depois me fala..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Noodle,

 

Veja como ficou:

UPDATE Pedido SET Pedido.Quantidade = 5, 1 WHERE (((Pedido.IDPreOrcamento)= 39) AND ((Pedido.IDProduto)=6));
Ou seja, o pro saiu do IDProduto para Quantidade e o que eu preciso é apenas adicionar a quantidade certa para determinado produto.

 

E quando eu utilizo o ASP abaixo:

 

Produtoz = split(Request("Produto"), ",")	intIDPreOrcamento = cstr(Session("IDPreOrcamento"))	Quantidade = split(Request("Qtd"), ",")	For I = 0 To ubound(Produtoz,Quantidade)			SQL2 = "UPDATE Pedido SET Pedido.Quantidade = "&Quantidade(I)&" WHERE (((Pedido.IDPreOrcamento)= "&intIDPreOrcamento&") AND ((Pedido.IDProduto)="&Produtoz(I)&"));"		Response.Write SQL2		Response.End()			abredb.Execute(SQL2)	Next
Ele gera o seguinte erro:

Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A000D)

Tipos incompatíveis: 'Quantidade'

/fortalmag_2006/Orcamento/Atualiza_Lista_Produtos.asp, line 22

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é a linha 22?

É esta:

For I = 0 To ubound(Quantidade)
Qualquer coisa, este arquivo encontra-se neste tópico, chama-se Atualiza_Lista_Produtos.asp

 

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Qual é a linha 22?

É esta:

For I = 0 To ubound(Quantidade)
Qualquer coisa, este arquivo encontra-se neste tópico, chama-se Atualiza_Lista_Produtos.asp

 

Muito obrigado.

 

Alguém pode me ajudar?

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.