以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关联表子表明细删除完后,同步删除  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=169821)

--  作者:北狐
--  发布时间:2021/7/1 18:55:00
--  关联表子表明细删除完后,同步删除
你好,老师,我根据帮助

DataRowDeleting

正在删除一行的时候执行,这时行还未被删除。

e参数属性: 

DataTable:返回要删除行的数据表。
DataRow:  返回要删除的数据行。

示例

假定订单表和订单明细表已经建立关联,希望用户在订单明细表删除某订单的最后一个明细时,能自动删除此订单,可以将DataRowDeleting事件代码设置为:

Dim pr As DataRow = e.DataRow.GetParentRow("订单") \'获得此明细对应的订单

If pr IsNot  Nothing Then \'如果有对应的订单

     If pr.GetChildRows("订单明细").count  = 1 Then \'且这个订单的明细只有一个了

           pr.Delete \'删除这个订单

     End If

End If

在软件里这样设置,只是更改了表名,且两个表也关联了,如下图


图片点击可在新窗口打开查看此主题相关图片如下:1625136331(1).jpg
图片点击可在新窗口打开查看




图片点击可在新窗口打开查看此主题相关图片如下:1625136301.jpg
图片点击可在新窗口打开查看

但还是报错如下

.NET Framework 版本:2.0.50727.8806
Foxtable 版本:2018.10.9.1
错误所在事件:表,R03_payable_Detail3,DataRowDeleting
详细错误信息:
调用的目标发生了异常。
不能在 OnRowDeleting 事件内部调用 Delete。引发异常以取消此删除。
求老师帮忙指正


--  作者:有点蓝
--  发布时间:2021/7/1 20:46:00
--  

Dim pr As DataRow = e.DataRow.GetParentRow("订单"\'获得此明细对应的订单

If pr IsNot  Nothing Then \'如果有对应的订单

     If pr.GetChildRows("订单明细").count  = 1 Then \'且这个订单的明细只有一个了

e.DataRow("某关联列") = nothing

           pr.Delete \'删除这个订单

     End If

End If