---
title: "Rekursiv funktion?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/98692-rekursiv-funktion/page2"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Jesper T"
published: "2004-03-03T22:42:29.000Z"
updated: "2004-08-16T21:43:00.000Z"
replies: 30
views: 1310
page: 2
pages: 2
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/98692-rekursiv-funktion"
---

# Rekursiv funktion?

_Sida 2 av 2._

## #21 — Sebbe, 2004-03-05T17:14Z

> **Jesper T skrev:**
>
> Ehhh....
>
> ```
> "<li>" & objRubrik(2) & "</li>"
> ```
>
> 
> Kan ju knappast bli : 
>
> ```
> <li>Games 
> <ul>
> ```
>
>  ;)

Läs min redigering. ;)

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

## #22 — Engine^, 2004-03-05T17:16Z

Hehe... lite för snabb där **Sebbe** :)

Har du testat min reviderade funktion, **Jesper T**?

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

## #23 — Jesper T, 2004-03-05T17:24Z

Jag labbar lite.
PrintTree objNode(0, intDepth + 1)
Skall väl vara
PrintTree objNode(0), intDepth + 1

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

## #24 — Engine^, 2004-03-05T17:29Z

Precis... jag såg den tabben själv :r och ändrade den...

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

## #25 — Jesper T, 2004-03-05T17:31Z

> Operation is not allowed when the object is open. 
> 
> /menu/Default.asp, line 22

\--\>objChild.Open strSQL, objConn

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

## #26 — Sebbe, 2004-03-05T17:32Z

Nu stör jag igen. ;)
Om det nu är så att Engine^s kod inte funkar så tror jag nog att det här är som du vill ha det:

```
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db.mdb")
intSpace = 0

Sub PrintTree(intParent)
  strSQL = "SELECT nodeId, nodeParent, nodeText FROM tblNodes WHERE nodeParent = " & intParent
  Set objRubrik = objConn.Execute(strSQL)

  Response.Write(Space(intSpace * 2) & "<ul>" & vbCrLf)
  intSpace = intSpace + 1

  Do Until objRubrik.EOF
    strSQL = "SELECT nodeParent FROM tblNodes WHERE nodeParent = " & objRubrik(0)
    Set objNode = objConn.Execute(strSQL)

    If NOT objNode.EOF Then
      Response.Write(Space(intSpace * 2) & "<li class=""toggle"">" & objRubrik(2) & vbCrLf)
      intSpace = intSpace + 1
      PrintTree objNode(0)
    Else
      Response.Write(Space(intSpace * 2) & "<li>" & objRubrik(2) & "</li>" & vbCrLf)
    End If

    objNode.Close : Set objNode = Nothing
    objRubrik.MoveNext
  Loop

  objRubrik.Close : Set objRubrik = Nothing
  intSpace = intSpace - 1

  If intSpace = 0 Then
    Response.Write("</ul>" & vbCrLf)
  Else
    Response.Write(Space(intSpace * 2) & "</ul>" & vbCrLf & Space((intSpace - 1) * 2) & "</li>" & vbCrLf)
    intSpace = intSpace - 1
  End If
End Sub

PrintTree 0

objConn.Close : Set objConn = Nothing
%>
```

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

## #27 — Engine^, 2004-03-05T17:40Z

Det tråkiga med att inte kunna testa koden är ju att det dyker upp sådana där småsaker då och då :l

Fungerar inte **Sebbe**s variant kommer en till av min här :)

```
Sub PrintTree(intParent, intDepth)
  Dim objNode, objChild

  strSQL = "SELECT intNode, strNamn FROM tblTree WHERE intParent = " & intParent

  Set objNode = Server.CreateObject("ADODB.Recordset")
  Set objChild = Server.CreateObject("ADODB.Recordset")

  objNode.Open strSQL, objConn

  While Not objNode.EOF
    strSQL = "SELECT 1 FROM tblTree WHERE intParent = " & objNode(0)

    [b]If objChild.State = 1 Then objChild.Close[/b]

    objChild.Open strSQL, objConn

    If objChild.EOF Then
      Response.Write Space(intDepth * 4) & "<li>" & objNode(1) & "</li>"
    Else
      Response.Write "<li>" & Space(intDepth * 4) & "<ul>" & objNode(1)

      PrintTree objNode(0), intDepth + 1

      Response.Write "</ul></li>"
    End If

    objNode.MoveNext
  Wend

  Set objChild = Nothing
  
  objNode.Close : Set objNode = Nothing
  objConn.Close : Set objConn = Nothing
End Sub

Reponse.Write "<ul>"
PrintTree 0, 0
Response.Write "</ul>"
```

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

## #28 — Jesper T, 2004-03-05T17:47Z

Ha ha,, här var det tävling!
Sebbe vann, fast Engine^, du gjorde ett bra jobb!
Tack vänner!

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

## #29 — Sebbe, 2004-03-05T17:48Z

Weee! Vassego. :D ;)

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

## #30 — Engine^, 2004-03-05T17:50Z

Slagen på mållinjen :e Grattis **Sebbe** :)

Och ett varsågod till **Jesper T** :)

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

## #31 — per-v, 2004-08-16T21:43Z

Visst, nu är jag sent ute, men jag fick hjälp av det här, så jag tar och kommenterar...

Jag lägger min röst på Engine^s version då Sebbes producerar en "\</li\>" tag efter att listan genererats färdigt. Kan dock bero på att jag implementerat helt galet.

Sebbe, din lösning gav mig dock inspiration till annat :)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/98692-rekursiv-funktion/page2  
Föregående sida: https://www.webforum.nu/amne/asp/98692-rekursiv-funktion.md
