---
title: "For Each ITem i Requestform pryl vägrar funka?!??"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/7328-for-each-item-i-requestform-pryl-vägrar-funka"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "brw"
published: "2000-12-03T13:00:00.000Z"
updated: "2000-12-05T16:18:00.000Z"
replies: 12
views: 360
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/7328-for-each-item-i-requestform-pryl-vägrar-funka"
---

# For Each ITem i Requestform pryl vägrar funka?!??

## #1 — brw, 2000-12-03T13:00Z

Jag har en sida där jag listar poster från en databas.
Det är 5 poster med 3 värden på varje post ex:

```
Namn     Telnr  Faxnr
Olle     21     22
Benny    25     18
Kristin  10     15
```

Jag listar värdena i ett formulär typ:

```
<form name="formular" action="update.asp" method="post">

<%Do until RS.EOF%>

<input type="hidden" value="<%=RS("id")%>" name="hidden">

<input type="text" name="namn" value="<%=RS("namn")%>">
<input type="text" name="telnr" value="<%=RS("telnr")%>">
<input type="text" name="faxnr" value="<%=RS("faxnr")%>">

<% move next osv... bla bla.%>

<input type="submit" value="Uppdatera poster">

</form>
```

Frågan är nu hur jag ska göra med sidan som skall ta emot värdena.. Hur jag ska använda 
For each item

Jag har försökt lite...

```
  Set RS = Server.CreateObject("ADODB.Recordset")

For each item in Request.Form

  Uppdatera = "SELECT * FROM personer WHERE Id = " & Request.Form("id") & " "
  RS.Open Uppdatera, Connection, adOpenStatic, adLockOptimistic 

	RS("namn") = FixaTecken(Request.Form("namn"))
	RS("telnr") = FixaTecken(Request.Form("telnr"))
	RS("faxnr") = FixaTecken(Request.Form("faxnr"))

RS.Update

Next
RS.Close
Connection.Close
```

Någon som vet hur jag ska göra?

Permalänk: https://www.webforum.nu/p/7328

## #2 — emission, 2000-12-03T15:37Z

Baserat på din kod:

```
Set RS = Server.CreateObject("ADODB.Recordset")
For i=1 to Request.Form("hidden").count

Uppdatera = "SELECT * FROM personer WHERE Id = " & Request.Form("hidden")(i)
RS.Open Uppdatera, Connection, adOpenStatic, adLockOptimistic 

RS("namn") = FixaTecken(Request.Form("namn")(i))
RS("telnr") = FixaTecken(Request.Form("telnr")(i))
RS("faxnr") = FixaTecken(Request.Form("faxnr")(i))

RS.Update

Next
RS.Close
Connection.Close
```

Permalänk: https://www.webforum.nu/p/252381

## #3 — brw, 2000-12-03T16:31Z

Hmmm blir följande fel:

ADODB.Recordset fel '800a0e78' 

Åtgärden som programmet begärt är inte tillåten om objektet är stängt. 

Och sen uppdaterar den inte värdena heller kan det saknas något?

/brw

Permalänk: https://www.webforum.nu/p/252382

## #4 — emission, 2000-12-03T17:18Z

Hmmm...lustigt. Nåja, gör uppdateringen med en UPDATE-sats i stället, så blir det bättre på alla sätt..

```
Uppdatera = "UPDATE personer SET namn='" & FixaTecken(Request.Form("namn")(i)) & "',telnr='" & FixaTecken(Request.Form("telnr")(i)) & "',faxnr='" & FixaTecken(Request.Form("faxnr")(i)) & "' WHERE Id = " & Request.Form("hidden")(i)

Connection.Execute Uppdatera
```

Permalänk: https://www.webforum.nu/p/252383

## #5 — brw, 2000-12-03T19:34Z

