Foxtable(狐表)用户栏目专家坐堂 → DataColChanging触发两次的问题


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

主题:DataColChanging触发两次的问题

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


加好友 发短信
等级:二尾狐 帖子:525 积分:4627 威望:0 精华:0 注册:2012/7/4 16:22:00
DataColChanging触发两次的问题  发帖心情 Post By:2015/5/20 13:47:00 [显示全部帖子]

论坛前面也有人问过,窗口中控件绑定表字段,然后在表事件DataColChanging事件中写如下差不多的代码

If e.DataCol.Name = "订单号" Then
    Dim
dr As DataRow
    dr = e.
DataTable.Find("订单号 = '" & e.NewValue & "'")
   
If dr IsNot Nothing Then
        MessageBox.Show(
"此订单号已经存在!")
        e.Cancel =
True
    End
If
End
If

当鼠标离开控件的时候,就会触发两次。


有老师说在控件中写代码,还要进入控件的时候保存原来的值,离开控件的时候再判断。 这样要设立一个全局变量,而且不能利用e.OldValue和e.NewValue

的方便性。

还是应该解决怎么才能不触发两次的根本问题吧。


[此贴子已经被作者于2015/5/20 13:47:21编辑过]

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


加好友 发短信
等级:二尾狐 帖子:525 积分:4627 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 14:18:00 [显示全部帖子]

简单做了一个,在工号可以输入表有的记录 CELL0001就会触发两次提示。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试项目.rar


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


加好友 发短信
等级:二尾狐 帖子:525 积分:4627 威望:0 精华:0 注册:2012/7/4 16:22:00
DataColChanging触发两次的问题  发帖心情 Post By:2015/5/20 14:39:00 [显示全部帖子]

你执行窗口,然后在工号的文本框中输入一个重复的信息,比如CELL0001,然后来离开这个控件,就会弹出两次提示。
在窗口中写代码还要保存原来的数据,不能利用表事件中的e.OldValue、e.NewValue及e.DataRow信息,我感觉狐表的表事件
代码优势很大,如果不能用这个就不是很方便。
[此贴子已经被作者于2015/5/20 14:42:25编辑过]

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


加好友 发短信
等级:二尾狐 帖子:525 积分:4627 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 14:46:00 [显示全部帖子]

我操作系统是WIN7 64位。这个和什么有关呢?

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


加好友 发短信
等级:二尾狐 帖子:525 积分:4627 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 14:50:00 [显示全部帖子]

大家下载测试一下窗口,运行窗口后,输入CELL0002,看是弹出一次还是两次提示。同样的代码我就是出现两次提示,这个到底跟什么有关。

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


加好友 发短信
等级:二尾狐 帖子:525 积分:4627 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 14:54:00 [显示全部帖子]

确实,用鼠标是一次,用TAB就是两次。Bin老师你试一下。 

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


加好友 发短信
等级:二尾狐 帖子:525 积分:4627 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 15:06:00 [显示全部帖子]

我如果在控件的Validating事件中判断就有一个问题,对于新增的行,我工号是根据自动增长计算的,预先填好的。但用户可以修改,这时候如果用户修改之后如果提示重复,就修改成最新的那个编号,系统也会提示了。

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


加好友 发短信
等级:二尾狐 帖子:525 积分:4627 威望:0 精华:0 注册:2012/7/4 16:22:00
DataColChanging触发两次的问题  发帖心情 Post By:2015/5/20 15:16:00 [显示全部帖子]

这样测试是不会弹出两次提示,但有个问题,之前文本框中输入的值如果重复,会恢复到之前的输入,也就是e.Cancel = True会起作用,但这样修改之后,光标离开
工号的文本框之后,用户输入保留了下来。 尽管提示工号重复。  

要不就 增加一句 e.NewVaule = e.OldValue
[此贴子已经被作者于2015/5/20 15:18:48编辑过]

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


加好友 发短信
等级:二尾狐 帖子:525 积分:4627 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 15:41:00 [显示全部帖子]

谢谢各位老师的解答。

 回到顶部