---
title: "Loop?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/90739-loop"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "magnusfeldth"
published: "2003-11-18T21:39:11.000Z"
updated: "2003-11-20T11:58:54.000Z"
replies: 12
views: 380
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/90739-loop"
---

# Loop?

## #1 — magnusfeldth, 2003-11-18T21:39Z

Jag håller på och gör ett forum.

Forumet har olika kategorier, vi kan kalla dem för Frukt, Kött och Mjölk. Till dessa olika kategorier finns trådar.

Kategorierna sparas i en databas och trådarna i en annan.

Jag vill loopa ut forumkategorierna och sedan under respektive forumkategori loopa ut de trådar som hör till respektive kategori.

Typ exempel:

Kött
\- Köttråd nummer 1
\- Köttråd nummer 2

Frukt
\- Skala banan
\- Rotfrukter

Mjölk
\- Muu
\- Mellanmjölk eller standardmjölk?

Jag försökte med denna koden:

```
<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/hhgsdb.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")
    Visa = "SELECT * FROM Forumkategori WHERE Visa ='Ja' Order by Ordning"

   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>

<% Do Until RecSet.EOF %>
<% =RecSet("Rubrik") %>

<%    
                     Set RecSet = Server.CreateObject("ADODB.Recordset")
                     Visa2 = "SELECT top 5 * FROM foruminlagg ORDER BY ForumID DESC"
   RecSet.Open Visa2, Connect, adOpenStatic, adLockOptimistic %>
<% Do Until RecSet.EOF %>
<% =RecSet("Rubrik") %>
<% RecSet.Movenext
loop
%>    
<% RecSet.Movenext
loop
Recset.Close
Connect.Close

Set Recset = Nothing
Set Connect = Nothing
%>
```

men det går åt pipsvängen... hur göra?

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

## #2 — Engine^, 2003-11-18T22:21Z

Byt namn på ditt andra recordset. Som du har nu så skriver du över ditt första recset på en gång. Inte bra ;)

```
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" & Server.MapPath("db/hhgsdb.mdb")

Set objForum = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT Rubrik FROM Forumkategori WHERE Visa ='Ja' ORDER BY Ordning"

objForum.Open strSQL, Connect, adOpenStatic, adLockReadOnly

Do Until RecSet.EOF
  Response.Write RecSet(0) & "<br>"

  Set objThreads = Server.CreateObject("ADODB.Recordset")
  strSQL = "SELECT TOP 5 Rubrik FROM foruminlagg ORDER BY ForumID DESC"
  objThreads.Open strSQL Connect, adOpenStatic, adLockReadOnly

    Do Until RecSet.EOF
      Response.Write "- " & RecSet(0) & "<br>"

      RecSet.Movenext
    Loop

  objThreads.Close

  RecSet.Movenext
Loop

Set objThreads = Nothing

objForum.Close
Set objForum = Nothing

Connect.Close
Set Connect = Nothing
%>
```

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

## #3 — Palle, 2003-11-18T23:58Z

Du måste på ett eller annat sätt spara ID´t på din kategori i tabellen för inläggen så att du via detta id kan 
koppla samman inlägg med rätt kategori, något du enklast gör när du skapar kategorier och sparar nya inlägg.

Här kommer ett litet förslag:
**OBS** Helt otestat då jag inte har Access installerat just nu!

**Tabell1:** Forumkategori
ID &nbsp; \| &nbsp; Kategori &nbsp; \| &nbsp; Visa

**Tabell2:** Foruminlagg
ID &nbsp; \| &nbsp; Rubrik \| &nbsp; KategoriID

Exempel på kod: 

