Foxtable(狐表)用户栏目专家坐堂 → 全局表事件遇到问题


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

主题:全局表事件遇到问题

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


加好友 发短信
等级:婴狐 帖子:53 积分:559 威望:0 精华:0 注册:2012/2/21 19:57:00
全局表事件遇到问题  发帖心情 Post By:2012/4/8 23:34:00 [只看该作者]

我在全局表事件加入下面的代码,同时在项目事件Initialize里面允许了DataRowadded,但是运行程序,执行了第一个画面(登录)后程序就自动退出了:

 

Dim  tbl  As DataRow
tbl  = DataTables("操作记录").AddNew()  '记录增加记录"事件
tbl ("用户") = vars("用户名")
tbl ("发生时间")= Date.now
Select Case e.DataTable.Name
    Case "订单管理"
        tbl ("事件")= "增加订单记录"
    Case "生产管理"
       tbl ("事件")= "增加生产管理记录"
    Case "员工管理"
        tbl ("事件")= "增加员工管理记录"
    Case "登录用户"
        tbl ("事件")= "增加登录用户记录"
    Case "内部信息"
        tbl ("事件")= "增加信息收发记录"
    Case Else
        tbl ("事件")= "增加其它"
End Select

DataTables("操作记录").Save()

 

不知道怎么回事?有请高手分析一下。谢谢!


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/4/8 23:39:00 [只看该作者]

这个代码放到哪个事件中?

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


加好友 发短信
等级:婴狐 帖子:53 积分:559 威望:0 精华:0 注册:2012/2/21 19:57:00
  发帖心情 Post By:2012/4/8 23:52:00 [只看该作者]

以下是引用czy在2012-4-8 23:39:00的发言:
这个代码放到哪个事件中?

放到全局表事件的DataRowadded中。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/9 7:21:00 [只看该作者]

这样是不行的,你在DataRowadded增加行,这个增加行又会触发DataRowadded事件,如果又增加行,又触发DataRowadded事件,造成死循环,所以一定会退出。

 

应该判断一下:

 

If e.DataTable.Name = "特定的表名" Then

        你原来的代码

End If

 

 

全局表事件不判断表名,是乱来的。

[此贴子已经被作者于2012-4-9 7:22:16编辑过]

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


加好友 发短信
等级:婴狐 帖子:53 积分:559 威望:0 精华:0 注册:2012/2/21 19:57:00
  发帖心情 Post By:2012/4/9 23:06:00 [只看该作者]

谢谢狐狸爸爸!按照他的建议,解决了问题,代码如下:

Dim  tbl  As DataRow

If e.DataTable.Name <> "操作记录" Then
    tbl  = DataTables("操作记录").AddNew()  '记录登录事件
    tbl ("用户") = vars("用户名")
    tbl ("发生时间")= Date.now
   
    Select Case e.DataTable.Name
        Case "订单管理"
            tbl ("事件")= "增加订单记录"
        Case "生产管理"
            tbl ("事件")= "增加生产管理记录"
        Case "员工管理"
            tbl ("事件")= "增加员工管理记录"
        Case "登录用户"
            tbl ("事件")= "增加登录用户记录"
        Case "内部信息"
            tbl ("事件")= "增加信息收发记录"
        Case Else
            tbl ("事件")= "其它操作"
    End Select
    DataTables("操作记录").Save()
End If


 回到顶部