Foxtable(狐表)用户栏目专家坐堂 → 关于数据重复的问题


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

主题:关于数据重复的问题

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


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
关于数据重复的问题  发帖心情 Post By:2017/7/24 20:12:00 [只看该作者]

有一个表A  表A有5列,分别为:A、B、C、D、E列。要求:当E列当前行数据为空时,A、B、C、D列的当前数据不能与表中已经保存的数据重复
列名 A B C D E
表A里已经存有的数据 44 55 66 98 FALSE
当前数据 44 55 66 98 FALSE
当出现上述重复录入时,要求给出提示,数据重复即将删除。随后删除当前数据。
反之:当E列当前行数据为不空时,A、B、C、D列的当前数据可以与表中原有的数据重复并保存
列名 A B C D E
表A里已经存有的数据 44 55 66 98 TRUE
当前数据 44 55 66 98 FALSE


谢谢老师,耐心指导

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


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

DataColChanging事件

Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列"
        If e.DataRow.IsNull("第五列")  Then
            Dim arr() As String = {"第一列","第二列","第三列","第四列"}
            Dim filter As String = "1=1 "
            For Each cl As String In arr
                If cl = e.DataCol.Name Then
                    filter &= " and " & cl & " = '" & e.NewValue & "'"
                Else
                    filter &= " and " & cl & " = '" & e.DataRow(cl) & "'"
                End If
            Next
            If e.DataTable.Find(filter) IsNot Nothing Then 
                msgbox("重复")
                e.DataRow.Delete
            End If
        End If
End Select

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


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
  发帖心情 Post By:2017/7/24 21:43:00 [只看该作者]

给老师点赞,真佩服您

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


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
  发帖心情 Post By:2017/7/26 21:22:00 [只看该作者]

老师我测过了,当第5列不为空时不能保存。

      我的意思是这样的,我要在表中录入一行数据,有A、B、C、D、E、F六列,其中F列为逻辑列默认为假,当数据录入完毕后,要把当前数据的A、B、D、E列数据与表中的其他行数据比对,如果有相同的数据行,则判断第F列数据,如果仅有当前的F列均为假时,则允许保存当前录入数据,如有那怕有一个原有数据的F列为假时,则不允许保存当前行数据。且要删除当前行数据。

老师我是新手,有些程序看不太懂,最好给点注释。谢谢老师。

      

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/26 22:19:00 [只看该作者]

beforesavedatarow事件

 

If e.DataRow("第五列") = False Then
    Dim arr() As String = {"第一列","第二列","第三列","第四列"}
    Dim s1 As String = ""
    Dim s2 As String = ""
    For Each cl As String In arr
        s1 = s1 & cl & "+'|'+"
        s2 = s2 & e.DataRow(cl) & "|"
    Next
    Dim filter As String  = s1.trim("+") & " = '" & s2 & "' and 第五列 = false"
    If e.DataTable.compute("count(_Identify)", filter) > 1 Then
        msgbox("重复")
        'e.DataRow.Delete
        e.cancel = True
    End If
End If


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


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
  发帖心情 Post By:2017/7/26 23:01:00 [只看该作者]

老师经测试不成立,您在给看看吧。

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


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
  发帖心情 Post By:2017/7/26 23:05:00 [只看该作者]

甜老师给的程序测试完毕后只是在用菜单保存的时候,显示“重复字样”然后也不能删除当前行。我要的是录入的过程中,只要光标离开第四行,就进行判断

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/26 23:22:00 [只看该作者]

DataColChanged

 

Select Case e.DataCol.Name
    Case "第一列","第二列","第三列","第四列","第五列"
        If e.DataRow("第五列") = False Then
            Dim arr() As String = {"第一列","第二列","第三列","第四列"}
            Dim s1 As String = ""
            Dim s2 As String = ""
            For Each cl As String In arr
                If e.DataRow.IsNull(cl) = True Then
                    s1 = ""
                    Exit For
                End If
                s1 = s1 & cl & "+'|'+"
                s2 = s2 & e.DataRow(cl) & "|"
            Next
            If s1 > "" Then
                Dim filter As String  = s1.trim("+") & " = '" & s2 & "' and 第五列 = false"
                If e.DataTable.compute("count(_Identify)", filter) > 1 Then
                    msgbox("重复")
                    'e.DataRow.Delete
                    e.cancel = True
                End If
            End If
        End If
End Select


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


加好友 发短信
等级:幼狐 帖子:98 积分:840 威望:0 精华:0 注册:2017/5/27 20:17:00
  发帖心情 Post By:2017/7/29 10:44:00 [只看该作者]

测试成功,感谢老师

 回到顶部