以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  控制多列不重复录入  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=169593)

--  作者:实话实说
--  发布时间:2021/6/22 12:28:00
--  控制多列不重复录入
批量录入时,如果有重复(3列)时停止录入,以下代码不起作用。

DataColChanging表事件

Select Case e.DataCol.name
    Case "发货单号","产品代码","颜色"
        Dim fh As String
        Dim cp As String
        Dim ys As String
        If e.DataCol.Name = "发货单号" Then
            fh = e.NewValue
            cp = e.DataRow("产品代码")
            ys = e.DataRow("颜色")
        ElseIf e.DataCol.Name = "产品代码" Then
            cp = e.NewValue
            fh = e.DataRow("发货单号")
            ys = e.DataRow("颜色")
        ElseIf e.DataCol.Name = "颜色" Then
            ys = e.NewValue
            fh = e.DataRow("发货单号")
            cp = e.DataRow("产品代码")
        End If
        If fh > "" AndAlso cp  > "" AndAlso ys > "" Then 
            Dim dr As DataRow = e.DataRow
            If e.DataTable.Find("发货单号 = \'" & fh & "\' And 产品代码 = \'" & cp & "\'And 颜色 = \'" & ys & "\'") IsNot Nothing Then
                \'Tables("销售发货.销售发货明细").Current.Delete
                MessageBox.Show("不要重复录入!","提示")
                Return
                \'e.Cancel = True
            End If
        End If
End Select

--  作者:cd_tdh
--  发布时间:2021/6/22 13:11:00
--  

是这个意思?

            Dim dr As DataRow = e.DataRow
            If e.DataTable.Find("第一列 = \'" & fh & "\' And 第二列 = \'" & cp & "\'And 第三列 = \'" & ys & "\'") IsNot Nothing Then
                MessageBox.Show("不要重复录入!","提示")
                e.Cancel = True
                Return
            End If

[此贴子已经被作者于2021/6/22 13:10:55编辑过]

--  作者:实话实说
--  发布时间:2021/6/22 14:19:00
--  
谢谢,是这个意思。但用表事件不能解决。问题转到 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=163808