我想完成一个功能,就是如果删除了出库明细表中的一行数据,就自动更新订单明细表中的累计出货数量。
订单明细表中的累计出货数量更新代码如下(这个还是甜老师帮我改的呢):
Select Case e.DataCol.Name
Case "累计出货数量"
Dim filter As String = "客户订单号 = '" & e.DataRow("客户订单号") & "' and 客户产品号 = '" & e.DataRow("客户产品号") & "' and 订单行号 = '" & e.DataRow("订单行号") & "'"
Dim sum As Double = DataTables("出库明细").Compute("sum(实际交货数量)", filter)
e.DataTable.ReplaceFor("累计出货数量", sum, filter)
End Select
我在出库明细表的DataRowDeleting里面用以下代码希望可以实现这个功能,但是我试了2中方法都不行,调试了好久,无奈只能又来求助了。
代码1:
Dim dr2 As DataRow
'否则在订单明细表查找同行号的客户产品号,将找到的行赋值给变量dr
dr2 = DataTables("订单明细表").Find("[客户订单号] = '" & e.DataRow("客户订单号") & "' And [订单行号] = '" & e.DataRow("订单行号") & "'")
If dr2 IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
Dim filter As String = "客户订单号 = '" & e.DataRow("客户订单号") & "' and 订单行号 = '" & e.DataRow("订单行号") & "'"
DataTables("订单明细表").DataCols("累计出货数量").RaiseDataColChanged(filter)
End If
代码2:
Dim dr2 As DataRow
'否则在订单明细表查找同行号的客户产品号,将找到的行赋值给变量dr
dr2 = DataTables("订单明细表").Find("[客户订单号] = '" & e.DataRow("客户订单号") & "' And [订单行号] = '" & e.DataRow("订单行号") & "'")
If dr2 IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
Dim filter As String = "客户订单号 = '" & e.DataRow("客户订单号") & "' and 订单行号 = '" & e.DataRow("订单行号") & "'"
DataTables("订单明细表").DataCols("累计出货数量").RaiseDataColChanged(filter)
End If
无论是代码1还是代码2都不会自动更新订单明细表中的累计出货数量。
求助,老师们帮我看下哪里有问题,谢谢啦。