谢谢二位,其实我要求也很简单,就是在订单明细的datachanged事件中的代码计算累计出库Select Case e.DataCol.Name
Case "产品编码","来源单号"
'计算累计出库
Dim flt1 As String = "[产品编码] = '" & e.NewValue & "'and [来源单号] = '" & e.DataRow("订单编号") & "'"
Dim cmd As New Sqlcommand
Dim sd As Single
cmd.CommandText = "SELECT Sum(数量) From {出库明细} where " & flt1
sd = cmd.ExecuteScalar()
e.DataRow("累计出库") = sd
End Select
而每次当出库明细中的数量改变时用订单明细中的下述代码触发一下订单明细中的事件即可。
Select Case e.DataCol.Name
Case "数量"
If e.OldValue <> e.NewValue Then '如果数量改变重置生产明细中的列更新出库累计
'先加载订单明细表中的数据
Dim flt = "产品编码 = '" & e.DataRow("产品编码") & "' And 订单编号 = '" & e.DataRow("来源单号") & "'"
DataTables("订单明细").Loadfilter = flt
DataTables("订单明细").Load()
Dim pr As DataRow ''触发事件更新累计出库
pr = DataTables("订单明细").Find("[产品编码] = '" & e.DataRow("产品编码") & "'" & _
"And 订单编号 = '" & e.DataRow("来源单号") & "'")
If pr IsNot Nothing Then
DataTables("订单明细").DataCols("产品编码").RaiseDataColChanged(pr)
End If
End If
End Select
关键是出库明细中的数量改变后订单明细中的累计出库没有改变,但若用手动重置列的就可以,请问一下是哪里出的问题啊?
[此贴子已经被作者于2013-3-30 15:49:47编辑过]