亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

樹型結構在ASP中的簡單解決

2019-11-18 19:37:26
字體:
來源:轉載
供稿:網友

     樹型結構在我們應用程序中還是很常見的,比如文件目錄,BBS,權限設置,部門設置等。這些數

      據信息都采用層次型結構,而在我們現在的關系型數據庫中很難清淅表達。那么要在程序中遇到樹型

結構問題該如何處理呢?

  最近筆者通過一個asp權限管理的程序輕松解決了一這問題,現在將其整理出來以饗讀者。

  首先,要將層次型數據模型轉化為關系型數據模型。也就是說如何在我們的access,SQL SERVER

,Oracle等關系型數據庫中設計這個數據結構。
  拿個實例來講吧,譬如下面一個數據:

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

  這是一個很典型的層次型結構數據,那么大家想一想,如何將其通過二維表的形式來表達呢?初

看上去很難,是吧??墒亲屑毻魄靡环€是有門路可鉆的。

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

們再給這個關系型數據表再強行加一個字段——隸屬ID字段,也就是表明這個權限是屬于哪一級權限

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

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

們的關系轉化工作也就算基本完成了。

  下面我們就開始設計這張關系型數據表(以Sql Server 7.0 為例):

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

  好了,結構設計好你就可以輕松輸入你的測試數據了。

  然后,我們就針對如何在網頁中模仿層次結構顯示這功能的ASP程序,這也是最關鍵的一步了。

程序清單:powerlist.asp

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

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

'層次數表態變量賦初值
format_i=1

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

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

'子程序調用,子層數據處理
Call ListSubPower(rs("powerid"))

rs.movenext

loop

'關閉父層數據集
rs.close
set rs=nothing


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

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

'列子層數據
do while not rs_sub.eof

'層次數表態變量遞進累加
format_i=format_i+1

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

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

'遞歸調用子程序本身,對子層數據進行逐漸處理
ListSubPower(rs_sub("powerid"))

rs_sub.movenext

loop

'層次數表態變量遞退累減
format_i=format_i-1

'關閉子層數據集
rs_sub.close
set rs_sub=nothing
End Sub
%>

