É de fato uma dor de cabeça percorrer níveis infinitos de classificação.
Por exemplo, precisamos fazer uma seleção ou uma tabela e escrever muitos julgamentos.
Existe uma maneira melhor?
Minha abordagem é gerar uma matriz, você pode chamá -la repetidamente e apenas fazer um loop diretamente da matriz.
Por conveniência, escrevi em uma aula.
Class.asp
Retorna uma matriz de todas as categorias e tipos em ordem
Existem 4 atributos:
Copie o código da seguinte forma: setaa = newclassList
aa.id = "id" // Nome do número
aa.className = "ClassName" // Nome da classificação
aa.pid = "pid" // nome de identificação pai
aa.db_name = "classe" // Nome da tabela
list = aa.arrylist ()
Copie o código da seguinte forma: <%
ClassClassList
privatec_id
privatec_db_name
privatec_pid
privatec_className
PublicPropertyletId (STR)
c_id = str
EndProperty
publicPropertyLetDB_Name (STR)
c_db_name = str
EndProperty
PublicPropertyletPid (STR)
c_pid = str
EndProperty
publicPropertyLetclassName (STR)
c_className = str
EndProperty
dimlist ()
Dimi, n
Privatesubclass_initialize () 'Inicialize variável
i = 0
n = 0
Endsub
publicFunctionClassarry (Thisid, Pid) 'Obtenha o ID mais baixo
ifpid> 0then
sql = "Selecione*de" & c_db_name & "where" & c_pid & "=" & thisid
outro
sql = "Selecione*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) 'Carregar na 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) 'Aqui está uma chamada recursiva até a última subclasse
rs_c.movenext
laço
n = n-1
rs_c.close
Função final
publicFunctionArryList () 'faz uma saída de todas as classes de raiz
setrs_c = Conn.Execute ("SelectCount (" & c_id & ") de" & c_db_name)
comprimento = rs_c (0)
rs_c.close
Redimlist (2, Lenght) 'Defina a matriz
setrs1 = conn.execute ("selecione" & c_id & "de" & c_db_name & "where" & c_pid & "= 0")
DowhileNotrs1.eof
callclassarry (rs1 (c_id), 0)
'n = 1
rs1.movenext
laço
rs1.close
arryllist = list
Função final
Endclass
%>
Exemplo de teste:
Classe de mesa
Campos
ID: numeração automática
ClassName: Nome
PID: ID do pai