Foxtable(狐表)用户栏目专家坐堂 → 列验证和load重新加载行冲突


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

主题:列验证和load重新加载行冲突

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


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
列验证和load重新加载行冲突  发帖心情 Post By:2019/4/15 14:06:00 [只看该作者]

我利用openqq进行数据同步,在用户A修改行H之后,其他好友用户重新加载行H。代码就不贴了。
问题是,我为了验证列“用户单位”,不能空和不能重名,在Datacolchanging事件中写入了以下代码:
If e.DataCol.Name = "单位名称" Then
    If e.NewValue Is Nothing Then
        MessageBox.show("单位名称不能空着","提示",MessageBoxButtons.OK,MessageBoxIcon.Error)
        e.Cancel = True
    Else
        Dim h As DataRow
        h = e.DataTable.sqlfind("单位名称 = '" & e.NewValue & "'")
        If h IsNot Nothing Then
            MessageBox.show("单位名称已经存在")
            e.Cancel = True
        End If
    End If
End If

运行时提醒“名称已存在”。我想是该代码标黄的部分会导致load该行时造成的。
但我是分页的设计,所以用SQLFIND。请问这能解决吗?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/15 15:09:00 [只看该作者]

 

加载数据不会导致触发datacolchanged事件,请做出错实例发上来测试。

 

 


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


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2019/4/16 21:30:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.zip

我尽量把不相关的都删了,请帮我看一下啊。

请用两个测试账户分别登录,密码都是888.

在表的某一行修改然后保存,就会在另一个账号弹出“名称已经存在”的提醒


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


加好友 发短信
等级:超级版主 帖子:107702 积分:547831 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/16 21:51:00 [只看该作者]

表格的Load不会触发事件,但是行的Load是会触发事件,这个也是合理的,不然基于行的某些计算就会有问题,比如流水账这种

如果不需要触发,加上systemready 即可,如:

systemready = False
DataTables("表A").DataRows(0).Load
systemready = True
[此贴子已经被作者于2019/4/16 21:51:47编辑过]

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


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2019/4/17 11:11:00 [只看该作者]

明白了,非常感谢!

 回到顶部