De hecho, es un dolor de cabeza para recorrer niveles infinitos de clasificación.
Por ejemplo, necesitamos obtener una selección o una tabla y escribir muchos juicios.
¿Hay una mejor manera?
Mi enfoque es generar una matriz, puede llamarlo repetidamente y simplemente bucle la matriz directamente.
Por conveniencia, lo escribí en una clase.
clase.asp
Devuelve una matriz de todas las categorías y tipos en orden
Hay 4 atributos:
Copie el código de la siguiente manera: setaa = newClassList
aa.id = "id" // nombre de número
aa.classname = "classname" // nombre de clasificación
aa.pid = "pid" // nombre de identificación de padres
aa.db_name = "clase" // nombre de la tabla
list = aa.arrylist ()
Copie el código de la siguiente manera: <%
clase de clases
privateC_ID
privateC_DB_NAME
privateC_PID
privateC_ClassName
PublicPropertyletid (STR)
c_id = str
endpropertía
publicPropertyletDB_Name (STR)
c_db_name = str
endpropertía
PublicPropertyletpid (STR)
c_pid = str
endpropertía
PublicPropertyletClassName (STR)
c_classname = str
endpropertía
dimlist ()
dimi, n
Privatesubclass_initialize () 'Inicializar variable
i = 0
n = 0
Endsub
PublicFunctionClassarry (Thisid, PID) 'Obtenga la identificación más baja
ifpid> 0then
sql = "select*de" & c_db_name & "where" & c_pid & "=" & thisId
demás
sql = "select*de" & c_db_name & "where" & c_id & "=" & thisId
endif
setrs_c = conn.execute (SQL)
n = n+1
dowhilenotrs_c.eof
Lista (0, i) = rs_c (c_id) 'Cargar en una matriz
Lista (1, i) = rs_c (c_classname)
Lista (2, i) = n
'n = n+1
i = i+1
thisId = classarry (rs_c (c_id), 1) 'Aquí hay una llamada recursiva hasta la última subclase
rs_c.Movenext
bucle
N = N-1
rs_c.clare
Función final
PublicFunctionRryList () 'bucearon todas las clases de raíz
setrs_c = conn.execute ("selectCount (" & c_id & ") de" & c_db_name)
Longitud = RS_C (0)
rs_c.clare
RedimList (2, Lenght) 'Establezca la matriz
setrs1 = conn.execute ("Seleccionar" & c_id & "de" & c_db_name & "Where" & c_pid & "= 0")
dowhilenotrs1.eof
callClassarry (rs1 (c_id), 0)
'n = 1
rs1.movenext
bucle
rs1.lose
arryllist = lista
Función final
clase final
%>
Prueba de ejemplo:
Clase de mesa
Campos
ID: numeración automática
ClassName: Nombre
PID: ID de padre