Todo es culpa tuya, porque no explicas bien desde el principio pues ??? jajajaja... es broma, pero en ningun momento estoy usando recordset dinamicos.
Bueno, de hecho mi idea no es mantener los recordset, para nada... repitiendo, falta tanto que depurar, que bueno, de hecho tal como lo escribi hace n delete, ahi mismo mencione un cambio, dejar el delete al final, etc.
Entonces bueno, depurando un poco....
Código PHP:
strCatOriginal = "0"
blnSeguir = true
strID = strCatOriginal
strFin = ""
do while blnsegur
strSQL = "SELECT loquesea FROM tabla WHERE padre in (" & strID & ")"
Set rs = ObjConn.Execute(strSQL)
strID = ""
if not rs.eof then
do while not rs.EOF
strID = strID & rs(0) & ","
loop
strFin = strFin & strID
'Cierras el RS, no se necesita guardar para nada
rs.close
else
'fin
blnSeguir = False
end if
'Liberar RS, no se necesita guardar para nada
set rs = nothing
loop
'Correcion de la coma
if len(strFin) > 0 then
strFin = left(strFin, len(strFin) - 1)
end if
delete from tabla where padre in ( strFin ) or CatID = strCatOriginal
strSQL = "delete FROM tabla WHERE padre in (" & strFin & ") or CatID = " & strCatOriginal
set rs = ObjConn.Execute(strSQL)
set rs = nothing
Así sería más o menos ya depurado, no guardas los rs, y en una cadena vas guardando solamente la coleccion de hijos de una categoria original.
Revisando el algoritmo que pusiste, lo que habias cambiado, es esto:
strSQL = "SELECT loquesea FROM tabla WHERE padre = "& strID
Y de acuerdo a lo que yo puse es:
strSQL = "SELECT loquesea FROM tabla WHERE padre in (" & strID & ")"
Así que ya veo porque decias que solamente lo hacía a un nivel, por la falta del IN, ademas que hubiera dado error claro, pruebalo ahora con el IN, el IN es necesario, y de esa forma si funciona.
Bueno, ya estamos de acuerdo, espero...
Suerte!!