Funktion der finder parentid for et givent id
Jeg har et problem med en funktion. Kort fortalt har jeg en række menupunkter som har en ID og en ParentID, hvor ParentID'et angiver hovedkategoriern for kategorien.Det min funktion så skal, er at finde alle ID'er på samtlige underkategorier (og deres underkategorier) til en kategori. Den skal kunne gå så mange trin ned som der er underkategorier til en kategori.
Pt. har jeg følgende kode:
Function FindIDer(ByVal ID)
Dim idArr(1000)
dim idArrIdx, sql0, rs0, sql1, inClause, dblCommaPos, rs1
idArrIdx = 0
sql0 = "SELECT id FROM kategorier WHERE ParentID = " & id
Set rs0 = Conn.Execute(sql0)
Do While Not rs0.EOF
idArr(idArrIdx) = rs0("id")
idArrIdx = idArrIdx + 1
rs0.MoveNext
Loop
If idArrIdx <> 0 Then
inClause = Join(idArr, ",")
dblCommaPos = InStr(inClause, ",,")
inClause = Left(inClause, dblCommaPos-1)
sql1 = "SELECT id FROM kategorier WHERE ParentID IN (" & inClause & ") AND Aktiv = 1"
Set rs1 = Conn.Execute(sql1)
Do While Not rs1.EOF
idArr(idArrIdx) = rs1("id")
idArrIdx = idArrIdx + 1
rs1.MoveNext
Loop
End If
idArr(idArrIdx) = id
inClause = Join(idArr, ",")
dblCommaPos = InStr(inClause, ",,")
inClause = Left(inClause, dblCommaPos-1)
FindIDer = " Or ParentID=" & Replace(inClause, ",", " Or ParentID = ")
End Function
Men som det ses, så henter koden kun id'et på de første 2 trin af kategorien og ikke dem alle. Er der nogen der kan hjælpe med at ændre denne funktion til så den giver mig det jeg søger. Det skal jo nok være noget med at funktionen kalder sig selv igen og igen.
