以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助,如何获取表中有重复值集合?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=9159)

--  作者:baoxyang
--  发布时间:2011/3/3 10:48:00
--  求助,如何获取表中有重复值集合?
有一张表A,如何获到列1及列2的值都相同的集合,此集合只取包含列1及列2值相同一条记录?谢谢!!
--  作者:狐狸爸爸
--  发布时间:2011/3/3 10:51:00
--  

DataTables("sss").Select("第一列 = 地二列")


--  作者:baoxyang
--  发布时间:2011/3/3 11:42:00
--  

sorry,可能没有表述清楚吧,误解了。

例如:

   列1    列2    列2

   a       1         33

   b       2         44

   c       2          55

   c       2           66

   d       3           77

   d       3          88

   d       4          99

想得到结果是c,2及d,3


--  作者:狐狸爸爸
--  发布时间:2011/3/3 12:00:00
--  
Dim Lst1  As List(of String)= DataTables("表A").GetUniqueValues("第一列")
Dim Lst2  As List(of String)= DataTables("表A").GetUniqueValues("第二列")
For Each v As String In Lst2
    If Lst1.Contains(v) = False Then
        lst1.Add(v)
    Next
Next

--  作者:mr725
--  发布时间:2011/3/3 14:26:00
--  
以下是引用狐狸爸爸在2011-3-3 12:00:00的发言:
Dim Lst1  As List(of String)= DataTables("表A").GetUniqueValues("第一列")
Dim Lst2  As List(of String)= DataTables("表A").GetUniqueValues("第二列")
For Each v As String In Lst2
    If Lst1.Contains(v) = False Then
        lst1.Add(v)
    Next
Next

这个不对呀,不是第一列=第二列的行,而是:第一列重复 且 第二列重复的行


--  作者:狐狸爸爸
--  发布时间:2011/3/3 14:34:00
--  

呵呵,是的,楼主要的是重复的,我给的是不重复的。

 

图片点击可在新窗口打开查看


--  作者:mr725
--  发布时间:2011/3/3 14:47:00
--  

我的复杂些, 看看楼主是不是要这个结果:

\'\'\'
Tables("表").Select(0,Tables("表").cols("列1").Index)
Syscmd.Filter.ShowSameValues()
Dim urp  As List(of String)= DataTables("表").GetUniqueValues("","列2")

Dim rp,rp1 As String
rp1 = ","

For i As Integer = 0 To Tables("表").count -1
    Dim r As Row = Tables("表").Rows(i)
    Dim drs As List(Of DataRow)
    drs = DataTables("表").Select("[列2] = \'" & _
    Tables("表").Rows(i)("列2") & "\' and [列1] = \'" & Tables("表").Rows(i)("列1") & "\'")
    If drs.count >= 2 And rp1.contains("" & Tables("表").Rows(i)("列2") & "") = False
        rp1 = rp1 & "," & Tables("表").Rows(i)("列2")

        output.show(Tables("表").Rows(i)("列1") & "  "  & Tables("表").Rows(i)("列2"))
    End If
Next

 

还没有完全对····

[此贴子已经被作者于2011-3-3 15:33:26编辑过]

--  作者:mr725
--  发布时间:2011/3/3 16:35:00
--  

这样ok啦:

 

\'\'\'
Tables("表").Select(0,Tables("表").cols("列1").Index)
Syscmd.Filter.ShowSameValues()
Dim rp1 As String
rp1 = ","
For i As Integer = 0 To Tables("表").count -1
    Dim r As Row = Tables("表").Rows(i)
    Dim drs As List(Of DataRow)
    drs = DataTables("表").Select("[列2] = \'" & _
    Tables("表").Rows(i)("列2") & "\' and [列1] = \'" & Tables("表").Rows(i)("列1") & "\'")
    For Each dr As DataRow In drs
        If  rp1.contains("," & CurrentTable.Rows(i)("列1")) = False
            rp1 = rp1 & "," & CurrentTable.Rows(i)("列1")
            output.show(CurrentTable.Rows(i)("列1") & "  "  & CurrentTable.Rows(i)("列2"))
        End If
        Exit For
    Next
Next


--  作者:狐狸爸爸
--  发布时间:2011/3/3 16:55:00
--  

呵呵,我也来一个:

 

Dim dt As DataTable = DataTables("表A")
Dim Lst1  As List(of String) = dt.GetUniqueValues("","第一列")
Dim Lst2  As List(of String) = dt.GetUniqueValues("","第二列")
Dim lst3 AS New List(of String) \'用于保存重复值
For Each v As String In Lst1
    If dt.Compute("Count([_Identify])", "第一列 = \'" & v & "\'") > 1 Then
        lst3.Add(v)
    End If
Next
For Each v As String In Lst2
    If dt.Compute("Count([_Identify])","第二列 = \'" & v & "\'") > 1 And lst3.Contains(v) = False Then
        lst3.Add(v)
    End If
Next


--  作者:baoxyang
--  发布时间:2011/3/4 8:54:00
--  
谢谢各位的热心帮助,我试试。