轉自:動態網制作指南 www.49028c.com

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

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

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品第七影院| 国产亚洲人成网站在线观看| 欧美夫妻性生活xx| 69av视频在线播放| 91精品国产高清自在线看超| 成人激情av在线| 中文字幕亚洲无线码a| 久久久精品一区二区三区| 91av在线网站| 久久久亚洲国产| 久久久久国产一区二区三区| 91精品国产成人| 国产精品网红直播| 青青青国产精品一区二区| 久久久久日韩精品久久久男男| 午夜精品一区二区三区在线视频| 欧美日韩在线视频首页| 亚洲欧美资源在线| 国产国语刺激对白av不卡| 精品国产一区二区三区久久狼黑人| 国产精品久久精品| 综合136福利视频在线| 理论片在线不卡免费观看| 日韩高清av一区二区三区| 91麻豆国产精品| 亚洲女成人图区| 久久精品免费播放| 国产精品美乳一区二区免费| 日本精品视频在线播放| 国产91ⅴ在线精品免费观看| 久久久免费高清电视剧观看| 日韩福利视频在线观看| 91免费版网站入口| 欧美在线日韩在线| 国内精品视频久久| 久久91精品国产91久久跳| 91久久中文字幕| 4438全国亚洲精品在线观看视频| 久久久久国产精品免费| 欧美精品一二区| 欧美国产高跟鞋裸体秀xxxhd| 欧美午夜片在线免费观看| 亚洲精品二三区| 在线电影av不卡网址| 国产精品中文字幕久久久| 日韩电视剧在线观看免费网站| 成人综合网网址| 亚洲天堂一区二区三区| 久久久久久久亚洲精品| 97在线观看免费| 国产精品夫妻激情| 热草久综合在线| 欧美日韩亚洲精品内裤| 国产精品久久久久免费a∨大胸| 久久天天躁日日躁| 中文字幕亚洲一区二区三区| 国产精品成人免费视频| 91大神在线播放精品| 午夜精品久久久久久久久久久久| 日韩视频欧美视频| 奇门遁甲1982国语版免费观看高清| 中文一区二区视频| 色婷婷综合久久久久中文字幕1| 国产精品美乳在线观看| 青青草一区二区| 91免费看国产| 91精品国产综合久久久久久久久| 一区二区三区 在线观看视| 亚洲激情在线观看| 亚洲奶大毛多的老太婆| 久久韩国免费视频| 中文字幕视频一区二区在线有码| 日韩中文字幕在线精品| 精品亚洲va在线va天堂资源站| 欧美亚洲国产另类| 在线成人一区二区| 亚洲欧美国产va在线影院| 最近2019年日本中文免费字幕| xvideos亚洲人网站| 亚洲欧洲国产伦综合| 欧美久久精品午夜青青大伊人| 亚洲男人天堂手机在线| 午夜精品久久久久久久男人的天堂| 欧美日韩激情视频| 菠萝蜜影院一区二区免费| 国产69精品久久久久9999| 国产精品美女999| 国产亚洲精品久久久久久牛牛| 视频在线观看一区二区| 欧美一级视频免费在线观看| 92看片淫黄大片欧美看国产片| 久久精品久久久久电影| 欧美精品情趣视频| 蜜臀久久99精品久久久无需会员| 国产自摸综合网| 欧美激情欧美激情在线五月| 日本欧美爱爱爱| 51精品国产黑色丝袜高跟鞋| 色多多国产成人永久免费网站| 欧美日韩亚洲成人| 精品国产一区二区三区久久狼黑人| 欧美成人全部免费| 亚洲国产精品人人爽夜夜爽| 欧美极品在线播放| 国产一区二区三区欧美| 亚洲欧洲一区二区三区久久| 亚洲视频自拍偷拍| 亚洲伊人久久大香线蕉av| 5566日本婷婷色中文字幕97| 国产欧美在线观看| 亚洲人成电影在线播放| 欧美精品一区二区三区国产精品| 亚洲欧美在线一区| 欧美国产日韩一区| 精品国偷自产在线| 色777狠狠综合秋免鲁丝| 午夜精品99久久免费| 国产精品青青在线观看爽香蕉| 欧美精品www| 日韩精品视频在线观看网址| 欧美肥老妇视频| 久久久精品免费| 97人人爽人人喊人人模波多| 日韩av免费在线| 欧美xxxx综合视频| 2019亚洲日韩新视频| 97av视频在线| 国产日韩亚洲欧美| 2023亚洲男人天堂| 国产成人自拍视频在线观看| 亚洲经典中文字幕| 久久久精品国产| 久久国产精品网站| 亚洲欧洲视频在线| 久久久久久久久久久久久久久久久久av| 久久久久久久久久久网站| 日韩欧美aaa| 久久久精品亚洲| 国产美女扒开尿口久久久| 2025国产精品视频| 欧美一级电影久久| 中国china体内裑精亚洲片| 国产精品露脸av在线| 自拍亚洲一区欧美另类| 九九精品在线播放| 欧美一区二三区| 91av在线国产| 成人www视频在线观看| 午夜免费日韩视频| 麻豆乱码国产一区二区三区| 成人精品在线视频| 久久777国产线看观看精品| 国产一区二区三区在线看| 亚洲精品久久久久久久久久久久久| 久久香蕉国产线看观看av| 最近2019年中文视频免费在线观看| 国产视频精品在线| 国产精品久久91| 91综合免费在线| 久久成人这里只有精品| 亚洲欧洲午夜一线一品| 国产精品免费小视频| 国产精品午夜一区二区欲梦| 国产丝袜一区二区三区|