---
title: "RecSet i RecSet, eller hur annars ?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/12169-recset-i-recset-eller-hur-annars"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "nill"
published: "2001-10-17T10:05:00.000Z"
updated: "2001-10-18T17:57:00.000Z"
replies: 17
views: 247
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/12169-recset-i-recset-eller-hur-annars"
---

# RecSet i RecSet, eller hur annars ?

## #1 — nill, 2001-10-17T10:05Z

Försöker göra detta:

Användarna ska ha möjligheten att svar på en del frågor, vilka lagras i tabellen 'fragor'. 
Svaren lagras sen i tabellen 'info'. Varför jag vill ha det så här är för att jag vill senare på ett enkelt sätt kunna lägga till fler frågor.

Problemet är nu när jag loopar fram alla frågorna med alla textinputs så vill jag även att om man redigerar sin info att de gamla svaren ska synas.   Men det går ju inte så bra eftersom det är i loopen då frågorna loopas upp och svaren ligger inte samma tabell =  RecSet i RecSet vilket inte fungerar vad jag vet...    
något förslag på hur jag ska lösa detta ?

oj, det blev långt..   hoppas nån orkar läsa det :)

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

## #2 — erka, 2001-10-17T10:07Z

Varför inte lägga det tigidare värdet i textrutan som value ? från start då. Visa lite kod och ditt inlägg vad inte långt ;) välkommen till wf föresten

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

## #3 — nill, 2001-10-17T14:41Z

Jo men det är precis det jag vill göra. Men det blir ju RecSet i RecSet :(

Nuvarande kod (där jag inte fått till value som ska egentligen ska hämta gamla svaren)

\<FORM METHOD="post" NAME="formen" onSubmit="return ValidateSite()" ACTION="normal.asp?what=edited"\>

		\<%
		Fragor = "SELECT \* FROM fragor ORDER BY ID "
   		RecSet.Open Fragor, Connect, adOpenStatic, adLockOptimistic

		Do Until RecSet.EOF
			%\>
			\<B\>\<%=RecSet("fraga")%\>\</B\>\<BR\>
			\<input type="text" SIZE="30" MAXLENGTH="30" VALUE="" name="\<%=RecSet("ID")%\>" CLASS="input"\>\<P\>
			\<%

			RecSet.MoveNext
		Loop

		RecSet.Close
		%\>
		\<P\>

		\<input type="submit" value="OK" CLASS="input" STYLE="font-weight: 900;"\>\<P\>
		\<input type="reset" value="Återställ" CLASS="input" STYLE="font-weight: 900;"\>

	\</FORM\>

Tack förresten :)

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

## #4 — LarsG, 2001-10-17T14:50Z

Du kan väl hämta svaret i samma
sql-fråga.

```
<%
Fragor = "SELECT * FROM fragor Inner join info on fragor.id = info.id ORDER BY fragor.ID "
RecSet.Open Fragor, Connect, adOpenStatic, adLockOptimistic
```

och sedan lägga in svaret i fältet. 

(Nu vet jag inte hur dina tabeller är relaterade så att du får kanske ändra på join-villkoret.)

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

## #5 — nill, 2001-10-17T15:45Z

Nu ligger tyvärr join-grejs utöver min kunskap :(    Finns det någon bra guide till det ? (typ webstudio)

Det jag vill göra är:
har en tabell (fragor)      
men måset i samma sql-sats ha    med kolunnen 'svar' från taballen 'info'

och det ska bara vara svaren där   Session("userid") är   userid i   tabellen info samt där ID i tabellen fragor är = fragID  i tabellen info

frågorna loopas alltså ut och då måste de kopplas ihop med rätt svar samt rätt användare :/

jobbigt värre...

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

## #6 — LarsG, 2001-10-17T16:33Z

```
<%
Fragor = "SELECT * " & _
" FROM fragor Inner join info " & _
" on fragor.id = info.fragid " & _
" where info.userid = " & session("userid") & _
" ORDER BY fragor.ID "
RecSet.Open Fragor, Connect, adOpenStatic, adLockOptimistic
```

info om sql:
 <http://www.w3schools.com/sql/>

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

## #7 — nill, 2001-10-17T17:00Z

tack så jättemycket..   ursäkta att jag är lite jobbig men, det fungerade inte riktigt. 

Så här är koden nu:
\<FORM METHOD="post" NAME="formen" onSubmit="return ValidateSite()" ACTION="normal.asp?what=edited"\>

		\<%
		
		Fragor = "SELECT \* " & " FROM fragor Inner join info " & " on fragor.id = info.fragid " & " where info.userid = " & session("userid") & " ORDER BY fragor.ID "
		RecSet.Open Fragor, Connect, adOpenStatic, adLockOptimistic

		Do Until RecSet.EOF
			%\>
			\<B\>\<%=RecSet("fraga")%\>\</B\>\<BR\>
			\<input type="text" SIZE="30" MAXLENGTH="30" VALUE="\<%=RecSet("svar")%\>" name="\<%=RecSet("ID")%\>" CLASS="input"\>\<P\>
			\<%

			RecSet.MoveNext
		Loop

		RecSet.Close
		%\>
		\<P\>

		\<input type="submit" value="OK" CLASS="input" STYLE="font-weight: 900;"\>\<P\>
		\<input type="reset" value="Återställ" CLASS="input" STYLE="font-weight: 900;"\>

	\</FORM\>

Det som hände var att att Loopen gjordes en gång.. alltså endast en inputbox loopades fram. förstår inte riktigt varför.

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

## #8 — LarsG, 2001-10-17T17:33Z

Då verkar det som om du bara får 1 post.

Kan det vara så att användaren bara har svar på en fråga eller vet du att det finns poster för alla frågor i infotabellen? I så fall får du skriva frågan som en outer join

```
Fragor = "SELECT * " & " FROM fragor left outer join info " & " on fragor.id = info.fragid and info.userid = " & session("userid") & " ORDER BY fragor.ID "
```

Kan du testa ut sql-frågan separat? 

```
Fragor = "SELECT * " & " FROM fragor Inner join info " & " on fragor.id = info.fragid " & " where info.userid = " & session("userid") & " ORDER BY fragor.ID "
response.write fragor
```

så kan du klippa ut sql-satsen och köra den i något verktyg.

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

## #9 — nill, 2001-10-17T17:51Z

användaren har bara svar på en fråga i info-tabellen. Han ska ju kunna redigera sin info även om han inte fyllt i allting innan, sorry :)

