首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

asp 中过程sub的递归有关问题

2012-04-05 
asp 中过程sub的递归问题用sub递归来实现删除无线及分类在asp中如下代码sub del(id)set rsserver.CreateO

asp 中过程sub的递归问题
用sub递归来实现删除无线及分类
在asp中如下代码
sub del(id)
set rs=server.CreateObject("ADODB.Recordset")
sql="select * from areas where parid='"&id&"'"
rs.open sql,conn,1,3
if not (rs.eof and rs.bof) then
rs.movefirst
do while not rs.eof
aid=rs("areaid")
call del(aid)
rs.movenext
loop
else
sqlstr="delete from areas where areaid='"&clng(id)&"'"
call updatemore(sqlstr)
end if
rs.close
set rs=nothing
end sub

例如表:
areaid parid
1 0
2 0
3 0
4 1
5 1
6 1
7 2
8 2
9 3
10 4 
11 4
12 4
调用:call sub(1)
为什么只删除了10,11,12三行
我要的是删除4,5,6,10,11,12六行的效果,请大家帮忙了,在线等啊

[解决办法]

VB code
Sub del(id)    Set rs = server.CreateObject("ADODB.Recordset")    sql = "select * from areas where parid='" & id & "'"    rs.open sql, conn, 1, 3    If Not (rs.EOF And rs.bof) Then        '删除下级节点'        rs.movefirst        Do While Not rs.EOF            aid = rs("areaid")            Call del(aid)            rs.movenext        Loop    End If    rs.Close    Set rs = Nothing        '当前节点始终要删除'    sqlstr = "delete from areas where areaid='" & CLng(id) & "'"    Call updatemore(sqlstr)End Sub 

热点排行