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
%>
>>>>powerlist.asp程序中,我们先打开顶层数据,在循环中显示出来;然后又设计一个子程序listsubpower,通过递归算法在循环中调用,以此来打开子层数据信息,并且在子程序内部循环中又反复调用自己,以此来逐层展开深层数据。
>>>>另外,在程序中还用了一个静态变量format_i来控制缩进显示格式。
>>>>本文就树型结构在数据设计、程序控制方面做简单尝试,目的在于抛砖引玉,希望读者通过本文得到更多启示。
不错,不知道递归调用 listsubpower(rs_sub("powerid")) 是否行得通,试下先
原先我也是用这种方法的,不过这种方法就是要做很多次递归,
现在用两面个字段来完成,
+--------+-------------+--------------+-------------+
| 编号 | 名称 | 父类 | 所有父类 |
+--------+-------------+--------------+-------------+
| 1 | 分类1 | null | 1 |
+--------+-------------+--------------+-------------+
| 2 | 分类2 | 1 | 1-2 |
+--------+-------------+--------------+-------------+
| 3 | 分类3 | 1 | 1-3 |
+--------+-------------+--------------+-------------+
| 4 | 分类4 | 2 | 1-2-4 |
+--------+-------------+--------------+-------------+
利用这种结构可以只读一次数据库便可以读取某一类及其所有子类。
如:select * from tabel where 所有父类 like "1%" order by 所有父类
便可得志出以下结果
+ 分类1
|--+ 分类2
| |--+ 分类4
|--+ 分类