多列跨表更新
如果订单表有多列数据来自于产品表,一样可以采用类似的设计实现跨表更新。
例如,假定产品表和订单表通过产品编号联系起来(不一定建立了关联),订单表输入产品编号后,品名、型号、规格、单价四列内容从产品表自动继承输入。
为实现此目的,首先订单表的DataColChanged事件代码应设置为:
If e.DataCol.Name = "产品编号"
Then
If e.NewValue Is Nothing
Then
e.DataRow("品名") = Nothing
e.DataRow("型号") = Nothing
e.DataRow("规格") = Nothing
e.DataRow("单价") = Nothing
Else
Dim dr As
DataRow
dr = DataTables("产品").Find("[产品编号] = '" & e.NewValue & "'")
If dr IsNot Nothing
e.DataRow("品名") = dr("品名")
e.DataRow("型号") = dr("型号")
e.DataRow("规格") = dr("规格")
e.DataRow("单价") = dr("单价")
End
If
End
If
End
If
现在希望在产品表修改上述四列数据后,订单表能够自动更新这些列的数据,为此可以将产品表的DataColChanged事件设置为:
Select
Case e.DataCol.Name
Case
"品名","型号","规格","单价"
Dim Filter As
String = "[产品编号] = '" & e.DataRow("产品编号") & "'"
Dim drs As
List(Of DataRow) = DataTables("订单").Select(Filter)
For
Each dr As
DataRow
In drs
dr(e.DataCol.Name) = e.NewValue
Next
End
Select
或者:
Select
Case e.DataCol.Name
Case
"品名","型号","规格","单价"
Dim Filter As
String = "[产品编号] = '" & e.DataRow("产品编号") & "'"
DataTables("订单").ReplaceFor(e.DataCol.Name, e.NewValue, Filter)
End
Select
可以看到不管是单列还是多列,自动更新的代码都一样的简洁。
应该是这个吧