以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  检查重复的代码应该放在哪个事件合适?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126557)

--  作者:happyft
--  发布时间:2018/10/24 12:03:00
--  检查重复的代码应该放在哪个事件合适?
在datacolchanged事件中用了如下代码:检查重复时清空
Dim dr As DataRow
Dim edr As DataRow = e.DataRow
Select Case e.DataCol.name
    Case "部门编码"
        If edr.Isnull("部门编码") = False Then
            dr = e.DataTable.Find("部门编码 = \'" & edr("部门编码") & "\' And [_Identify] <> " & edr("_Identify"))
            If dr IsNot Nothing Then  \'如果数据行已经存在
                MessageBox.Show("相同 部门编码 的值已经在当前表中,请输入不同的部门编码!")
                edr("部门编码") = Nothing
            End If
        End If
End Select
上面的代码每次手工录入部门编码时没什么问题,
但很多时候想从一个旧值中复制来用,比如从上一行的A00001复制到下一行粘贴修改为A00002但粘贴后事件就执行了自动清除了,还得重新全部输入 
如果想粘贴后不执行,要等粘贴过后修改完换了另外一个单元格才执行应该放在哪个事件比较合适?

谢谢!




--  作者:有点甜
--  发布时间:2018/10/24 12:06:00
--  

你可以在keydown事件加一个标志 vars("粘贴") = true

 

keyup事件,写代码 vars("粘贴") = false


--  作者:HappyFt
--  发布时间:2018/10/24 13:54:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:tim截图20181024134838.jpg
图片点击可在新窗口打开查看

没弄明白,意思是从上面的编码复制到下面单元格后再改成010802,,但datacolchanged事件粘贴时就会立即执行将粘贴内容清空了(因为重复),
也就是想在粘贴值时datacolchanged事件不执行,等人为更改内容后或切换到其他单元格或回车时才执行datacolchanged事件中的代码

--  作者:有点甜
--  发布时间:2018/10/24 14:54:00
--  
认认真真看懂2楼。在datacolchanged事件判断 vars("粘贴") 的值
--  作者:HappyFt
--  发布时间:2018/10/24 15:18:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:禁止重复测试.foxdb


那样还是有问题,如果用户复制粘贴后不做任何操作,将鼠标移动到另外的单元格,此时就不提示重复了.
也就是粘贴时重复不提示,但是光标离开或回车时就要提示重复才行.
谢谢!


--  作者:有点甜
--  发布时间:2018/10/24 15:27:00
--  

光标离开事件,参考

 

http://www.foxtable.com/webhelp/scr/0644.htm