Inquiridor
For Each - ASP

Pergunta
-
Olá pessoal!!! Sou novato e estou precisando de ajuda!!!
Tenho um form que contem dois campos um input text , um select e submit. (quantidade, tipo de acabamento e enviar)
Consegui realizar um for each que atualiza (insere) dados em um banco de dados quando clicado no enviar, mas no local do acabamento esta salvando o valor da quantidade, ja tentei alterar mas não conheço muito sobre for each.
Abaixo seque o codigo apenas do form e da instrução Insert:
Form:
<form method="post" action="atualiza.asp">
<input type="text" name="<% = rsItensPedido("itens.idproduto")%>" value="<% =rsItensPedido("qtdeProduto") %>">
<select size="1">
<option value="<% = rsItensPedido("itens.acabamento")%>"><% = rsItensPedido("itens.acabamento")%></option>
<option value="Bicromatizado">Bicromatizado</option>
<option value="Zincado">Zincado</option>
Insert:
For Each field_Name in Request.Form
strInsItem = "INSERT into Itens (CodPedido, idProduto, acabamento, qtdeProduto) VALUES (" & Session("codPed") & ", " & field_Name & ", " & Request.Form(field_Name) & ", " & Request.Form(field_Name) & ")"
Muito obrigado pela atenção.
Todas as Respostas
-
Olá.
Acho q vc nao precisa de for each. Tenta fazer assim:
De nomes fixo para o input e o select:
<input type="text" name="txtQtd">
<select size="1" name="selTpAcab">E depois monte o insert sem usar o for each, passando os valores do Form desta forma:
Request.Form("txtQtd")
Request.Form("selTpAcab") -
F1rm10,
Cara valeu pela resposta!!!
Já tentei isso, mas o que ocorre é que os campos txtQtd e txtAcab pega dados de uma tabela e por sua vez essa tabela tem varios itens, quando faço dessa forma da erro, diz que a quantidade de campos não coincidem.
Consegui fazer de outra forma, só naum sei se é a melhor!
'***** Pega os valores do formulario **************************************************************************************************************** x1 = split(request.Form("txtPed"),",") x2 = split(request.Form("txtIdProd"),",") x3 = split(request.Form("txtqtde"),",") x4 = split(request.Form("txtAcab"),",") '***** Se o valor enviado pelo form for diferente de vazio deleta todos os item do pedido X ***************************************************** IF Request.Form <> "" THEN conexaodb.Execute "DELETE FROM Itens WHERE codPedido = " & session("codPed") '***** realiza um for na quantidade de itens no array x1 ******************************************************************************************** for x=0 to Ubound(x1) '***** Se X3 for diferente de zero realiza o insert no banco de dados ******************************************************************************* IF x3(x) <> 0 THEN '***** Insere dos dados na tabela itens ************************************************************************************************************* strInsItem = "INSERT into Itens (CodPedido, idProduto, acabamento, qtdeProduto) VALUES ( '"&x1(x)&"', '"&x2(x)&"', '"&x4(x)&"', '"&x3(x)&"' )" Set rsIInstem = conexaodb.Execute(strInsItem) Set rsIInstem = Nothing End if Next End if Call fechaconexao response.redirect ("cesta.asp")
Muito obrigado!
Abraços! -
Reynaldo, neste seu caso, acho que o melhor a fazer é criar nomes dos campos com o ID junto, exemplo. (dinamicamente)<input type="text" name="produto_<%=codigo%>" />Assim no for each com um split ou com função de busca de string você consegue ir buscar de qual ID pertence cada campo, creio que fique bem parecido com seu ultimo código.AbraçoEstevam
**** Se a reposta foi útil, então não esqueça de marca-lá. *** -
-
Olá.
Entendi, são vários items. O q foi proposto pelo Luiz é uma boa solução tb. Só algumas dicas:
-Se estiver usando SQL Server, crie Stored Procedure(Tem melhor desempenho e é mais seguro).
-Vc nao precisa criar um RecordSet no comando de insert:
Set rsIInstem = conexaodb.Execute(strInsItem)
vc pode pegar o retorno numa variavel assim:
intTotalInserido = conexaodb.Execute(strInsItem)
Boa sorte.