Foxtable(狐表)用户栏目专家坐堂 → [求助]三个组合查重代码


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

主题:[求助]三个组合查重代码

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


加好友 发短信
等级:一尾狐 帖子:485 积分:4069 威望:0 精华:0 注册:2015/12/16 8:22:00
[求助]三个组合查重代码  发帖心情 Post By:2016/10/15 11:19:00 [只看该作者]

有三个列,分别为单位代码、仓库代码、物料编号,希望当这个列任何一列输入新数据的时候,将用三个组合成为一个组合对表进行查重,有重复将提示,两个组合我可以实现,三个的时候试了几次都有问题,请帮忙修正以下代码,谢谢!
Select Case e.DataCol.name
    Case "仓库代码","物料编号"
        Dim xh As String
        Dim gg As String
        If e.DataCol.Name= "仓库代码" Then
            xh = e.NewValue
            gg = e.DataRow("物料编号")
        Else
            gg = e.NewValue
            xh = e.DataRow("仓库代码")
        End If
        If xh > "" AndAlso gg  > "" Then 
            Dim dr As DataRow = e.DataRow
            If e.DataTable.Find("仓库代码 = '" & xh & "' And 物料编号 = '" & gg & "'") IsNot Nothing Then
                MessageBox.Show("已经存在相同物料!","提示")
                e.DataRow.Delete
            End If
        End If
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107648 积分:547549 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/15 11:37:00 [只看该作者]

代码改到DataColChanging事件

Select Case e.DataCol.name
    Case "仓库代码","物料编号","单位代码"
        Dim filter As String
        filter = "仓库代码" & IIF(e.DataRow.IsNull("仓库代码")," is null "," = '" & e.DataRow("仓库代码") & "'")
        filter &= "and 物料编号" & IIF(e.DataRow.IsNull("物料编号")," is null "," = '" & e.DataRow("物料编号") & "'")
        filter &= "and 单位代码" & IIF(e.DataRow.IsNull("单位代码")," is null "," = '" & e.DataRow("单位代码") & "'")
        If not filter.Contains("=") Then Return
        Dim dr As DataRow = e.DataRow
        If e.DataTable.Find(filter) IsNot Nothing Then
            MessageBox.Show("已经存在相同物料!","提示")
            e.Cancel = True
        End If
End Select

 回到顶部