Foxtable(狐表)用户栏目专家坐堂 → 表内数据重复


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

主题:表内数据重复

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


加好友 发短信
等级:婴狐 帖子:47 积分:383 威望:0 精华:0 注册:2017/8/5 12:49:00
表内数据重复  发帖心情 Post By:2017/8/7 15:27:00 [只看该作者]

表内数据重复怎么处理。
如:字段1:单号相同的数据有两条,想删除一条,留一条。
代码要怎么写?

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


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

方法一:

 

http://www.foxtable.com/webhelp/scr/1478.htm

 

方法二:

 

Dim idx As String = "-1,"
Dim idx_temp As String = ""
Dim pdr As DataRow = Nothing
Dim count As Integer = 0
Dim cs As String = "第一列,第二列"
For Each dr As DataRow In DataTables("表A").Select("", cs)
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c) <> dr(c) Then
                flag = True
                Exit For
            End If
        Next
        If flag Then
            If count > 1 Then
                idx &= idx_temp
            End If
            count = 1
            idx_temp = ""
        Else
            count += 1
            idx_temp &= dr("_Identify") & ","
        End If
    Else
        count += 1
    End If
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

 

Tables("表A").Filter = "_Identify not In (" & idx.trim(",") & ")"

'DataTables("表A").DeleteFor("_Identify In (" & idx.trim(",") & ")")

[此贴子已经被作者于2017/8/8 15:33:05编辑过]

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


加好友 发短信
等级:婴狐 帖子:47 积分:383 威望:0 精华:0 注册:2017/8/5 12:49:00
  发帖心情 Post By:2017/8/8 8:33:00 [只看该作者]

以下是引用有点甜在2017/8/7 15:33:00的发言:

方法一:

 

http://www.foxtable.com/webhelp/scr/1478.htm

 

方法二:

 

Dim idx As String = "-1,"
Dim idx_temp As String = ""
Dim pdr As DataRow = Nothing
Dim count As Integer = 0
Dim cs As String = "第一列,第二列"
For Each dr As DataRow In DataTables("表A").Select("", cs)
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c) <> dr(c) Then
                flag = True
                Exit For
            End If
        Next
        If flag Then
            If count > 1 Then
                idx &= idx_temp
            End If
            count = 1
            idx_temp = ""
        Else
            count += 1
            idx_temp &= dr("_Identify") & ","
        End If
    Else
        count += 1
    End If
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

 

Tables("表A").Filter = "_Identify not In (" & idx.trim(",") & ")"

'DataTables("表A").DeleteFor("_Identify not In (" & idx.trim(",") & ")")



倒数第二行的语句,只是把重复的数据筛选成只显示一条,并没有做到删除的作用。

我把倒数第二行注释了,把倒数第一行调用出来,虽然可以删除了,但是一次只能删除一条。

而且重复数据删除只剩一条时,在点一下删除按钮,会把最后一条也删除了,有没有比较好的解决方法?


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


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

DataTables("表A").DeleteFor("_Identify not In (" & idx.trim(",") & ")")

 

改成

 

DataTables("表A").DeleteFor("_Identify In (" & idx.trim(",") & ")")

[此贴子已经被作者于2017/8/8 8:37:58编辑过]

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


加好友 发短信
等级:婴狐 帖子:47 积分:383 威望:0 精华:0 注册:2017/8/5 12:49:00
  发帖心情 Post By:2017/8/8 9:22:00 [只看该作者]

删除第一列重复数据,但是不想删除第一列值为空的数据(值看着是空的,但是里面好像是一个空格),有没有什么办法?

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


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

以下是引用1186在2017/8/8 9:22:00的发言:
删除第一列重复数据,但是不想删除第一列值为空的数据(值看着是空的,但是里面好像是一个空格),有没有什么办法?

 

这个意思?

 

For Each dr As DataRow In DataTables("表A").Select("第一列 is not null", cs)


 回到顶部