Foxtable(狐表)用户栏目专家坐堂 → 筛选显示重复的数据


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

主题:筛选显示重复的数据

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


加好友 发短信
等级:三尾狐 帖子:672 积分:7921 威望:0 精华:0 注册:2016/6/11 11:10:00
筛选显示重复的数据  发帖心情 Post By:2017/7/18 17:38:00 [只看该作者]

窗口中的表Table1是A表的副本,现要查找表中【产品编号】列和【批号】列内容都相同的行,并且同产品编号的商品在一起显示。
例如:
产品编号     批号        (表中还有多列,在此省略)
C0001       PH111
C0001       PH111
C0001       PH111
C0008       PH222
C0008       PH222
...............
先谢了!
(另,数据有上千条以上之多。)

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

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


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


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


加好友 发短信
等级:三尾狐 帖子:672 积分:7921 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2017/7/18 18:28:00 [只看该作者]

看不懂  按代码修改后 也不行,还是麻烦老师帮帮忙,辛苦帮我写下代码。不胜感激!

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


加好友 发短信
等级:三尾狐 帖子:672 积分:7921 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2017/7/18 20:00:00 [只看该作者]

相当于:一、Tables("窗口1_Table1").RepeatFilter("产品编号", 0)  and Tables("窗口1_Table1").RepeatFilter("批号", 0)
           二、对上面筛选出来的结果再把同“产品编号”的商品挨在一起排列。

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


加好友 发短信
等级:超级版主 帖子:111471 积分:567443 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/18 20:24:00 [只看该作者]

改列名和表名就可以

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

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


加好友 发短信
等级:三尾狐 帖子:672 积分:7921 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By: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(",") & ")"

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


加好友 发短信
等级:超级版主 帖子:111471 积分:567443 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/18 20:48:00 [只看该作者]

代码测试没有问题,上传实例说明



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


加好友 发短信
等级:三尾狐 帖子:672 积分:7921 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2017/7/18 21:24:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:显示重复并排序.zip


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


加好友 发短信
等级:超级版主 帖子:111471 积分:567443 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

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


加好友 发短信
等级:三尾狐 帖子:672 积分:7921 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2017/7/18 22:16:00 [只看该作者]

大神,收下我的膝盖吧 ,谢谢

 回到顶部
总数 13 1 2 下一页