以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口表中的beforesavedatarwo事件执行问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=172684)

--  作者:happyft
--  发布时间:2021/10/25 21:38:00
--  窗口表中的beforesavedatarwo事件执行问题
一个窗口表中,有主表,同时还有一个子表,保存都是通用sql语句拼接语句一次性执行的;但在保存前想验证一些数据,所在在窗口表的beforesavedatarow事件写代码,而在全局表中的beforesavedatarow事件取消保存,现在问题时如何主表执行到全表事件后用e.cancel=true停止执行后子表的表事件中也就不再执行了,
如何让每个窗口表中的beforesavedatarow事件执行,但全局表事件中的这个同名事件都不执行?

谢谢!

--  作者:有点蓝
--  发布时间:2021/10/25 21:56:00
--  
全局表事件的e.cancel=true没有办法影响表事件。可以理解为是不同的事件,无法互相影响

如果不想执行全局表事件中的事件,不要开启这个全局表事件不就行了

--  作者:HappyFt
--  发布时间:2021/10/25 23:26:00
--  
不能不启用,就是想在表事件中执行,然后到全局表事件中取消执行,主要是触发保存动作来验证数据,不需要这个事件来真正保存数据
If Tables(wn & "_主表").AllowEdit = True Then  \'只有未锁定的表才需要保存
   datatables(wn & "_主表").Save  \'主表执行保存后到全局事件执行e.cancel=true后下面的各子表保存的代码就不会执行了
   Dim drs As List(of DataRow) = DataTables("dtbSet").Select("MtbName = \'" & wn & "_主表\'")
   If drs.count > 0 Then  \'有明细表时再保存各明细表
      for each dr as datarow in drs
           datatables(dr("wintbN).Save  \'主表保存过后子表就不会执行保存的动作了
      Next
   End If
end if

--  作者:有点蓝
--  发布时间:2021/10/26 8:42:00
--  
没有办法。要么全部逻辑在全局表事件处理,要么全部在表事件处理