Avatar billede bbe1379 Nybegynder
28. januar 2003 - 08:58 Der er 4 kommentarer og
1 løsning

Rekursiv funktion og option explicit

G'morgen,

...jeg sidder og bøvler med et diskussionsforum, og er (som 5000 andre før mig) kommet i problemer med træ-strukturen på indlæggene.

Problemet er bare ikke heeelt simpelt.

Jeg har en funtkion, som kalder sig selv, og skriver svarene på en post ud i en hiraki-liste. Det virker også fint, men når jeg sætter "option explicit" ind i dokumentet, og dim'er mine variabler bliver database objektet omdefineret globalt ved hvert gennemløb - og så virker skidtet naturligvis ikke.

Hvordan kan man gøre det smartere??

Her er min funktion:

Function showReplies(IDX,level)

    sql =     "select * FROM forum_messages" & _
            "where parent = " & num2sql(IDX) & " order by messageIDX"
    Set treeRS = exeSQL(sql)

    if not treeRS.EOF and not treeRS.BOF Then

        do while not treeRS.eof

            for i = 0 to level
                showReplies = showReplies & "  "
            next

            if treeRS("messageIDX") = cint(messageIDX) Then
            showReplies = showReplies & "<b>"
            End if

            showReplies = showReplies & "<a href=""forum.asp?" & _
                                        "messageIDX=" & treeRS("messageIDX") & _
                                        "&parentIDX=" & parentIDX & _
                                        "&categoryIDX=" & categoryIDX & _
                                        """>" & treeRS("subject") & "</a>"

            if treeRS("messageIDX") = cint(messageIDX) Then
                showReplies = showReplies & "</b>"
            End if

            showReplies = showReplies &  "<br>"
            showReplies = showReplies &  showReplies(treeRS("messageIDX"),level+1)

        treeRS.movenext
        loop

    End if

End Function
Avatar billede Slettet bruger
28. januar 2003 - 09:02 #1
Det er fordi du Dim' er dine variabler globalt.... så vil de også blive omdefineret globalt

Hvis du dim'er dem inden i funktionen, vil du oprette en ny instans af hver variabel for hvert rekursivt kald. Dermed vil det virke efter hensigten.
Avatar billede Slettet bruger
28. januar 2003 - 09:04 #2
... altså i dit tilfælde:

Flyt din "Dim treeRS" ned i funktionen lige under: "Function showReplies(IDX,level)"
Avatar billede keysersoze Ekspert
28. januar 2003 - 09:12 #3
tag evt et kig på denne side - http://www.html.dk/scripts/asp/00015/ - måske kan den hjælpe dig på vej
Avatar billede bbe1379 Nybegynder
28. januar 2003 - 09:16 #4
satans også - da jeg prøvede det virkede det ikke, men det gør det nu :)

Du får point alligevel
Avatar billede Slettet bruger
28. januar 2003 - 09:19 #5
Det kan jo drille det skidt.... takker for points.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester