你这个金额是表达式,不能触发事件的
方法一
把金额改为数据列,通过代码计算金额,统计的代码不变
方法二
金额里类型不变
入库datacolchanged改改
Select Case e.DataCol.Name
Case "数量","单价"
Dim pr As DataRow
pr = DataTables("库存").Find("产品名称 = '" & e.DataRow("产品名称") & "'And 规格型号 = '" & e.DataRow("规格型号") & "'")
If pr IsNot Nothing Then
DataTables("库存").DataCols("产品名称").RaiseDataColChanged(pr)
End If
End Select
库存datacolchanged改改
If e.DataCol.Name = "产品名称" OrElse e.DataCol.Name = "规格型号" Then
Dim Filter As String = "1=1"
If e.DataRow.IsNull("产品名称") = False Then filter &= " and 产品名称 = '" & e.DataRow("产品名称") & "'"
If e.DataRow.IsNull("规格型号") = False Then filter &= " and 规格型号 = '" & e.DataRow("规格型号") & "'"
e.DataRow("入库_数量") = DataTables("入库").Compute("Sum(数量)", Filter)
e.DataRow("入库_快递费") = DataTables("入库").Compute("Sum(快递费)", Filter)
Dim sum As Double = 0
For Each dr As DataRow In DataTables("入库").Select(Filter)
sum += dr("数量") * dr("单价")
Next
e.DataRow("入库_金额") = sum
End If