Genera la jerarquía de determinadas categorías. Este procedimiento es una modificación de uno que mencionó A Z para resolver un problema similar al mío de sjam7 o speedy (no recuerdo en este momento). Lo que no me gustaba era que por cada llamada al procedimiento se creaba un objeto conexion y un objeto recordset. Con esta función se crean menos objetos recordset y se utiliza una sola conexion, que es pasada como argumento del procedimiento (eso gracias al maestro de U_Goldman). Los campos que debería tener la tabla desde donde se sacan las categorías serían los siguientes:
CAT_ID --> Id de la categoría
CAT_IDDEP --> Id de la categoría del cual depende (el 0 son categorias princ.)
CAT_HIJOS --> 1 si tiene hijos, 0 si la categoría no tiene hijos
CAT_NIVEL --> Nivel de la categoría en la estructura (0 para las principales, 1, 2...)
Código:
sub getCategories(param_id, objConnection)
sql = "SELECT CAT_ID, CAT_NOMBRE, CAT_HIJOS, CAT_NIVEL FROM CAT_CATEGORIAS WHERE CAT_IDDEP = " & param_id
set rs = server.createObject("ADODB.recordSet")
rs.open sql, objConnection
if not rs.eof then
do until rs.eof
leftSpace = rs("CAT_NIVEL") * 5
response.write(replace(space(leftSpace)," "," ") & rs("CAT_NOMBRE") & "<BR>")
if rs("CAT_HIJOS") = 1 then
getCategories rs("CAT_ID"), objConnection
end if
rs.moveNext
loop
end if
rs.close()
set rs = nothing
end sub
Se llamaría de esta forma:
set conn = server.createObject("ADODB.connection")
conn.open strConn
call getCategories(0, conn)
conn.close()
set conn = nothing
Espero que sea útil para alguien esta modificación.