Ik ben bezig met het maken van een programma dat SQL queries moet oproepen van gegevens die recursief zijn.
De bedoeling is dat ik met een SQL query een Hoofstuk uit een database haal. Vervolgens kan dit hoofdstuk weer een hoofdstuk bevatten.. En dit hoofdstuk kan ook weer een hoofstuk bevatten etc etc.
Wat ik nu doe is gewoon XX while loopjes maken in elkaar om dit voor elkaar te krijgen.. Maar dit is natuurlijk niet de methode die ik wil gebruiken omdat ik niet weet hoeveel hoofdstukken diep het gaat (dit is elke keer verschillend).
Het misschien een beetje onduidelijk verhaal dus hieronder een stuk code met de while loopjes in elkaar.
Dit effect wil ik dus ongeveer bereiken zonder elke keer hard een nieuwe while loop te moeten maken als we weer 1 hoofdstuk dieper gaan..
Ik hoop dat ik het duidelijk heb uitgelegd
De bedoeling is dat ik met een SQL query een Hoofstuk uit een database haal. Vervolgens kan dit hoofdstuk weer een hoofdstuk bevatten.. En dit hoofdstuk kan ook weer een hoofstuk bevatten etc etc.
Wat ik nu doe is gewoon XX while loopjes maken in elkaar om dit voor elkaar te krijgen.. Maar dit is natuurlijk niet de methode die ik wil gebruiken omdat ik niet weet hoeveel hoofdstukken diep het gaat (dit is elke keer verschillend).
Het misschien een beetje onduidelijk verhaal dus hieronder een stuk code met de while loopjes in elkaar.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| strSQL = "SELECT * FROM Hoofdstuk WHERE HoofdstukId = 3"
Set Rs(0) = Db.OpenRecordset(strSQL, dbOpenDynaset)
Do While Not Rs(0).EOF
List1.AddItem Rs(0).Fields("Titel").Value
strSQL = "SELECT * FROM Inhoud WHERE SuperId = " & Rs(0).Fields("HoofdstukId").Value
Set Rs(1) = Db.OpenRecordset(strSQL, dbOpenDynaset)
Do While Not Rs(1).EOF
strSQL = "SELECT * FROM Hoofdstuk WHERE HoofdstukId = " & Rs(1).Fields("SubID").Value
Set Rs(2) = Db.OpenRecordset(strSQL, dbOpenDynaset)
Do While Not Rs(2).EOF
List2.AddItem Rs(2).Fields("Titel").Value
strSQL = "SELECT * FROM Inhoud WHERE SuperId = " & Rs(2).Fields("HoofdstukId").Value
Set Rs(3) = Db.OpenRecordset(strSQL, dbOpenDynaset)
Do While Not Rs(3).EOF
strSQL = "SELECT * FROM Hoofdstuk WHERE HoofdstukId = " & Rs(3).Fields("SubID").Value
Set Rs(4) = Db.OpenRecordset(strSQL, dbOpenDynaset)
Do While Not Rs(4).EOF
List3.AddItem Rs(4).Fields("Titel").Value
Rs(4).MoveNext
Loop
Rs(3).MoveNext
Loop
Rs(2).MoveNext
Loop
Rs(1).MoveNext
Loop
Rs(0).MoveNext
Loop |
Dit effect wil ik dus ongeveer bereiken zonder elke keer hard een nieuwe while loop te moeten maken als we weer 1 hoofdstuk dieper gaan..
Ik hoop dat ik het duidelijk heb uitgelegd
[ Voor 7% gewijzigd door Verwijderd op 03-11-2004 14:39 ]