以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  currenttablechanged事件的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=51903)

--  作者:rjh4078
--  发布时间:2014/6/5 12:22:00
--  currenttablechanged事件的问题

Dim r As Row=Tables("系统日志").addnew
r("日志")=_username & "进入了" & CurrentTable.name
r.DataRow.save

 

为什么这段代码在currenttablechangde事件中会被执行2次?


--  作者:有点甜
--  发布时间:2014/6/5 14:31:00
--  

 改成这样

 

Dim dr As DataRow = DataTables("系统日志").addnew
dr("日志")= _username & "进入了" & CurrentTable.name
dr.save


--  作者:rjh4078
--  发布时间:2014/6/6 0:53:00
--  
以下是引用有点甜在2014-6-5 14:31:00的发言:

 改成这样

 

Dim dr As DataRow = DataTables("系统日志").addnew
dr("日志")= _username & "进入了" & CurrentTable.name
dr.save

甜老师 按照你这方法也是不行的  还是会触发2次

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140606005237.png
图片点击可在新窗口打开查看

--  作者:逛逛
--  发布时间:2014/6/6 7:53:00
--  

帮助

 

 

 

CurrentTableChanged

 

选择不同表后执行,也就是CurrentTable发生变化后执行。
此事件无e参数,这是因为系统变量CurrentTable可以直接返回所选择的表。

如果我们选择不同的主表,会先后触发MainTableChanged和CurrentTableChanged事件,因为此时MainTable和CurrentTable都发生了变化。
如果我们选择一个关联表,那么只会触发CurrentTableChanged事件,因为此时只有CurrentTable发生了变化。

 

 

http://www.foxtable.com/help/topics/0664.htm

 

还是将代码换到  MainTableChanged  事件中去吧


--  作者:有点甜
--  发布时间:2014/6/6 9:14:00
--  

 用一个变量,存储上次的表名,做个判断。

 

static preTableName As String = ""

 

If preTableName = CurrentTable.name Then Return

 

preTableName = CurrentTable.name

Dim dr As DataRow = DataTables("系统日志").addnew
dr("日志")= _username & "进入了" & CurrentTable.name
dr.save


--  作者:rjh4078
--  发布时间:2014/6/6 9:23:00
--  

逛老师 因为我用的都是窗口来交互的 maintable是不变的  只能用甜老师的方案

谢谢几位