Hehe den kör allt och det ser ut att fungera när jag kör med din senaste kod men den uppdaterar inte i databasen. jag kör response.write på alla prylar och allt ser ut att funka men den uppdaterer tamefan inte i databasen.. jag har accessdatabas om det kan vara något som stör ut?

Permalänk: https://www.webforum.nu/p/252384

## #6 — brw, 2000-12-03T19:41Z

Nu har jag kommit på det... den struntar i allt som står efter For  satsen fram till next av nån konstig anledning?

Permalänk: https://www.webforum.nu/p/252385

## #7 — brw, 2000-12-04T16:41Z

Emission... Vad är det för fel?
Varför struntar den i For satsen?

/brw

Permalänk: https://www.webforum.nu/p/252386

## #8 — emission, 2000-12-04T20:00Z

Läggs ID-numret verkligen i ett fält som heter "hidden"?

Permalänk: https://www.webforum.nu/p/252387

## #9 — brw, 2000-12-04T20:15Z

Nej det heter ID jag skrev fel till dig men det har jag ändrat till nu typ..

koden ser ut exakt som du skrivit den till mig. Jag kan typ skriva vad som helst i SQLsatsen typ select \* from nisse utan att det blir något fel när jag kör sidan.. 

när jag kör response.write på alla värden som kommer så ser det korrekt ut.. men den struntar i allt som står inom FOR satsen verkar det som?

Permalänk: https://www.webforum.nu/p/252388

## #10 — emission, 2000-12-04T20:22Z

Om den heter "ID" så ska det vara: 

For i=1 to Request.Form("ID").count
Uppdatera = "SELECT \* FROM personer WHERE Id = " & Request.Form("ID")(i)

Permalänk: https://www.webforum.nu/p/252389

## #11 — brw, 2000-12-04T21:22Z

Hmm koden ser ut enligt följande nu:

```
Response.Write Request.Form("namn") & "<br>"
Response.Write Request.Form("telnr") & "<br>"
Response.Write Request.Form("faxnr") & "<br>"

Set RS = Server.CreateObject("ADODB.Recordset")
For i=1 to Request.Form("id").count
Uppdatera = "SELECT * FROM personer WHERE Id = " & Request.Form("id")(i)
RS.Open Uppdatera, Connection, adOpenStatic, adLockOptimistic 

RS("namn") = FixaTecken(Request.Form("namn")(i))
RS("telnr") = FixaTecken(Request.Form("telnr")(i))
RS("faxnr") = FixaTecken(Request.Form("faxnr")(i))

RS.Update

Next
'RS.Close
Connection.Close
```

Och anledningen till att RS.Close är förbockat är att jag annars får felet:
ADODB.Recordset fel '800a0e78' 

Åtgärden som programmet begärt är inte tillåten om objektet är stängt. 

i övrigt ser allt ut att fungera

och jag skulle kunna skriva följande:

```
Response.Write Request.Form("namn") & "<br>"
Response.Write Request.Form("telnr") & "<br>"
Response.Write Request.Form("faxnr") & "<br>"

Set RS = Server.CreateObject("ADODB.Recordset")
For i=1 to Request.Form("id").count
Uppdatera = "SELECT * FROM nisse WHERE Id = " & Request.Form("id")(i)
RS.Open Uppdatera, Connection, adOpenStatic, adLockOptimistic 

blblaljadsfkjadfkjaösdf

RS("namn") = FixaTecken(Request.Form("namn")(i))
RS("telnr") = FixaTecken(Request.Form("telnr")(i))
RS("faxnr") = FixaTecken(Request.Form("faxnr")(i))

RS.Update

Next
'RS.Close
Connection.Close
```

och jag får inget felmeddelande.. verkar som om den struntar i for-satsen

Permalänk: https://www.webforum.nu/p/252390

## #12 — PatrikB, 2000-12-05T14:05Z

Hello,

är det en uppdatering av redan befintliga data eller ska det in ny info i db?

cya,

Permalänk: https://www.webforum.nu/p/252391

## #13 — PatrikB, 2000-12-05T16:18Z

