Foxtable(狐表)用户栏目专家坐堂 → 在表中判断是否为末级节点


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

主题:在表中判断是否为末级节点

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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
在表中判断是否为末级节点  发帖心情 Post By:2012/8/3 15:13:00 [只看该作者]

因为节点关系已经用"\"分隔符标记,这样是可以在窗口中展示成树的。

现在有两个问题
(1)如何判断这个节点就是末级节点。按我的想法是,如果这个节点的“code”在"FindFather"列中能找到,它肯定不是末级节点,否则就是末级节点,在帮助中寻觅了一番,也试了几回,不得其门而入
(2)在实际工作中,需要用到非末级节点的V值递归计算。我的想法是,直接 sum(FindFather=本节点的code,对应的V就OK了),但再想想,好象必须要用到遍历才可以。

请高手指教。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:末级节点判断.table


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


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
  发帖心情 Post By:2012/8/3 15:25:00 [只看该作者]

就判断节点的子节点数量或者用level属性

if Node.Node.Count = 0 then

 

if Node.Level = ... then


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/8/3 15:32:00 [只看该作者]

其实很简单,你在命令窗口执行:

 

For Each dr1 As DataRow In DataTables("data").DataRows
    Dim dr2 As DataRow = DataTables("data").Find("totalcpno Like '" & dr1("totalcpno") & "\*'")
    If dr2 Is Nothing Then
        dr1("Istree") = True
    Else
        dr1("Istree") = False
    End If
Next


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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/8/3 15:58:00 [只看该作者]

还是帮助看得不精啊,我总是用=而不是用like。
晕死。

那第二个问题呢,父节点的V值=sum(子节点的V),一直算到顶级节点,是否也要遍历计算?

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/8/3 16:14:00 [只看该作者]

本来想留个你做练习的:

 

For Each dr1 As DataRow In DataTables("data").DataRows
    Dim dr2 As DataRow = DataTables("data").Find("totalcpno Like '" & dr1("totalcpno") & "\*'")
    If dr2 Is Nothing Then
        dr1("Istree") = True
    Else
        dr1("Istree") = False
        dr1("V") = DataTables("data").Compute("Count(sortkey)","totalcpno Like '" & dr1("totalcpno") & "\*'")
    End If
Next


 

你要多看帮助,你看看上面的代码,其实没有技巧可言,全部来自帮助的哦。

[此贴子已经被作者于2012-8-3 16:17:58编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/8/3 16:28:00 [只看该作者]

For Each dr1 As DataRow In  e.DataTable.DataRows
    Dim dr2 As DataRow = e.DataTable.Find("FindFather = '" & dr1("sortkey") & "'")
    If dr2 Is Nothing Then
        dr1("Istree") = True
    Else
        dr1("Istree") = False
    End If
Next

用=与like的效率哪一个更高一些?

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2012/8/3 16:50:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/8/3 16:55:00 [只看该作者]


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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/8/5 9:51:00 [只看该作者]

这个认真复习了两遍,对以后的练习应当很有帮助。

有个问题再请教,就是如果单单在一个表中来做递归计算没有问题,如果末级节点的某一列数据(例如金额)数据来源于其它的表,这样的代码好象执行中有问题。

题目中的最下级机构的物品数量和金额都可以计算,但往上递归的时候就出错了,试了几个方法都不太行。


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


加好友 发短信
等级:九尾狐 帖子:2243 积分:18477 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/8/5 10:02:00 [只看该作者]

这个认真复习了两遍,对以后的练习应当很有帮助。

有个问题再请教,就是如果单单在一个表中来做递归计算没有问题,如果末级节点的某一列数据(例如金额)数据来源于其它的表,这样的代码好象执行中有问题。

题目中的最下级机构的物品数量和金额都可以计算,但往上递归的时候就出错了,试了几个方法都不太行。
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目198.table



 回到顶部