Provade då din outerjoin-kod och fick det här meddelandet:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
\[Microsoft\]\[Drivrutin för ODBC Microsoft Access\] Kopplingsuttrycket stöds inte.

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

## #10 — nill, 2001-10-18T13:25Z

var det ingen som kunde det eller glömde ni bort det ? :)

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

## #11 — LarsG, 2001-10-18T14:58Z

Verkar vara lite begränsningar i Access

Ett (något) krångligare alternativ.

```
sql = _
"select f.id,f.fraga,i.svar " &_
" from fragor as f inner join " &_
" info as i on f.id = i.fragid " & _
" where i.userid = 1 " & _
" union " & _
" select f.id,f.fraga,' ' " & _
" from fragor as f " & _
" where id not in " & _
" (select fragid from info " & _
" where userid = " & session("userid") & ")"
```

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

## #12 — nill, 2001-10-18T15:09Z

Tack så mycket men hmm igen..     

Nu loopades alla inputboxar och frågor ut  men svaren (value i inputboxarna) kom inte ut ...

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

## #13 — nill, 2001-10-18T15:15Z

samt att ifall alla svar är ifyllda så loopas ingen fråga, inputbox eller svar ut..     

endast de frågor vars svar som är tomma loopas alltså ut.

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

## #14 — LarsG, 2001-10-18T16:35Z

```
sql = _
"select f.id,f.fraga,i.svar " &_
" from fragor as f inner join " &_
" info as i on f.id = i.fragid " & _
" where i.userid = [b]" & session("userid") [/b]& _
" union " & _
" select f.id,f.fraga,' ' " & _
" from fragor as f " & _
" where id not in " & _
" (select fragid from info " & _
" where userid = " & session("userid") & ")"
```

Lite cut och paste problem, ursäkta.

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

## #15 — nill, 2001-10-18T16:43Z

Åhhy...    my saviour. Det fungerade..     är dig evigt tacksam :)

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

## #16 — nill, 2001-10-18T17:06Z

haha..  skulle vara dig evigt tacksam gånger två om jag fick lite hälp med koden som tar emot informationen.

Vill jag alltså göra med Request.Form men det blir ju lite jobbigt eftersom jag inte har ett bestämt antal "inputboxar"/frågor.    Samt är det ju inte säkert att det ska göras en ny post(RecSet.AddNew) utan den kanske bara ska ersättas...

skulle verkligen uppskattas om jag fick lite hjälp med detta också.

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

## #17 — LarsG, 2001-10-18T17:34Z

Döp alla textfält till samma namn. Lägg till ett hidden fält som innehåller id för frågan

```
Do Until RecSet.EOF
%>
<B><%=RecSet("fraga")%></B><BR>
<input type="text" SIZE="30" MAXLENGTH="30" VALUE="<%=RecSet("svar")%>" name="svar" CLASS="input"><P>
<input type="hidden" name="id" value="<% =recset("id")%>">
<%

RecSet.MoveNext
Loop

RecSet.Close
%>
<P>
```

På sidan som tar emot formuläret så kan du göra så här

```
set connect = server.createobject("adodb.connection")
connect.open "dsn"

for i = 1 to request.form("id").count
  sql = "update info set svar = '" & replace(request.form("svar")(i),"'","''") & "'" _
  & " where userid = " & session("userid") _
  & " and fragid = " & request.form("id")(i)

  connect.execute sql,rows,128
  if rows = 0 then 'fanns ej sedan tidigare, gör insert
     sql = "insert into info values(userid,fragid,svar) values " _
     & "(" & session("userid") & "," & request.form("id")(i) & ",'" _
     replace(request.form("svar")(i),"'","''") & "')"
     connect.execute sql,,128
  end if
next
connect.close
```

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

## #18 — nill, 2001-10-18T17:57Z

tackar så jättemycket.   nu ska jag nog inte vara jobbig på ett tag.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/12169-recset-i-recset-eller-hur-annars
