Buenos días:
He estado mirando el foro y veo que hay respuestas al respecto, pero al
intentar programar la función recursiva me da problemas.
Mi estructura de tabla es la siguiente:
idPost (autonumerico)
idPadre (relación a otros idPost de la misma tabla)
texto
La función que tengo ahora:
function getHijo(idPadre)
strSQL = "SELECT * FROM FORO_POST WHERE idPadre = " & idPadre & " Order By
fecha DESC"
Set RS = cn.Execute (strSQL)
While (Not RS.EOF)
Response.Write(RS("idPost") & "|" & RS("idPadre") & "|" & RS("titulo") &
"<br>")
Call getHijo(RS("idPost"))
Wend
end function
Call getHijo(0)
De manera que voy haciendo consultas a la BD sobre los idPost que van
apareciendo.
Lo que me ocurre es que sí que lo hace bien, pero únicamente llega a un
nivel, es decir:
PREGUNTA 1
RESPUESTA 1
RESPUESTA 1_1
RESPUESTA 1_1_1
RESPUESTA 1_2
RESPUESTA 2
Con esta función únicamente muestra:
PREGUNTA 1
RESPUESTA 1
RESPUESTA 1_1
RESPUESTA 1_1_1
Por lo que he podido mirar lo que está ocurriendo es que el Recordset que se
crea en la función al entrar en bucle y tener la función recursiva, está
cogiendo los últimos valores, es decir, RESPUESTA 1_1_1. No sé si me
explico.
Más gráficamente:
While (Not RS.EOF)
Response.Write(RS("idPost") & "|" & RS("idPadre") & "|" & RS("titulo") &
"<br>")
Call getHijo(RS("idPost"))
-> Al llegar aqui, y haber pasado por todas las subopciones, el RS
"primario" ya no mantiene los valores del primer SQL ejecutado. Es decir, es
como si cada vez que ejecuto la sql al entrar a la función el RS se reinicia
(como si fuese pasado ByRef).
Wend
Alguien sabe como solucionar este problema?
Gracias de antemano.
Un saludo
Leer las respuestas