以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  筛选显示重复的数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103858)

--  作者:蓝蚂蚁
--  发布时间:2017/7/18 17:38:00
--  筛选显示重复的数据
窗口中的表Table1是A表的副本,现要查找表中【产品编号】列和【批号】列内容都相同的行,并且同产品编号的商品在一起显示。
例如:
产品编号     批号        (表中还有多列,在此省略)
C0001       PH111
C0001       PH111
C0001       PH111
C0008       PH222
C0008       PH222
...............
先谢了!
(另,数据有上千条以上之多。)

[此贴子已经被作者于2017/7/18 17:38:53编辑过]

--  作者:有点甜
--  发布时间:2017/7/18 17:45:00
--  

参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=76545&replyID=529794&skin=1

 


--  作者:蓝蚂蚁
--  发布时间:2017/7/18 18:28:00
--  
看不懂  按代码修改后 也不行,还是麻烦老师帮帮忙,辛苦帮我写下代码。不胜感激!
--  作者:蓝蚂蚁
--  发布时间:2017/7/18 20:00:00
--  
相当于:一、Tables("窗口1_Table1").RepeatFilter("产品编号", 0)  and Tables("窗口1_Table1").RepeatFilter("批号", 0)
           二、对上面筛选出来的结果再把同“产品编号”的商品挨在一起排列。

--  作者:有点蓝
--  发布时间:2017/7/18 20:24:00
--  
改列名和表名就可以

Dim cs As String = "产品编号,批号"
For Each dr As DataRow In DataTables("窗口1_Table1").Select("", cs)

--  作者:蓝蚂蚁
--  发布时间:2017/7/18 20:40:00
--  
这是完整的代码,点击按钮无反应。
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 Tables("计划来货登记表查询主窗口_Table1").DataTable.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
    End If
    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    
    pdr = dr
Next
If count > 1 Then
    idx &= idx_temp
End If
Tables("计划来货登记表查询主窗口_Table1").Filter = "_Identify not in (" & idx.trim(",") & ")"

--  作者:有点蓝
--  发布时间:2017/7/18 20:48:00
--  
代码测试没有问题,上传实例说明



--  作者:蓝蚂蚁
--  发布时间:2017/7/18 21:24:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:显示重复并排序.zip


--  作者:有点蓝
--  发布时间:2017/7/18 22:14:00
--  
With e.Form.Controls("Table1").Table
    .Sort = "产品编号,批号"
    Dim count As Integer = 1
    For i As Integer = .Rows.count - 1 To 1 Step -1
        If .Rows(i)("产品编号") = .Rows(i-1)("产品编号") AndAlso .Rows(i)("批号") = .Rows(i-1)("批号")
            count = 0
            Continue For
        Else
            count += 1
            If count > 1 Then
                .Rows(i).Remove
            End If
        End If
    Next
    If Not (.Rows(0)("产品编号") = .Rows(1)("产品编号") AndAlso .Rows(0)("批号") = .Rows(1)("批号")) Then
        .Rows(0).Remove
    End If
End With

--  作者:蓝蚂蚁
--  发布时间:2017/7/18 22:16:00
--  
大神,收下我的膝盖吧 ,谢谢