以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 列验证和load重新加载行冲突 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133507) |
||||
-- 作者:vimin -- 发布时间:2019/4/15 14:06:00 -- 列验证和load重新加载行冲突 我利用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。请问这能解决吗? |
||||
-- 作者:有点甜 -- 发布时间:2019/4/15 15:09:00 --
加载数据不会导致触发datacolchanged事件,请做出错实例发上来测试。
|
||||
-- 作者:vimin -- 发布时间:2019/4/16 21:30:00 --
我尽量把不相关的都删了,请帮我看一下啊。 请用两个测试账户分别登录,密码都是888. 在表的某一行修改然后保存,就会在另一个账号弹出“名称已经存在”的提醒 |
||||
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2019/4/17 11:11:00 -- 明白了,非常感谢! |