```
[red]<%

Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("db/hhgsdb.mdb")

		Set RecSet = Connect.Execute("SELECT k.ID, k.Kategori, COUNT(i.ID) FROM Forumkategori k, Foruminlagg i WHERE k.Visa='Ja' AND i.KategoriID=k.ID GROUP BY k.ID, k.Kategori ORDER BY 1")
			If NOT RecSet.EOF Then arrKategori = RecSet.GetRows()
			RecSet.Close

		Set RecSet = Connect.Execute("SELECT k.ID, i.ID, i.Rubrik FROM Forumkategori k, Foruminlagg i WHERE i.KategoriID=k.ID GROUP BY k.ID, i.ID, i.Rubrik ORDER BY 1")
			If NOT RecSet.EOF Then arrInlagg = RecSet.GetRows()
			RecSet.Close
		Set RecSet = Nothing

	Connect.Close
Set Connect = Nothing

'//---------------------------------------------------------------------------------------------
'// Output	

x=0
If IsArray(arrKategori) Then
	For i = 0 To UBound(arrKategori, 2)

		'// Kategorier
		intID = arrKategori(0,i)
		strKategori = arrKategori(1,i)
		intAntalInlagg = arrKategori(2,i)
		Response.Write strKategori &"<br>"

		For s = 0 To cInt(intAntalInlagg)-1

			'// Inlägg
			intInlaggID = arrInlagg(1,x)
			strInlaggRubrik = arrInlagg(2,x)
			Response.Write "- "& strInlaggRubrik &" (id:"& intInlaggID &")<br>"
			x=x+1

		Next
		If NOT i = UBound(arrKategori, 2) Then Response.Write "<br>"

	Next
End If

%>[/red]
```

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

## #4 — magnusfeldth, 2003-11-19T14:55Z

Så här ser (förenklat) tabellerna ut:

tabell 1: forumkategori
FKategoriID
Rubrik
Ordning
Visa

tabell 2: Foruminlagg
ForumID
Rubrik
Text
Forumkategori (som kopplas till "Rubrik" på tabellen "forumkategori")

hur ska koden se ut då? Testade Engine^:s kod, men fick detta felmesset:

```
Kompileringsfel i Microsoft VBScript (0x800A0401)
Slut på programsats förväntas.
/hhgspunktse/hhgs/forum.asp, line 29, column 23
objThreads.Open strSQL Connect, adOpenStatic, adLockReadOnly
----------------------^
```

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

## #5 — @nders, 2003-11-19T14:59Z

Släng in ett komma då...

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

## #6 — magnusfeldth, 2003-11-19T15:04Z

ok, fixat kommat :-) ... men nu blir det felmess:

```
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: ''
/hhgspunktse/hhgs/forum.asp, line 24
```

istället... 
line 24:

```
Do Until RecSet.EOF
```

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

## #7 — @nders, 2003-11-19T15:06Z

Då kontrollerar man att Engine^ angett rätt objektnamn i sin kod...

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

## #8 — magnusfeldth, 2003-11-19T15:13Z

skall det vara "Do Until objForum.EOF"? då blir "recset" på rad 25 inkompatibelt istället...

```
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'RecSet'
/hhgspunktse/hhgs/forum.asp, line 25
```

måste jag ändra alla recset? ska jag då skriva för att få ut nåt ur kolumnen Rubrik till exempel? obj.Forum("rubrik") eller?

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

## #9 — Jesper T, 2003-11-19T15:32Z

Och vad med: Do Until NOT objForum.EOF ?

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

## #10 — magnusfeldth, 2003-11-19T15:35Z

> **Jesper T skrev:**
>
> Och vad med: Do Until NOT objForum.EOF ?

???

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

## #11 — magnusfeldth, 2003-11-19T15:53Z

Fått det löst... bytte ut alla recset till recset2 i andra förfrågan.

Dock, har jag inte fått nån bra if-sats som gör att den bara listar inlägg med matchande kolumn "forumkategori" till kolumnen "rubrik" i den första förfrågan.

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

## #12 — Palle, 2003-11-19T22:23Z

Nog snarare så att du ska använda en *WHERE* i den andra sql-satsen..
Hur ser din kod ut nu?

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

## #13 — magnusfeldth, 2003-11-20T11:58Z

nu är problemet löst, jag kan posta koden så att andra kan se hur man kunde göra. Dock kan jag göra detta först i eftermiddag.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/90739-loop
