19. december 2000 - 13:08Der er
25 kommentarer og 1 løsning
Forum
Jeg er ved at lave et forum, der minder lidt om det på activserverpages. Er det muligt i ASP og lave rekursive kald til en funktion ? Jeg skal kalde en funktion, som har et ResultSet der fortæller hvilke svar der er til et andet svar. (Alle spm og alle svar skal være på samme side) Problemet er at mit ResultSet bliver overskrevet, så funktionen ikke ved hvor langt den er nået i rækken.
Er det derfor muligt at lave et nyt instance af funktionen, eller er der en anden måde at gøre dette på ?
Efter ti år i London, Madrid, Paris og Utrecht kommer Sabios AI-fokuserede program af arrangementer om kundeoplevelser, ‘Disrupt’, for første gang til Danmark.
FUNCTION showDocumentStructure(parentid) DIM isFolder, localRS Set localRS = Server.CreateObject(\"ADODB.RecordSet\")
SQL=\"SELECT docid, name, title, isfolder FROM documents WHERE parentid=\" & parentid & \" ORDER BY title\" Set localRS = Conn.Execute(SQL)
IF NOT localRS.EOF THEN WHILE NOT localRS.EOF WriteLn \"<A HREF=\"\"\" & localRS(1) & \"\"\">\" & localRS(2) & \"</A><BR>\" isFolder = localRS(3) IF isFolder=\"1\" THEN call showDocumentStructure(localRS(0)) localRS.MoveNext WEND END IF END FUNCTION
Dim RS SQL=\"select * from forum where id=\" & child set rs=conn.execute(sql) do while rs.eof=false response.write \"<br>\" & rs(\"subject\") reply rs(\"id\") rs.movenext loop
end function
Når du gør således bliver dit resultset (rs) slettet hver gang og derved kommer der en EOF fejl. Functionen skal lave instances af sig selv, og afslutte dem, når der ikke er flere tråde... Jeg ønsker altså at kalde funktionen inde i sig selv...
sone:> At sætte en reference til ADODB.RecordSet ER faktisk ikke nødvendigt, da du ved at skrive
Set Rs = Conn.Execute ...
sætter en ny reference, der vil slette den foregående. Den eneste fordel ved at sætte en reference til .recordset er hvis man bruger InterDev for der kan du få context sensitive hjælp/intellisense\'n til at hjælpe dig hvis du f.eks. skrive Rs. (så kommer der en liste med mulige \"medlemmer\" af et RecordSet)
proboss:> Desværre ikke lige på stående fod (yeah right .. som om jeg stod op *G*) Du du skulle bruge er måske et array af RecordSets hvor du bruger \"child\" som index.
Dim Rs(MAX_CHILD_NO)
Function Reply(child) SQL=\"select * from forum where id=\" & child set rs(child)=conn.execute(sql) do while rs(child).eof=false response.write \"<br>\" & rs(child)(\"subject\") reply rs(child)(\"id\") rs(child).movenext loop
end function
tror du ikke det ville virke !? (er ikke testet og i have no idea if it works, just a theory)
det kan jo blive ndvændigt at læse sit recordsæt ned i et array, og lave den rekursive funktion på arrayet.... så er man jo ude over alle database-fnidder-fnadder problemerne, ikke?
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.