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


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

主题:递归函数问题

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
递归函数问题  发帖心情 Post By:2015/12/30 13:24:00 [只看该作者]


此主题相关图片如下:3.png
按此在新窗口浏览图片

 
想用视图的方式生成这样的表:
 
此主题相关图片如下:4.png
按此在新窗口浏览图片
就是把上面拆解开来变成了一一对应的关系。

 
大概要怎么做呢?
[此贴子已经被作者于2015/12/30 13:36:49编辑过]

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


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


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


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

children函数

 

Dim pdr As DataRow = args(0)
Dim dt As DataTable = args(1)
Dim drs As List(of DataRow)
drs = pdr.DataTable.Select("[第一列] = '" & pdr("第二列") & "'")
For Each dr As DataRow In drs
    Dim ndr As DataRow = dt.addnew
    ndr("第一列") = dr("第一列")
    ndr("第二列") = dr("第二列")
    ndr("第三列") = 1
    Functions.Execute("AddChildren",dr,dt)
    Dim idx As Integer = 1
    Functions.Execute("AddChildren2",dr,ndr,idx)
Next

 

children2

 

Dim cdr As DataRow = args(0)
Dim dt As DataTable = args(1).DataTable
Dim idx As Integer = args(2) + 1
Dim fdr As DataRow = cdr.DataTable.find("[第二列] = '" & cdr("第一列") & "' and 第一列 is not null")
If fdr IsNot Nothing Then
    Dim ndr As DataRow = dt.addnew
    ndr("第一列") = fdr("第一列")
    ndr("第二列") = args(1)("第二列")
    ndr("第三列") = idx
    Functions.Execute("AddChildren2",fdr, ndr,idx)
End If

 

调用

 

Dim dt As DataTable = DataTables("表A")
For Each dr As DataRow In dt.Select("第一列 is null")
    Functions.Execute("AddChildren",dr, DataTables("表B"))
Next
Tables("表B").Sort = "第一列,第三列"

 


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


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

谢谢 大红袍 老师。
如果我想在直接在我的sql2005数据库上写,类似于:

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


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

举例:

有这样一个表:


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

要在数据库上写生成这样的表:


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

也就是得到父级 三级

万分感谢!!







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


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

百度查了,好像有这样的函数:

 


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

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


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

必须用代码处理。你看懂递归自己学习sql处理。

 

sql也可以用递归,就是麻烦。


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


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

好吧,那我先用FT先实现。
哎,看半天不知道怎么写,大红袍老师,那要不我把示例项目发上来,你帮我看下。。。。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

就一个表:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160113103511.png
图片点击可在新窗口打开查看
实现成这样:

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



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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/13 11:38:00 [只看该作者]

AddChildren函数

Dim pdr As DataRow = args(0)
Dim dt As DataTable = args(1)
Dim cardnum As String = args(2)
Dim idx As Integer = args(3)

Dim dr As DataRow = dt.Find("卡号 = '" & cardnum  & "'")
If dr IsNot Nothing Then
    Select Case idx
        Case 1
            pdr("一级推荐人卡号") = pdr("推荐人卡号")
            Functions.Execute("AddChildren",pdr ,dt, pdr("推荐人卡号"),idx+1)
        Case 2
            pdr("二级推荐人卡号") = dr("推荐人卡号")
            Functions.Execute("AddChildren",pdr ,dt, dr("推荐人卡号"),idx+1)
        Case 3
            pdr("三级推荐人卡号") = dr("推荐人卡号")
    End Select
End If

调用
Dim dr As DataRow = CurrentTable.Current.DataRow
Functions.Execute("AddChildren",dr,CurrentTable.DataTable,dr("推荐人卡号"),1)

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


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

谢谢 Hyphen 老师,我照着做了,不知道怎么没有有反应。。。不知道是不是哪错了。。。

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

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


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