[原创]递归节点

http://community.csdn.net/Expert/topic/3728/3728001.xml?temp=2.212161E-02

       A
1             B        |        C
2       D          E   |     F     G
3  H                   |


数字1,2,3代表层,在实际表里,这应该是不存在的
如果我想算出2层里在求出下面的两个条件呢?

求出A的a区下面与A相关的有多少个
求出A的b区下面与A相关的有多少个

再求出大于2层以上A的a区跟b区的比例为多少
 <%
 Db="data.Mdb"
 Set Conn = Server.Createobject("Adodb.Connection")
 Connstr="Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & Server.Mappath(""&Db&"")
 Conn.Open Connstr
 Dim Icount
 Response.Write "Level 1-7 a:b "
 Icount=0
 Counter "jxc","a",1,7,0
 Response.Write Icount&":"
 Icount=0
 Counter "jxc","b",1,7,0
 Response.Write Icount
 Response.Write "<br>Level 8-? a:b "
 Icount=0
 Counter "jxc","a",8,99999,0
 Response.Write Icount&":"
 Icount=0
 Counter "jxc","b",8,99999,0
 Response.Write Icount
 Conn.Close
 Set Conn=Nothing
 Function Counter(Id,Belong,Fromlevel,Endlevel,Level)  
  Level=Level+1
  If Belong<>"" Then'第一次
   Sql="Select * From data Where upname='"&Id&"' And register='"&Belong&"'"
  Else
   Sql="Select * From data Where upname='"&Id&"'"
  End If
  Set Rs=Conn.Execute(Sql)
  Do While Not Rs.Eof 
    If Endlevel>=Level And Fromlevel<=Level Then
     Icount=Icount+1
    End If
    If Conn.Execute("Select Count(*) From data Where upname='"&Rs("name")&"'")(0)>0 and Endlevel>=Level Then     
     Counter Rs("name"),"",Fromlevel,Endlevel,Level
    End If
   Rs.Movenext
  Loop
  Rs.Close
  Set Rs=Nothing
  Level=Level-1
 End Function
 %>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值