Hello,

ok, om det är en uppdatering kan du använda dig av följande kod.
Med den kan du lista hur många du vill och endast uppdatera de som du har ändrat.
OBS!!! ändra ConnectionString så att den överensstämmer med sökvägen till din db. Du kanske får ändra lite mer, men hoppas att det funkar rakt av:

personer.asp

```
<%
Option Explicit

Response.Buffer = True
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY bgcolor="#FFFFFF">
<form method="post" action="personer_upd.asp">
  <table border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td>Namn</b></td>
      <td>Telnr</td>
      <td>Faxnr</td>
      <td align="center">Ändra</td>
    </tr>
<%
Dim objConn
Dim strSQL
Dim objRS
Dim intId
Dim strNamn
Dim strTelnr
Dim strFaxnr

Set objConn = Server.CreateObject("ADODB.Connection")
With objConn
	.Provider = "Microsoft.Jet.OLEDB.4.0"
	.ConnectionString = "Data Source=x:\db-kat\dbnamn.mdb"
	.Open
End With

strSQL = "SELECT id, namn, telnr, faxnr " & _
		"FROM personer " & _
		"ORDER BY id ASC"
		
Set objRS = Server.CreateObject("ADODB.Recordset")
	objRS.Open strSQL, objConn, 0, 1
	
	While Not objRS.EOF
		intId = objRS(0)
		strNamn = objRS(1)
		strTelnr = objRS(2)
		strFaxnr = objRS(3)
%>
    <tr> 
      <td> 
        <input type="text" name="txtNamn<% =intId%>" size="40" value="<% =strNamn%>">
      </td>
      <td> 
        <input type="text" name="txtTelnr<% =intId%>" size="20" value="<% =strTelnr%>">
      </td>
      <td> 
        <input type="text" name="txtFaxnr<% =intId%>" size="20" value="<% =strFaxnr%>">
      </td>
      <td align="center"> 
        <input type="checkbox" name="id" value="<% =intId%>">
      </td>
    </tr>
<%
		objRS.MoveNext
	Wend
	
	objRS.Close
Set objRS = nothing
%>
    <tr align="center"> 
      <td colspan="3"><br>
        <input type="submit" name="Submit" value="Ändra">
      </td>
    </tr>
  </table>
</form>
</BODY>
</HTML>
<%
	objConn.Close
Set objConn = nothing
%>
```

personer_upd.asp

```
<%
Option Explicit

Response.Buffer = True
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY bgcolor="#FFFFFF">
<%
Dim strRFid
Dim arrRFid
Dim objConn
Dim intId
Dim strNamn
Dim strTelnr
Dim strFaxnr
Dim i
Dim strSQL

strRFid = Request.Form("id")

Set objConn = Server.CreateObject("ADODB.Connection")
With objConn
	.Provider = "Microsoft.Jet.OLEDB.4.0"
	.ConnectionString = "Data Source=x:\db-kat\dbnamn.mdb"
	.Open
End With

	arrRFid = Split(strRFid,",")
	
	For i = 0 TO UBound(arrRFid)
		intId = Trim(arrRFid(i))
		strNamn = Request.Form("txtNamn" & intId)
		strTelnr = Request.Form("txtTelnr" & intId)
		strFaxnr = Request.Form("txtFaxnr" & intId)
		
		strSQL = "UPDATE personer SET " & _
				"namn = '" & strNamn & "'," & _
				"telnr = '" & strTelnr & "'," & _
				"faxnr = '" & strFaxnr & "' " & _
				"WHERE id = " & intId
				
			objConn.Execute(strSQL)
	Next
	
	objConn.Close
Set objConn = nothing
%>
</BODY>
</HTML>
```

cya

Permalänk: https://www.webforum.nu/p/252392

---

Tråden på webben: https://www.webforum.nu/amne/asp/7328-for-each-item-i-requestform-pryl-vägrar-funka
