以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  系统表事件的beforesaverow  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69705)

--  作者:newsun2k
--  发布时间:2015/6/9 16:00:00
--  系统表事件的beforesaverow
如果通过代码增加一行
dr = datatables("表A").ADDNEW
dr("第一列") = “a1”
dr.save
这时,是不是不触发全局表事件的beforesaverow?
我已经设定好了DataTables(“表A”).GlobalHandler.BeforeSaveDataRow = True

--  作者:Bin
--  发布时间:2015/6/9 16:01:00
--  
是的
--  作者:newsun2k
--  发布时间:2015/6/9 16:02:00
--  
那如何主动调用这个事件呢?


--  作者:Bin
--  发布时间:2015/6/9 16:03:00
--  
什么意思没明白? 你这就已经触发了这个事件啊
--  作者:大红袍
--  发布时间:2015/6/9 16:08:00
--  
 不可能不触发
--  作者:newsun2k
--  发布时间:2015/6/9 16:20:00
--  
我在全局表事件的beforerowsave中,第一句话就加入一个函数
Functions.Execute("INSERT调试","SYS_BEFOREROWSAVE","","",E.DataTable.NAME)
用于把当前的表名存储在一个记录表中。
我在保存表A的同时,通过dr=datatables("表B").addnew增加一行,并调用dr.save进行保存。
表B中新增的数据已经加入,但是记录表中,无表B的记录。


--  作者:Bin
--  发布时间:2015/6/9 16:21:00
--  
加入 messsagebox.show(1)  看看是否触发了事件.
--  作者:newsun2k
--  发布时间:2015/6/9 16:28:00
--  
因为这个事件会被触发好几次,所以通过MESSAGEBOX不太好判断是当前是保存哪个表,所以我调用一个函数,
Functions.Execute("INSERT调试","SYS_BEFOREROWSAVE","","",E.DataTable.NAME)
存放E.DataTable.NAME

--  作者:Bin
--  发布时间:2015/6/9 16:31:00
--  
messsagebox.show(e.datatable.name)