Foxtable(狐表)用户栏目专家坐堂 → 关于5列组合校对重复的问题


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

主题:关于5列组合校对重复的问题

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


加好友 发短信
等级:一尾狐 帖子:486 积分:4086 威望:0 精华:0 注册:2015/12/16 8:22:00
关于5列组合校对重复的问题  发帖心情 Post By:2016/11/14 8:47:00 [只看该作者]

比如A、B、C、D、E一共5列一起组合对新输入的内容进行重复性的判定,其中A和E为非空的,但BCD列有可能是为空的,之前写的代码只是针对5列为非空才能起到作用,请问有没有其它办法简单的;
Select Case e.DataCol.name
    Case "物料类别","物料名称","规格", "等级","单位","品牌"
        Dim dr As DataRow = e.DataRow
        Dim str As String = ""
        If e.DataCol.name = "物料名称" Then
            str = e.newvalue & "|" & dr("规格") & "|" & dr("等级") & "|" & dr("单位") & "|" & dr("品牌")
        ElseIf e.DataCol.name = "规格" Then
            str = dr("物料名称") & "|" & e.newvalue & "|" & dr("等级") & "|" & dr("单位")& "|" & dr("品牌")
        ElseIf e.DataCol.name = "等级" Then
            str = dr("物料名称") & "|" & dr("规格") & "|" & e.newvalue & "|" & dr("单位")& "|" & dr("品牌")
        ElseIf e.DataCol.name = "单位" Then
            str = dr("物料名称") & "|" & dr("规格") & "|"  & dr("等级") & "|" & e.newvalue & "|" & dr("品牌")
        ElseIf e.DataCol.name = "品牌" Then
            str = dr("物料名称") & "|" & dr("规格") & "|"  & dr("等级") & "|" & dr("单位") & "|"& e.newvalue
        End If
        dr = e.DataTable.Find("物料名称 + '|' + 规格 + '|' + 等级 + '|' + 单位 + '|' + 品牌 = '" & str & "'")
        If dr IsNot Nothing Then
            MessageBox.Show("此物料已经存在!")
            e.Cancel = True
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/11/14 8:52:00 [只看该作者]

dr = e.DataTable.Find("物料名称 + '|' + 规格 + '|' + 等级 + '|' + 单位 + '|' + 品牌 = '" & str & "'")

 

改成

 

dr = e.DataTable.Find("isnull(物料名称,'') + '|' + isnull(规格,'') + '|' + isnull(等级,'') + '|' + isnull(单位,'') + '|' + isnull(品牌,'') = '" & str & "'")


 回到顶部