Foxtable(狐表)用户栏目专家坐堂 → 禁止重复值


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

主题:禁止重复值

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


加好友 发短信
等级:童狐 帖子:255 积分:2286 威望:0 精华:0 注册:2020/6/28 8:43:00
禁止重复值  发帖心情 Post By:2022/5/22 9:57:00 [只看该作者]

If e.DataCol.Name = "优先等级" Then
    Dim dr As DataRow
    
    dr = e.DataTable.SQLFind("优先等级 = '" & e.NewValue & "' And 当前设计师 = '" & e.DataRow("当前设计师")  & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("同一设计师无法设置两个相同的优先级别")
        e.Cancel = True
    End If
End If


在 datacolchanging  中加入这个代码, 在一定程度上可以避免输入重复值。

但是实际使用过程中,遇到问题:

如果编辑的时候,同时编多行后再保存,那么在编辑的过程中,无法判断出输入重复值 。

如下图片:


图片点击可在新窗口打开查看此主题相关图片如下:snipaste_2022-05-22_09-56-13.jpg
图片点击可在新窗口打开查看



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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/22 20:18:00 [只看该作者]

查多一次

If e.DataCol.Name = "优先等级" Then
    Dim dr As DataRow
    
    dr = e.DataTable.SQLFind("优先等级 = '" & e.NewValue & "' And 当前设计师 = '" & e.DataRow("当前设计师")  & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("同一设计师无法设置两个相同的优先级别")
        e.Cancel = True
else
    dr = e.DataTable.Find("优先等级 = '" & e.NewValue & "' And 当前设计师 = '" & e.DataRow("当前设计师")  & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("同一设计师无法设置两个相同的优先级别")
        e.Cancel = True
    End If
    End If
End If


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


加好友 发短信
等级:童狐 帖子:255 积分:2286 威望:0 精华:0 注册:2020/6/28 8:43:00
  发帖心情 Post By:2022/5/23 8:31:00 [只看该作者]

如果我把优先等级全部清除,   所有格是空值就会出错了!!!!!!!!

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/23 9:00:00 [只看该作者]

If e.DataCol.Name = "优先等级" Then
if e.DataRow.isnull("优先等级")=false  andalso e.DataRow.isnull("当前设计师") =false
    Dim dr As DataRow
    
    dr = e.DataTable.SQLFind("优先等级 = '" & e.NewValue & "' And 当前设计师 = '" & e.DataRow("当前设计师")  & "' and _identify <> " & e.DataRow("_identify") )
    If dr IsNot Nothing Then
        MessageBox.Show("同一设计师无法设置两个相同的优先级别")
        e.Cancel = True
else
    dr = e.DataTable.Find("优先等级 = '" & e.NewValue & "' And 当前设计师 = '" & e.DataRow("当前设计师")  & "' and _identify <> " & e.DataRow("_identify") )
    If dr IsNot Nothing Then
        MessageBox.Show("同一设计师无法设置两个相同的优先级别")
        e.Cancel = True
    End If
    End If
end if
End If

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


加好友 发短信
等级:童狐 帖子:255 积分:2286 威望:0 精华:0 注册:2020/6/28 8:43:00
  发帖心情 Post By:2022/5/23 9:38:00 [只看该作者]

删除时还是会出错。不知道 为什么。
就是它原来如果有内容的话,我删除,会出示出错:


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


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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/23 9:50:00 [只看该作者]

调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错

 回到顶部