以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  DataColChanging触发两次的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=68558)

--  作者:jswalley
--  发布时间:2015/5/20 13:47:00
--  DataColChanging触发两次的问题
论坛前面也有人问过,窗口中控件绑定表字段,然后在表事件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
--  发布时间:2015/5/20 13:47:00
--  
例子发上来.
--  作者:jswalley
--  发布时间:2015/5/20 14:18:00
--  
简单做了一个,在工号可以输入表有的记录 CELL0001就会触发两次提示。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试项目.rar


--  作者:Bin
--  发布时间:2015/5/20 14:29:00
--  
如何操作触发两次?  我在窗口里. 表里输入.均只触发一次.
--  作者:大红袍
--  发布时间:2015/5/20 14:33:00
--  
 把核对的代码写到窗口的Validating事件,不要写到dataColChanging事件。
--  作者:jswalley
--  发布时间:2015/5/20 14:39:00
--  DataColChanging触发两次的问题
你执行窗口,然后在工号的文本框中输入一个重复的信息,比如CELL0001,然后来离开这个控件,就会弹出两次提示。
在窗口中写代码还要保存原来的数据,不能利用表事件中的e.OldValue、e.NewValue及e.DataRow信息,我感觉狐表的表事件
代码优势很大,如果不能用这个就不是很方便。
[此贴子已经被作者于2015/5/20 14:42:25编辑过]

--  作者:Bin
--  发布时间:2015/5/20 14:40:00
--  
.
图片点击可在新窗口打开查看此主题相关图片如下:1.gif
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2015/5/20 14:40:00
--  
怎么测试都是只弹出一次.
--  作者:jswalley
--  发布时间:2015/5/20 14:46:00
--  
我操作系统是WIN7 64位。这个和什么有关呢?
--  作者:大红袍
--  发布时间: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事件