实际的数据是
表A
关联列 费用合计
pc001 300
pc002 150
表B
关联列 费用种类 费用金额
pc001 保费 100
pc001 运费 200
pc002 保费 100
pc002 税费 50 ------> pc001 税费 50
考虑到有可能表B的关联列pc002修改为pc001,需重新统计表A的“费用合计”,所以在表B datacolchanged 设置了:
Select Case e.DataCol.Name
Case "关联列" '子表关键字变化,触发父表新旧2个关键字汇总内容更新
If e.OldValue <> e.NewValue Then
Dim pr,prold As DataRow
pr = DataTables("表A").Find("[关联列] = '" & e.DataRow("关联列") & "'")
prold = DataTables("表A").Find("[关联列] = '" & e.OldValue & "'")
If pr IsNot Nothing Then
pr("费用合计") = DataTables("表B").Compute("Sum([费用金额])","[关联列] = '" & e.DataRow("关联列") & "'")
messagebox.show("新值代码执行")
End If
If prold IsNot Nothing Then
prold("费用合计") = DataTables("表B").Compute("Sum([费用金额])","[关联列] = '" & e.OldValue & "'")
messagebox.show("旧值代码执行")
End If
End If
此代码对于上面修改子表数据的情况,确实起到作用了,
表A
关联列 费用合计
pc001 350
pc002 100
但是觉得勾选了“同步更新关联列”,pc001改成pc003,应该也能触发表B的新旧两个值的这两段代码,为什么旧值代码执行了,新值汇总的代码没有执行?