以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  全局表事件遇到问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=18303)

--  作者:huangyz0810
--  发布时间: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
--  发布时间:2012/4/8 23:39:00
--  
这个代码放到哪个事件中?
--  作者:huangyz0810
--  发布时间:2012/4/8 23:52:00
--  
以下是引用czy在2012-4-8 23:39:00的发言:
这个代码放到哪个事件中?

放到全局表事件的DataRowadded中。


--  作者:狐狸爸爸
--  发布时间:2012/4/9 7:21:00
--  

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

 

应该判断一下:

 

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

        你原来的代码

End If

 

 

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

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

--  作者:huangyz0810
--  发布时间: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