CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

ASP中递归查询Access可以执行到多少层?

楼主liangyr()2006-03-15 03:57:37 在 Web 开发 / ASP 提问

Access数据库,   只有135条记录(也就是135层),Win2003   IIS6(AMD   XP2000+   512M)竟然无法执行,  
   
  大家有什么好的建议!  
   
  Sub   Tree(UID,n)  
      Dim   SQL,Rs  
      Dim   FatherID  
      If   MNum(UID)=False   Then   Exit   Sub  
      SQL="Update   [Member]   Set   n=n+"&n&",m=m+1   Where   ID="&UID  
      conn.Execute(SQL)  
       
      SQL="Select   FatherID   From   [Member]   Where   ID="&UID  
      Set   Rs=conn.Execute(SQL)  
      SQL=""  
      If   Rs.Eof   Then  
        Exit   Sub  
      Else  
        FatherID=Rs("FatherID")  
      End   If  
      Rs.Close  
      Set   Rs=Nothing  
      UpHarvest   FatherID,n  
    End   Sub  
  问题点数:70、回复次数:9Top

1 楼liangyr()回复于 2006-03-15 04:43:53 得分 0

简化  
  Sub   Tree(UID)  
      Dim   SQL,Rs  
      Dim   FatherID  
      SQL="Select   FatherID   From   [Member]   Where   ID="&UID  
      Set   Rs=conn.Execute(SQL)  
      If   Not(Rs.Eof)   Then  
        FatherID=Rs("FatherID")  
      End   If  
      Rs.Close  
      Set   Rs=Nothing  
      tree   FatherID  
    End   SubTop

2 楼yjbnew(伟大的光荣的正确的ASP千岁千岁千千岁)回复于 2006-03-15 08:02:53 得分 0

135层好像太多了吧!Top

3 楼shown_james(咖啡)回复于 2006-03-15 08:34:22 得分 0

缓存问题吧  
  response.flush+response.buffer=falseTop

4 楼netdust(静时常思己过,闲谈勿论人非)回复于 2006-03-15 08:36:52 得分 0

你的程序好像有错误  
  -------  
  递归调用时未判断FatherID的赋值情况,也就会无限的调用下去,自然多少都不够了Top

5 楼liangyr()回复于 2006-03-15 16:19:51 得分 0

If   MNum(UID)=False   Then   Exit   Sub  
  就是FatherID的判断了,MNum是专门判断函数,我在实际程序中监测,只能执行到120层,Top

6 楼netdust(静时常思己过,闲谈勿论人非)回复于 2006-03-15 17:54:54 得分 20

函数欠套最多可以执行129层  
   
  可以用下面的程序测试一下  
   
  -----  
   
  <%  
  dim   i  
  i=0  
  f()  
   
  sub   f()  
  i=i+1  
  response.write   i&"<br>"  
  f()  
  end   sub  
  %>Top

7 楼liangyr()回复于 2006-03-15 18:00:39 得分 0

netdust老大有什么办法解决呢?Top

8 楼netdust(静时常思己过,闲谈勿论人非)回复于 2006-03-15 18:39:11 得分 50

你看看这样写是不是能行   (我没测试,也许有错误)  
  -------  
  Sub   Tree(UID,n)  
  Dim   SQL,Rs  
  Set   rs   =   Server.CreateObject("Adodb.Recordset")  
  While   True  
  If   MNum(UID)=False   Then  
  Set   rs=Nothing  
  Exit   Sub  
  End   If  
  SQL="select   FatherID,n,m   from   [Member]   Where   ID="&UID  
  rs.Open   sql,conn,1,2  
  If   Not   Rs.Eof   Then  
  UID=Rs("FatherID")  
  rs("n")=rs("n")+n  
  rs("m")=rs("m")+1  
  rs.Update()  
  Else  
  UID="no"  
  End   If  
  Rs.Close()  
  WEnd  
  End   SubTop

9 楼liangyr()回复于 2006-03-15 22:54:44 得分 0

可以通过了Top

相关问题

  • 递归查询
  • 表的递归查询
  • 递归执行出错
  • oracle中如何递归查询?
  • sqlserver中怎么实现递归查询?
  • 求助:递归查询难题?
  • 求助:递归查询难题?
  • ASP的递归的问题
  • asp递归的问题
  • 递归函数执行ADOQuery可以吗?

关键词

  • 执行
  • sql
  • fatherid
  • mnum
  • rs
  • uid
  • sub
  • tree
  • 程序
  • eof

得分解答快速导航

  • 帖主:liangyr
  • netdust
  • netdust

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo