Foxtable(狐表)用户栏目专家坐堂 → [求助]全局表事件


  共有1615人关注过本帖树形打印复制链接

主题:[求助]全局表事件

帅哥哟,离线,有人找我吗?
kaiyu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:777 积分:7901 威望:0 精华:0 注册:2014/4/21 15:16:00
[求助]全局表事件  发帖心情 Post By:2016/12/22 16:39:00 [只看该作者]

我在项目的全局表事件datacolchanged 下写了如下代码

If e.DataTable.DataCols.Contains("_identify")
    Dim r As DataRow = DataTables("SY系统日志记录表").AddNew
    r("操作类型") = "更新操作"
    r("操作表名") = e.DataTable.Name
    r("操作列名") = e.DataCol.Name
    r("操作行号") = e.DataRow("_identify")
    r("旧值") = e.OldValue
    r("新值") = e.NewValue
    r.save
  End If

Initialize项目表事件代码

For Each dt As DataTable In DataTables  '打开全局表删除表事件,用于记录所有表删除修改记录信息
    dt.GlobalHandler.DataRowDeleting = True
    dt.GlobalHandler.BeforeSaveDataRow = True
    dt.GlobalHandler.DataColChanged = True
Next

为什么全局表事件没有运行呢,在日志表中没有发现新增数据


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/22 16:42:00 [只看该作者]

 你把这段代码,单独在命令窗口运行一次

 

For Each dt As DataTable In DataTables  '打开全局表删除表事件,用于记录所有表删除修改记录信息
    dt.GlobalHandler.DataRowDeleting = True
    dt.GlobalHandler.BeforeSaveDataRow = True
    dt.GlobalHandler.DataColChanged = True
Next


 回到顶部
帅哥哟,离线,有人找我吗?
kaiyu
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:777 积分:7901 威望:0 精华:0 注册:2014/4/21 15:16:00
  发帖心情 Post By:2016/12/22 16:51:00 [只看该作者]

运行过了,不行

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/22 16:53:00 [只看该作者]

1、datacolchanged 第一行加上 msgbox(e.DataCol.name)

 

2、去任意一个表修改值测试。


 回到顶部
帅哥哟,离线,有人找我吗?
baicaocao
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:496 积分:4887 威望:0 精华:0 注册:2012/4/20 8:42:00
  发帖心情 Post By:2016/12/22 21:25:00 [只看该作者]

 建议用保存前验证事件。

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/23 8:27:00 [只看该作者]

如果是窗口sqltable的表,在窗口afterload事件设置一下GlobalHandler

 回到顶部
帅哥哟,离线,有人找我吗?
kaiyu
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:777 积分:7901 威望:0 精华:0 注册:2014/4/21 15:16:00
  发帖心情 Post By:2016/12/23 16:27:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:全局表事件.foxdb

帮我看看在表A或表B修改,在表C为什么没有新增数据


 回到顶部
帅哥,在线噢!
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/23 16:32:00 [只看该作者]

主键不包括再DataCols集合中,改为:

If e.DataTable.baseTable.Columns.Contains("_Identify")
    If e.DataTable.Name <> "表C"
        Dim r As DataRow = DataTables("表C").AddNew
        r("操作类型") = "更新操作"
        r("操作表名") = e.DataTable.Name
        r("操作列名") = e.DataCol.Name
        r("操作行号") = e.DataRow("_identify")
        r("旧值") = e.OldValue
        r("新值") = e.NewValue
        r.save
    End If
End If

 回到顶部
帅哥,在线噢!
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/12/23 16:33:00 [只看该作者]

要学会调试分析:
http://www.foxtable.com/webhelp/scr/1485.htm



 回到顶部