무한급 분류를 수조로 만들다

3836 단어
무한급 분류를 순환시키는 것은 확실히 골치 아픈 일이다.
예를 들어 우리는 SELECT나 TABLE를 순환시켜서 많은 판단을 써야 한다.
좋은 방법 없을까요?
나의 방법은 수조를 생성하는 것이다. 반복해서 호출할 수 있고, 직접 수조를 순환하면 된다.
편의를 위해서 나는 그것을 분류로 썼다.
class.asp
모든 분류된 그룹을 되돌려주고 순서대로 배열합니다
4가지 속성이 있습니다.

   set aa=new classlist  
  
aa.id="id"//  
aa.classname="classname"//  
aa.pid="pid"// ID  
aa.db_name="class"//  
list=aa.arrylist() 

   class classlist  
  
private c_id 
private c_db_name 
private c_pid 
private c_classname 
public property let id(str) 
   c_id = str 
end property 
public property let db_name(str) 
   c_db_name = str 
end property 
public property let pid(str) 
   c_pid = str 
end property 
public property let classname(str) 
   c_classname = str 
end property 
dim list() 
dim i,n 
Private Sub Class_Initialize()'  
i=0 
n=0 
End Sub 
public function classarry(thisid,pid)' ID 
if pid>0 then 
sql="select * from "&c_db_name&" where "&c_pid&"="&thisid 
else 
sql="select * from "&c_db_name&" where "&c_id&"="&thisid 
end if 
set rs_c=conn.execute(sql) 
n=n+1 
do while not rs_c.eof 
list(0,i)=rs_c(c_id)'  
list(1,i)=rs_c(c_classname) 
list(2,i)=n 
'n=n+1 
i=i+1 
thisid=classarry(rs_c(c_id),1)' ,  
rs_c.movenext 
loop 
n=n-1 
rs_c.close 
end function 
public function arrylist()'  
set rs_c=conn.execute("select count("&c_id&") from "&c_db_name) 
lenght=rs_c(0) 
rs_c.close 
redim list(2,lenght)'  
set rs1=conn.execute("select "&c_id&" from "&c_db_name&" where "&c_pid&"=0") 
do while not rs1.eof 
call classarry(rs1(c_id),0) 
'n=1 
rs1.movenext 
loop 
rs1.close 
arrylist=list 
end function 
end class 
%> 

인스턴스 테스트:
표 CLASS
필드
id: 자동 번호 지정
classname: 이름
pid:상위 ID
test.asp
4

     
  
Set conn=Server.CreateObject("ADODB.connection") 
Set Rs = Server.CreateObject("ADODB.Recordset") 
StrDSN = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" 
StrDSN = StrDSN & Server.MapPath("test.mdb") 
conn.Open strDSN 
function ins(num) 
str="" 
for ii=1 to num 
str=str&"|-" 
next 
ins=str 
end function 
set aa=new classlist 
aa.id="id" 
aa.classname="classname" 
aa.pid="pid" 
aa.db_name="class" 
list=aa.arrylist() 
response.write " " 
for j=0 to ubound(list,2) 
response.write "" 
next 
response.write "
ID
"&list(0,j)&""&list(1,j)&""&list(2,j)&"

'response.write list(1,3) 
%> 
 
순환 결과:
www.hubro.net/code/class/test.asp
기본적으로 일반적인 수요를 만족시킬 수 있다!

좋은 웹페이지 즐겨찾기