六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

樹型結(jié)構(gòu)在ASP中的容易處理

[摘要]樹型結(jié)構(gòu)在我們應(yīng)用程序中還是很常見的,比如文件目錄,BBS,權(quán)限設(shè)置,部門設(shè)置等。這些數(shù) 據(jù)信息都采用層次型結(jié)構(gòu),而在我們現(xiàn)在的關(guān)系型數(shù)據(jù)庫中很難清淅表達(dá)。那么要在程序中遇到樹型結(jié)構(gòu)問題該如何處理呢...
樹型結(jié)構(gòu)在我們應(yīng)用程序中還是很常見的,比如文件目錄,BBS,權(quán)限設(shè)置,部門設(shè)置等。這些數(shù)

據(jù)信息都采用層次型結(jié)構(gòu),而在我們現(xiàn)在的關(guān)系型數(shù)據(jù)庫中很難清淅表達(dá)。那么要在程序中遇到樹型

結(jié)構(gòu)問題該如何處理呢?

  最近筆者通過一個ASP權(quán)限管理的程序輕松解決了一這問題,現(xiàn)在將其整理出來以饗讀者。

  首先,要將層次型數(shù)據(jù)模型轉(zhuǎn)化為關(guān)系型數(shù)據(jù)模型。也就是說如何在我們的ACCESS,SQL SERVER

,ORACLE等關(guān)系型數(shù)據(jù)庫中設(shè)計這個數(shù)據(jù)結(jié)構(gòu)。
  拿個實例來講吧,譬如下面一個數(shù)據(jù):

文檔管理 1
----新建文檔 2
----文檔修改 3
----文檔歸檔 4
----查看歸檔信息 5
----刪除歸檔信息 6
----刪除歷史文檔 7
----刪除正式文檔 8
----系統(tǒng)管理 9
----用戶管理 10
人事管理 11
行政管理 12
財務(wù)管理 13

  這是一個很典型的層次型結(jié)構(gòu)數(shù)據(jù),那么大家想一想,如何將其通過二維表的形式來表達(dá)呢?初

看上去很難,是吧。可是仔細(xì)推敲一番還是有門路可鉆的。

  可以這樣,將上面所有的權(quán)限視為一個權(quán)限字段,那么這個權(quán)限字段肯定是要有一個ID值的。我

們再給這個關(guān)系型數(shù)據(jù)表再強(qiáng)行加一個字段——隸屬ID字段,也就是表明這個權(quán)限是屬于哪一級權(quán)限

之下的,即這個ID值隸屬于哪一個ID值。比如:“查看歸檔信息”權(quán)限ID值為“5”,它是隸屬于“文

檔歸檔”權(quán)限之下的,那么它的隸屬ID字段的值就應(yīng)該是“4”。OK,如果這一點能理解的話,那么我

們的關(guān)系轉(zhuǎn)化工作也就算基本完成了。

  下面我們就開始設(shè)計這張關(guān)系型數(shù)據(jù)表(以Sql Server 7.0 為例):

+-----------+-----------+-----------+-----------+----------+
    字段名 字段含義  字段類型 字段大小 字段屬性
+-----------+-----------+-----------+-----------+----------+
SelfID 權(quán)限ID Int 4 PK
PowerName 權(quán)限名  Varchar 50 Not Null
PowerInfo 權(quán)限信息 Varchar 500
BelongID 隸屬ID Int 4
+-----------+-----------+-----------+-----------+----------+

  好了,結(jié)構(gòu)設(shè)計好你就可以輕松輸入你的測試數(shù)據(jù)了。

  然后,我們就針對如何在網(wǎng)頁中模仿層次結(jié)構(gòu)顯示這功能的ASP程序,這也是最關(guān)鍵的一步了。

程序清單:powerlist.asp

<%
'數(shù)據(jù)庫連接
set conn=Server.CreateObject("ADODB.Connection")
conn.open "driver={SQL Server};server=chaiwei;DATABASE=chaiwei;UID=sa;PWD="

'打開所有父層數(shù)據(jù)
set rs=Server.CreateObject("ADODB.Recordset")
rs.Open "select * from powers where belongid is null order by powerid",conn,1,3

