-
- set aa=new classlist
- aa.id="id"//番号の名前
- aa.classname="classname"//分類名
- aa.pid="pid"/ / 親ID名
- aa.db_name="class"//テーブル名
- list=aa.arrylist()
- ?>
コードをコピー
クラス: classlist
-
- < Classclasslist
- privatec_id
- privatec_db_name
- privatec_pid
- privatec_classname
- publicプロパティlet id(str)(str)
- c_id=str
- endプロパティdb_name(str)
- c_db_name = str
- endプロパティ
- public property let pid(str)
- c_pid = str
- endプロパティ
- public property let classname(str)
- c_classname = str
- endプロパティ
- 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,length)'set array
- set rs1=conn.execute (" select "&c_id&" from "&c_db_name&" where "&c_pid&"=0")
- rs1.eof
- call classarry(rs1(c_id),0)
- 'n=1
- rs1.movenext
- loop
- rs1 ではないときに実行します。 close
- arrylist=list
- end function
- end class
- %>
-
-
コードをコピー
サンプルテスト:
テーブルクラス
分野
ID: 自動番号
クラス名: 名前
pid: 親ID
ファイル名: test.asp
- <%
- 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= "クラス名"
- aa.pid="pid"
- aa.db_name="クラス"
- list=aa.arrylist()
- response.write "
ID td> | 名前 | カテゴリ | "
- for j=0 to ubound(list,2)
- response.write "
"&list(1,j)&" | "&list(2,j)&" | "
- next
- response.write "
" - 'response.write list(1,3)
- %>
- <% for i=0 から ubound(list,2)%>
- <%next%>
-
-
コードをコピー
ループ結果:
bbs.it-home.org/code/class/test.asp
基本的には通常のニーズを満たすことができます。
|