Foxtable(狐表)用户栏目专家坐堂 → 删除重复值 代码求教


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

主题:删除重复值 代码求教

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


加好友 发短信
等级:二尾狐 帖子:525 积分:5072 威望:0 精华:0 注册:2015/4/15 15:25:00
删除重复值 代码求教  发帖心情 Post By:2016/9/2 12:23:00 [只看该作者]

对于非foxtable创建的外部表, 没有"_Identify"这个字段。
需要删除某个字段重复值,只保留一行数据,代码要如何修改?


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
    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(",") & ")")


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


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/2 14:41:00 [只看该作者]


Tables("表A").RepeatFilter("第一列", 0)
Tables("表A").ApplyFilter = True
Tables("表A").Sort = "第一列"
Dim dr As Row = Tables("表A").Rows(Tables("表A").Rows.Count - 1)
Dim r As Row
For i As Integer = Tables("表A").Rows.Count - 2 To 0 Step -1
    r = Tables("表A").Rows(i)
    If dr("第一列") = r("第一列") Then
        r.Delete
    Else
        dr = r
    End If
Next
Tables("表A").ApplyFilter = False

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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/9/2 14:49:00 [只看该作者]

也可以用select :

Dim drs As List(of DataRow) = DataTables("表A").Select("","第一列")
For i As Integer = drs.count -1 To 1 Step -1
    If drs(i)("第一列") = drs(i-1)("第一列") Then
        drs(i).delete()
    End If
Next
[此贴子已经被作者于2016/9/2 14:50:15编辑过]

 回到顶部