现在公司有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
以下只是一个示例,如果叶节点的数据没有来源,是可以执行统计的。
但如果叶节点的数据有其它的来源,好象执行就有点问题。
请高手指教。
虽然从理论上说,可以通过
统计来执行,不过这是一个示例,我希望在界面上就能即输即得结果,方便使用。
[此贴子已经被作者于2012-8-6 9:18:09编辑过]