以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  跨表引用删除时的如何自动更新?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91418)

--  作者:lilywang
--  发布时间:2016/10/10 15:22:00
--  跨表引用删除时的如何自动更新?
A表:合同号 出货日期

B表:合同号 出货日期

B表下的 DataColChanged

If e.DataCol.Name = "出货日期"
Dim Filter As String = "[合同号] = \'" & e.DataRow("合同号") & "\'" 
DataTables("A表").ReplaceFor("出货日期",e.NewValue,filter)
End If

A表跨表引用B表

B表同个合同号增加两条记录日期分别为10-01,10-02,然后删除10-02这条记录,A表的出货日期还是10-02 怎么让它自动更新?

--  作者:有点蓝
--  发布时间:2016/10/10 16:13:00
--  
删除记录不会触发DataColChanged

B表BeforeDeleteDataRow事件

Dim Filter As String = "[合同号] = \'" & e.DataRow("合同号") & "\'" 
dim dr as datarow = e.DataTable.find(Filter,"出货日期 desc")
if dr is nothing then
DataTables("A表").ReplaceFor("出货日期",nothing,filter)
else
DataTables("A表").ReplaceFor("出货日期",dr("出货日期"),filter)
end if

--  作者:lilywang
--  发布时间:2016/10/10 16:32:00
--  
您好,我试了下还是没有触发更新
--  作者:有点蓝
--  发布时间:2016/10/10 16:49:00
--  
请上传例子测试
--  作者:lilywang
--  发布时间:2016/10/10 17:16:00
--  
例子如下
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2016/10/10 17:18:09编辑过]

--  作者:有点蓝
--  发布时间:2016/10/10 17:27:00
--  
Dim Filter As String = "[合同号] = \'" & e.DataRow("合同号") & "\'"
Dim dr As DataRow = e.DataTable.find(Filter & " and 出货日期 <> \'" & e.DataRow("出货日期") & "\'","出货日期 desc")
If dr Is Nothing Then
    DataTables("A表").ReplaceFor("出货日期",Nothing,filter)
Else
    DataTables("A表").ReplaceFor("出货日期",dr("出货日期"),filter)
End If

--  作者:lilywang
--  发布时间:2016/10/10 17:32:00
--  
学习了 感谢!