以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]父节点的统计不能执行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=22187)

--  作者:chnfo
--  发布时间:2012/8/5 10:28:00
--  [求助]父节点的统计不能执行

现在公司有N个部门,有些部门可能还有小部门,而公司的物品分布在各个部门里面,需要计算公司、各个大小部门分别的物品总量、物品总额、以及物品的平均单价
基本约束是:物品总是登记在最末级的部门(或小部门)下。

已经完成的工作:
(1)部门的物品登记之后,该部门的数量和金额可以自动汇总,并可以计算该部门的物品均价。
(2)部门的物品数据修改,该部门的数量和金额可以自动更新。

问题:
当我要计算小部门的上级,也就是非末级节点的数量和金额时,执行出错。

我分析原因出在“部门物品分布”的表的dataclochanged的第三步有问题,即

\'第3步,计算末级节点的金额\'
For Each dr1 As DataRow In e.DataTable.DataRows
    Dim FlSumDetail As String = "WBSID = " & e.DataRow("_Identify")
    Dim FlSumSon As String ="FatherCode  like \'" & dr1("code") & "\\*\'"
    Dim dr2 As DataRow = e.DataTable.Find(FlSumSon)
    If dr2 Is Nothing Then
        dr1("Istree") = True
        \'如果是末级节点,则其金额数据来源于子表的数据汇总
        e.DataRow("V") = DataTables("WP").Compute("Sum(V)", FlSumDetail)
        e.DataRow("A") = DataTables("WP").Compute("Sum(A)", FlSumDetail)
        \'隐藏从表\'
        Tables("WP").Visible = False
        dr1("V") = e.DataTable.Compute("sum(V)",FlSumSon)   ‘应当就是这一段有问题
    Else
        dr1("Istree") = False
    End If
Next



以下只是一个示例,如果叶节点的数据没有来源,是可以执行统计的。
但如果叶节点的数据有其它的来源,好象执行就有点问题。
请高手指教。

虽然从理论上说,可以通过
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目198.table

统计来执行,不过这是一个示例,我希望在界面上就能即输即得结果,方便使用。


[此贴子已经被作者于2012-8-6 9:18:09编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/8/6 9:18:00
--  

全部用关联和表达式,加一个关联,这样本部门用的,下级部门用的,本部门+加下级部门(合计)的,统统可以统计出来。

以金额为例:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目198.table


--  作者:小猪鑫鑫
--  发布时间:2012/8/6 9:39:00
--  
学习,谢谢
--  作者:chnfo
--  发布时间:2012/8/6 22:03:00
--  
调试成功,非常感谢.