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六行的效果,请大家帮忙了,在线等啊
[解决办法]
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