Foxtable(狐表)用户栏目专家坐堂 → 递归函数问题


  共有10046人关注过本帖树形打印复制链接

主题:递归函数问题

帅哥哟,离线,有人找我吗?
fubblyc
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16181 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/2/29 21:21:00 [只看该作者]

调用。。

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16181 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/2/29 21:22:00 [只看该作者]

断点调试都没问题。。。但是后台数据就是没有。。。

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16181 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/2/29 21:26:00 [只看该作者]

看。。

图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/29 22:52:00 [只看该作者]

9楼代码,不变。如果要全部生成,调用这样调用

 

For Each dr As DataRow In DataTables("表A").DataRows
    Functions.Execute("AddChildren",dr,dr.DataTable,dr("推荐人卡号"),1)
Next


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16181 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/3/1 7:56:00 [只看该作者]

谢谢 大红袍 老师。这样的话要遍历表里的每一行。我的是后台表,有十多万行,之前也是这样做的,速度超慢。。所以才想着用 找到该行,再调用。这样不行吗?一定要遍历所有行吗?有没有什么办法可以不用遍历所有行的?

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16181 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/3/1 7:58:00 [只看该作者]

我说的全部生成,是指该行的 二级 三级 全部生成,不是所有行全部生成。因为记录是一条一条进去的。

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2016/3/1 8:45:00 [只看该作者]

用With 进行递归很容易的,
简单例子如下,其中A是主键,B是关联的上级所指主键,
with cte as (S elect A,B,0 as C
f rom 表1
w here b is null
U nion All
S elect a.A,a.B,b.C+1 as C
f rom 表1 as a inner join cte as b on a.A = b.B)

s elect * f rom cte where c <=3

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16181 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/3/1 8:57:00 [只看该作者]

恩恩。我找到办法了,就是 select 一级卡号不为空且 另一列不为1的所有行就可以。
在递归的时候,把递归之后的行的某一列 的值 更新为 1  就OK。
谢谢大红袍老师,Hyphen老师,jspta老师。

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16181 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/3/1 9:09:00 [只看该作者]

刚才测试了下,只能 select 一级卡号不为空 。

且 另一列不为1的所有行  这段代码不行。先这样,回头再来研究 with ..

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/1 9:27:00 [只看该作者]

以下是引用fubblyc在2016/3/1 7:56:00的发言:
谢谢 大红袍 老师。这样的话要遍历表里的每一行。我的是后台表,有十多万行,之前也是这样做的,速度超慢。。所以才想着用 找到该行,再调用。这样不行吗?一定要遍历所有行吗?有没有什么办法可以不用遍历所有行的?

 

可以把所有数据一次性加载进来,再执行,如果这样也慢的话,应该是这个原因

 

http://www.foxtable.com/help/topics/2225.htm

 


 回到顶部
总数 27 上一页 1 2 3 下一页