这是例子,代码非常简单。
窗口1的按钮事件如下:With DataTables("表A") ’从数据库中重载表
.LoadFilter = ""
.Load()
End With
With Tables("表A") ’清空过滤条件、设置排序并增加一行
.Filter = ""
.Sort = "_Identify"
.AddNew()
End With
数据表CurrentChanged的事件设置如下:
MessageBox.Show(e.table.Current("第一列"))
两个事件分别单独执行都没问题,但如果两个事件都触发,就出错了。搞了一上午都没找出原因,头都大了。请高手帮忙看看,多谢!
if tables"表A").count > 1 then
MessageBox.Show(e.table.Current("第一列"))
end if
但会出现两次MessageBox.Show的提示窗口 ~? 且第一次提示的第一行第一列的内容,第二次提示的就是
增加的行第一列的内容(空值),如果按钮中给增加的行第一列赋值后,还会再显示赋值后的内容。
还有一个怪现象:就是,任何单元格输入的第一个字符或空格键后就好跳出了提示(显示原该行第一列的内容),输入完回车后又提示输入后的内容。。。。。
按钮代码中,不增加行也没问题~ ! 但按钮对任何行的第一列赋值,都会在第一行第一列中显示???
[此贴子已经被作者于2009-7-31 13:38:54编辑过]
是的,非常奇怪。估计就是因为新增行的问题。按说,用table里的新增行,光标会自动定位到这个新增行上,弹出的显示内容也应该是这个新增行的。为什么就出错呢?
莫不是foxtable本身的bug吧?
还有啊~
1、按钮中只用第一段代码 with .... end with : 这时表中的无论当前是选择那个单元格都会跑到第一行去。但这是currentchanged事件代码不会提示!
2、按钮中只用第二段代码 with .... end with :增不增加行都不会有上面现象~
[此贴子已经被作者于2009-7-31 13:52:39编辑过]
出错是正常,因为Load之前,因为重新加载的话,Current会为空的,直到加载结束。
以下是引用狐狸爸爸在2009-7-31 14:21:00的发言:
出错是正常,因为Load之前,因为重新加载的话,Current会为空的,直到加载结束。
确实如此,加个判断就可以了:If CurrentTable.Current Isnot nothing。
谢谢老六的点拨