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


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

主题:DataColChanging触发两次的问题

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


加好友 发短信
等级:二尾狐 帖子:516 积分:4524 威望: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编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/20 13:47:00 [只看该作者]

例子发上来.

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


加好友 发短信
等级:二尾狐 帖子:516 积分:4524 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 14:18:00 [只看该作者]

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


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/20 14:29:00 [只看该作者]

如何操作触发两次?  我在窗口里. 表里输入.均只触发一次.

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/20 14:33:00 [只看该作者]

 把核对的代码写到窗口的Validating事件,不要写到dataColChanging事件。

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


加好友 发短信
等级:二尾狐 帖子:516 积分:4524 威望: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编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/20 14:40:00 [只看该作者]

.
图片点击可在新窗口打开查看此主题相关图片如下:1.gif
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/20 14:40:00 [只看该作者]

怎么测试都是只弹出一次.

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


加好友 发短信
等级:二尾狐 帖子:516 积分:4524 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 14:46:00 [只看该作者]

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

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/20 14:47:00 [只看该作者]

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

 

1、编辑表的时候,可以写到表事件的 ValidateEdit事件;

 

2、窗口的时候,写到Validating事件


 回到顶部
总数 21 1 2 3 下一页