'層次數(shù)表態(tài)變量賦初值
format_i=1

'列表主程序段
do while not rs.eof

'打印父層數(shù)據(jù)信息
response.write "<a href='powerlist.asp?SelfID=" & rs("powerid") & "&BelongID=" & rs("belongid") & "'>" & rs("powername") & "</a>"
response.write "<br>"

'子程序調(diào)用,子層數(shù)據(jù)處理
Call ListSubPower(rs("powerid"))

rs.movenext

loop

'關(guān)閉父層數(shù)據(jù)集
rs.close
set rs=nothing


'子層數(shù)據(jù)處理子程序
Sub ListSubPower(id)

'打開隸屬于上層 powerid 的所有子層數(shù)據(jù)信息
set rs_sub=Server.CreateObject("ADODB.Recordset")
rs_sub.Open "select * from powers where belongid=" & id & " order by powerid",conn,1,3

'列子層數(shù)據(jù)
do while not rs_sub.eof

'層次數(shù)表態(tài)變量遞進(jìn)累加
format_i=format_i+1

'循環(huán)縮進(jìn)格式控制,因為頂層與二層不需要縮進(jìn),所以從第三層開始引用此程序段
for i=format_i to 3 step -1
response.write " "
response.write " "
next

'打印子層數(shù)據(jù)信息
response.write " ----"
response.write "<a href='powerlist.asp?SelfID=" & rs_sub("powerid") & "&BelongID=" & rs_sub("belongid") &"'>" & rs_sub("powername") & "</a>"
response.write "<br>"

'遞歸調(diào)用子程序本身,對子層數(shù)據(jù)進(jìn)行逐漸處理
ListSubPower(rs_sub("powerid"))

rs_sub.movenext

loop

'層次數(shù)表態(tài)變量遞退累減
format_i=format_i-1

'關(guān)閉子層數(shù)據(jù)集
rs_sub.close
set rs_sub=nothing
End Sub
%>

  powerlist.asp程序中,我們先打開頂層數(shù)據(jù),在循環(huán)中顯示出來;然后又設(shè)計一個子程序ListSubPower,通過遞歸算法在循環(huán)中調(diào)用,以此來打開子層數(shù)據(jù)信息,并且在子程序內(nèi)部循環(huán)中又反復(fù)調(diào)用自己,以此來逐層展開深層數(shù)據(jù)。
  另外,在程序中還用了一個靜態(tài)變量format_i來控制縮進(jìn)顯示格式。

  本文就樹型結(jié)構(gòu)在數(shù)據(jù)設(shè)計、程序控制方面做簡單嘗試,目的在于拋磚引玉,希望讀者通過本文得到更多啟示。





主站蜘蛛池模板: 四虎永久影院 | 午夜性色福利视频 | 亚洲国产精品免费观看 | 欧洲熟色妇 | 亚洲综合第一区 | 日本视频免费在线观看 | 午夜免费视频观看在线播放 | 思思99思思久久精品 | 日本视频在线 | 速度与激情9全集免费观看 速度与激情9免费完整版高清 | 日本在线观看免费高清 | 天天色综合3 | 日韩av成人 | 色一欲一性一乱一区二区三区 | 日韩视频亚洲 | 亚洲床戏 | 欧美亚洲激情视频 | 日本成年人免费看 | 日本卡一卡2卡3卡4精品卡网站 | 欧美一区二区影院 | 亚洲六月丁香色婷婷综合久久 | 欧美一级看片 | 欧美亚洲综合网 | 日日碰碰 | 亚洲福利二区 | 青娱乐国产精品视频 | 自拍成人 | 特黄特黄视频 | 日韩怡红院 | 一级成人a做片免费 | 日本中文字幕第一页 | 日本高清视频色wwwwww色 | 亚洲福利一区 | 热久久这里是精品6免费观看 | 天天色天天射天天操 | 欧美视频在线免费看 | 天天翘夜夜洗澡天天做 | 日韩大片免费在线观看 | 手机看片久久国产免费不卡 | 天堂网在线www资源网 | 亚洲视频免费播放 |