以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 系统表事件的beforesaverow (http://foxtable.com/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) |