汗,才理解你的意思。为什么要在展开的时候计算?你在bom表里面可以先一次性得到值啊。
内部函数 sum
Dim dr As DataRow = args(0)
Dim dt As DataTable = dr.DataTable
Dim dj As Double = dr("单价")
Dim drs As List(of DataRow)
drs = dt.Select("[父键] = '" & dr("子键") & "'")
If drs.Count = 0 Then
Return dr("单价")
Else
Dim sum As Double = 0
For Each cdr As DataRow In drs
sum += Functions.Execute("sum",cdr) * cdr("数量")
Next
dr("单价") = sum
Return sum
End If
计算单价代码
Dim dt As DataTable = DataTables("bom")
For Each dr As DataRow In dt.Select("父键 is null")
Functions.Execute("sum",dr)
Next