Ir para conteúdo

POWERED BY:

Arquivado

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

bimpercursso

insert dentro do for

Recommended Posts

Estou tendo dificuldade de em incluir um registro no em um banco SQL Sever, alguem pode me ajudar aqui, vejam

 

 

tenho uma tabela produtos, e uma pagina que pede quantos produtos o cliente que orçar, entao ele digita na caixa de texto um numeor e uma tabela é gerada automatico de acordo com o nuemero de produtos, vejam as imagens abaixo

 

Imagem Postada

 

Imagem Postada

 

 

mas quando eu aperto em enviar ai ele tem que cadastrar no banco, mas da o erro seguinte, vejam

 

Imagem Postada

 

meu codigo asp é esse

 

if produtos = "1" then		'////////		'Array da Quantidade		'///////		Dim Qtd_Array		Qtd_Array = request.form("quantidade")				For Each ii in Request.form						SQL = "INSERT INTO tb_produtos(marca_pro,qtd_pro,descricao_pro) "&_			" VALUES('"&Request.form(ii)&"',"&Request.form(ii)&",'"&Request.form(ii)&"')"			conexao.execute SQL						Response.Write "Num do Campo: " & ii & ": " & Request.form(ii) & "<br>"		 		Next 	end if

mas o erri acontece quando eu digito texto nos campos, pq quando eu digito numeoro ele cadastra no banco, mas cadastra uma linha para cada registro, veja a imagem

 

Imagem Postada

 

alguma sugestao com isso, ja estou perdendo um tempao com isso, ano aguento amis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao é int nao, veja a estrutira da minha tabela

 

create table tb_produtos(   id_pro int identity,   id_orc int,   qtd_pro int,   descricao_pro nvarchar(1000),   marca_pro char(80),   vlunitario_pro money,   CONSTRAINT PK_Produtos PRIMARY KEY(id_pro))

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparentemente deve ser tipo de dados da tabela, já tentou mudar de char pra nvarchar?antes de gravar escreva seu sql no browser pra testar como está sendo montado

Compartilhar este post


Link para o post
Compartilhar em outros sites

dei um response write na variavel sql e trouxe esse resultado

 

INSERT INTO tb_produtos(marca_pro,qtd_pro,descricao_pro) VALUES('1',1,'1')Num do Campo: quantidade[]: 1INSERT INTO tb_produtos(marca_pro,qtd_pro,descricao_pro) VALUES('3',3,'3')Num do Campo: marca[]: 3INSERT INTO tb_produtos(marca_pro,qtd_pro,descricao_pro) VALUES('2',2,'2')Num do Campo: descricao[]: 2

ou seja esta incluidno 3 vezes, sendo que teria que registrar apenas 1 registro com os 2 campos e nao um registro para cada campo

 

 

Passei para nvarchar os campos, mas nada, o mesmo erro

 

 

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

está incluindo 3 vezes porque você fez um for each e vai pegar todos os inputs do formulario, ou seja, cada input é um registro, avocê tem que fazer, exemplos:for i=1 to qtescolhida+1'gravanexte lá no formulario você vai ter que montar uma logica pra identificar os names dos inputs dentro do For. Sugiro assim<input name="nome1"><input name="telefone1">se o cara clicar em mais de um item fica<input name="nome1"><input name="telefone1"><input name="nome2"><input name="telefone2"><input name="nome3"><input name="telefone3">

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz as alteraçoes, vejam

 

 

meu asp if produtos = "1" then		'////////		'Array da Quantidade		'///////		Dim Qtd_Array		Qtd_Array = request.form("quantidade")				'For Each ii in Request.form	 		 for i = 1 to qtescolhida + 1   	 	 			SQL = "INSERT INTO tb_produtos(marca_pro,qtd_pro,descricao_pro) "&_			" VALUES('"&Request.form(i)&"',"&Request.form(i)&",'"&Request.form(i)&"')"			conexao.execute SQL			   		Next	end if

 

 

agora no meu formulario

 

<%for i = 1 to qtdpro%>  <table width="100%" border="0" align="center" cellpadding="2">	<tr>	  <td width="345"><div align="center"></div>		<div align="right">  Quantiade: </div></td>	  <td width="778"> <input name="quantidade[1]" type="text" id="quantidade[1]" size="7"></td>	</tr>	<tr>	  <td valign="top"> <div align="right">Descrição: </div></td>	  <td><textarea name="descricao[2]" cols="40" rows="5" id="descricao[2]"></textarea></td>	</tr>	<tr>	  <td><div align="right">Marca: </div></td>	  <td><input name="marca[3]" type="text" id="marca[3]" size="45"></td>	</tr>	<tr>	  <td colspan="2"> </td>	</tr>	<tr>	  <td colspan="2"><div align="center"> </div></td>	</tr>  </table>  <%next%>

agora ele ano esta inserindo um registro prara cada valor digitado no form mas ele insere apenas o priemrio valor para os 3 campos do registro, exemplo:

 

dgito: 10, 20, 30

 

ele isnere 10 para os tres regitros

 

alguma sugestao??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que eu estou entendendo do assunto você precisa por exemplo cadastrar vários registro de uma só vez, mais você colocou a lógica que o jonathandj falou nos campos?

 

Por ex:

 

<%
Dim VarNumero
For VarNumero = 1 To 5
%>

<input name="quantidade[<% Response.Write(VarNumero) %>]" type="text" id="quantidade[<% Response.Write(VarNumero) %>]" size="7">

<% Next %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao, estou fazendo assim:

 

 

Quando escolho quantos produtos quero orçar ele me gera uma tabelinha com 3 campos, onde esses valores preciso inserir no banco(um registro com os 3 dados, um em cada campo na tabela, ok?)

 

dei um response na variavel SQL e percebi que ele esta pegando apenas o primeiro valores e colocando igual para os outros 2 campos.

 

veja a parte do meu insert

 

if produtos = "1" then		'////////		'Array da Quantidade		'///////		Dim Qtd_Array		Qtd_Array = request.form("quantidade")				'For Each ii in Request.form	 		 for i = 1 to qtdpro + 1   	 	 			SQL = "INSERT INTO tb_produtos(marca_pro,qtd_pro,descricao_pro) "&_			" VALUES('"&Request.form(i)&"',"&Request.form(i)&",'"&Request.form(i)&"')"			response.write sql			conexao.execute SQL			   		Nextresponse.end	end if

 

 

agora no meu formulario esta assim

 

<%for i = 1 to qtdpro%>  <table width="100%" border="0" align="center" cellpadding="2">	<tr>	  <td width="345"><div align="center"></div>		<div align="right">  Quantiade: </div></td>	  <td width="778"> <input name="quantidade[<%=qtdpro%>]" type="text" id="quantidade[<%=qtdpro%>]" size="7"></td>	</tr>	<tr>	  <td valign="top"> <div align="right">Descrição: </div></td>	  <td><textarea name="descricao[<%=qtdpro%>]" cols="40" rows="5" id="descricao[<%=qtdpro%>]"></textarea></td>	</tr>	<tr>	  <td><div align="right">Marca: </div></td>	  <td><input name="marca[<%=qtdpro%>]" type="text" id="marca[<%=qtdpro%>]" size="45"></td>	</tr>	<tr>	  <td colspan="2"> </td>	</tr>	<tr>	  <td colspan="2"><div align="center"> </div></td>	</tr>  </table>  <%next%>  <div align="center">	<input type="Submit" Value="Enviar">  </div></form>

nao sei onde estou errando? parece ser simples isso ai, mas nao sei o que esta acontecendo.

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.