以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  任意列数重复值判断通用代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=41534)

--  作者:sloyy
--  发布时间:2013/10/22 1:15:00
--  任意列数重复值判断通用代码

经过几天的学习揣摩lsy兄的源代码,我做了一个任意列数重复值判断的通用代码给有需要的同学,假设我们用:上级部门 单位名称 姓名 3列来做判断

Dim str0 As New List (Of String)
        Dim str1 As New List (Of String)
        Dim id0,id1,flt,celltext As String
        For Each r As Row In CurrentTable.Rows
            celltext=r("上级部门")&r("单位名称")&r("姓名")
            If str0.Contains(celltext) =False Then
                id0 + = r("_Identify") & ","
            Else
                str1.Add(celltext)
               
            End If
            str0.Add(celltext)
        Next
       
        For Each r As Row In CurrentTable.Rows
            celltext=r("上级部门")&r("单位名称")&r("姓名")
            If str1.Contains(celltext) Then
                id1 + = r("_Identify") & ","
               
            End If
        Next
       
        If id1 > "" Then
            id1 = id1.Trim(",")
        End If
       
        If id1 > "" Then
            flt = "_Identify In (" & id1 & ")"
        End If
       
        CurrentTable.Filter = flt
        CurrentTable.Sort="上级部门,单位名称,姓名"


大家只要修改红色的部分,就能用来判断任意多列的重复值


--  作者:ZHX241806
--  发布时间:2013/10/22 6:19:00
--  

不错,顶一下!


--  作者:lsy
--  发布时间:2013/10/22 7:33:00
--  

既善于钻研,又乐于分享。

顶!


--  作者:twlg
--  发布时间:2013/10/22 15:34:00
--  

留个标记


--  作者:有点甜
--  发布时间:2013/10/22 20:21:00
--  
 mark,建议写入帮助,筛选/删除重复确实有些麻烦。
--  作者:don
--  发布时间:2015/7/2 1:13:00
--  
這樣或通用些:

Dim Lms As String  = "上级部门,单位名称,姓名"
Dim Lmst() As String  = Lms.Split(",")

Dim str0 As New List (Of String)
Dim str1 As New List (Of String)
Dim id0,id1,flt,celltext As String

\'+++++++++++++++++++++++++++++++++
For Each r As Row In CurrentTable.Rows
    celltext=Nothing
    For i As Integer = 0 To Lmst.Length-1
        celltext+=r(Lmst(i))
    Next
    
    If str0.Contains(celltext) =False Then
        id0 + = r("_Identify") & ","
    Else
        str1.Add(celltext)
    End If
    str0.Add(celltext)
Next

\'++++++++++++++++++++++++++++++++
For Each r As Row In CurrentTable.Rows
    celltext=Nothing
    For i As Integer = 0 To Lmst.Length-1
        celltext+=r(Lmst(i))
    Next
    
    If str1.Contains(celltext) Then
        id1 + = r("_Identify") & ","
    End If
Next

\'+++++++++++++++++++++++++++++++++
If id1 > "" Then
    id1 = id1.Trim(",")
    flt = "_Identify In (" & id1 & ")"
End If

CurrentTable.Filter = flt
CurrentTable.Sort= Lms
[此贴子已经被作者于2015/7/2 1:13:42编辑过]

--  作者:monvzhilei
--  发布时间:2015/7/2 5:57:00
--  
好神啊! 建议收入帮助。 造福千万百姓啊
--  作者:wusim
--  发布时间:2015/11/1 14:58:00
--  
如果是任一个列的值重复怎样改代码?不是同时几个列的值重复。
--  作者:wusim
--  发布时间:2015/11/1 21:01:00
--  
请帮忙
--  作者:Hyphen
--  发布时间:2015/11/2 9:26:00
--  

仔细看帖,

 

“大家只要修改红色的部分,就能用来判断任意多列的重复值”