以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于5列组合校对重复的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92809) |
-- 作者:benwong2013 -- 发布时间:2016/11/14 8:47:00 -- 关于5列组合校对重复的问题 比如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 |
-- 作者:有点色 -- 发布时间:2016/11/14 8:52:00 -- dr = e.DataTable.Find("物料名称 + \'|\' + 规格 + \'|\' + 等级 + \'|\' + 单位 + \'|\' + 品牌 = \'" & str & "\'")
改成
dr = e.DataTable.Find("isnull(物料名称,\'\') + \'|\' + isnull(规格,\'\') + \'|\' + isnull(等级,\'\') + \'|\' + isnull(单位,\'\') + \'|\' + isnull(品牌,\'\') = \'" & str & "\'") |