以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 在表中判断是否为末级节点 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=22135) |
||||
-- 作者:chnfo -- 发布时间:2012/8/3 15:13:00 -- 在表中判断是否为末级节点 因为节点关系已经用"\\"分隔符标记,这样是可以在窗口中展示成树的。 现在有两个问题 (1)如何判断这个节点就是末级节点。按我的想法是,如果这个节点的“code”在"FindFather"列中能找到,它肯定不是末级节点,否则就是末级节点,在帮助中寻觅了一番,也试了几回,不得其门而入 (2)在实际工作中,需要用到非末级节点的V值递归计算。我的想法是,直接 sum(FindFather=本节点的code,对应的V就OK了),但再想想,好象必须要用到遍历才可以。 请高手指教。
|
||||
-- 作者:飞 -- 发布时间:2012/8/3 15:25:00 -- 就判断节点的子节点数量或者用level属性 if Node.Node.Count = 0 then
if Node.Level = ... then |
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/8/3 15:32:00 -- 其实很简单,你在命令窗口执行:
For Each dr1 As DataRow In DataTables("data").DataRows |
||||
-- 作者:chnfo -- 发布时间:2012/8/3 15:58:00 -- 还是帮助看得不精啊,我总是用=而不是用like。 晕死。 那第二个问题呢,父节点的V值=sum(子节点的V),一直算到顶级节点,是否也要遍历计算?
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/8/3 16:14:00 -- 本来想留个你做练习的:
For Each dr1 As DataRow In DataTables("data").DataRows
你要多看帮助,你看看上面的代码,其实没有技巧可言,全部来自帮助的哦。 [此贴子已经被作者于2012-8-3 16:17:58编辑过]
|
||||
-- 作者:chnfo -- 发布时间: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的效率哪一个更高一些?
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/8/3 16:55:00 -- 好好看看:
http://www.foxtable.com/help/topics/0102.htm http://www.foxtable.com/help/topics/1647.htm
|
||||
-- 作者:chnfo -- 发布时间:2012/8/5 9:51:00 -- 这个认真复习了两遍,对以后的练习应当很有帮助。 有个问题再请教,就是如果单单在一个表中来做递归计算没有问题,如果末级节点的某一列数据(例如金额)数据来源于其它的表,这样的代码好象执行中有问题。 题目中的最下级机构的物品数量和金额都可以计算,但往上递归的时候就出错了,试了几个方法都不太行。 |
||||
-- 作者:chnfo -- 发布时间:2012/8/5 10:02:00 -- 这个认真复习了两遍,对以后的练习应当很有帮助。 有个问题再请教,就是如果单单在一个表中来做递归计算没有问题,如果末级节点的某一列数据(例如金额)数据来源于其它的表,这样的代码好象执行中有问题。 题目中的最下级机构的物品数量和金额都可以计算,但往上递归的时候就出错了,试了几个方法都不太行。
|