Foxtable(狐表)用户栏目专家坐堂 → 筛选后如何排除重复值


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

主题:筛选后如何排除重复值

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


加好友 发短信
等级:小狐 帖子:339 积分:3760 威望:0 精华:0 注册:2017/9/7 15:20:00
筛选后如何排除重复值  发帖心情 Post By:2018/11/28 0:18:00 [只看该作者]

老师您好,
我是想筛选后排除重复值,或者是先排除重复值再筛选,但下面的代码红色部份似乎没有效果,怎么办
dim tbl as table = Tables("选择商品_table1")
If txt = "" Then
        tbl.Filter = " "
       Else
        txt = "'%" & txt & "%'"
   tbl.Filter = "商品ID Like " & txt & " Or 商品名称 Like " & txt & " Or 拼音码 Like " & txt & ""
Tables("选择商品_table1").RepeatFilter("商品名称", 1)
End If
[此贴子已经被作者于2018/11/28 0:19:19编辑过]

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


加好友 发短信
等级:狐神 帖子:4636 积分:33830 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2018/11/28 8:03:00 [只看该作者]

代码没有问题

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


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

 

代码没问题,请具体说明什么问题,或者上传具体实例测试。

 


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


加好友 发短信
等级:小狐 帖子:339 积分:3760 威望:0 精华:0 注册:2017/9/7 15:20:00
  发帖心情 Post By:2018/11/28 22:46:00 [只看该作者]

经过我反复测试,我终于可以详细的描述这个问题了....!
下面蓝色部份代码,如果只有两项筛选的话,代码没有问题,有三项筛选的话‘排除复’就没有效果,有趣的是当你在文本框里输入商品ID和商口名称筛选的时候没有效果,而输入拼音码筛选则有效果

dim tbl as table = Tables("选择商品_table1")
If txt = "" Then
        tbl.Filter = " "
       Else
        txt = "'%" & txt & "%'"
   tbl.Filter = "商品ID Like " & txt & " Or 商品名称 Like " & txt & " Or 拼音码 Like " & txt & ""
Tables("选择商品_table1").RepeatFilter("商品名称", 1)
End If


 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:筛选与排除重复.foxdb



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


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

Dim txt As String = e.Form.Controls("TextBox1").Text
Dim tbl As Table = Tables("窗口1_Table1")
If txt = "" Then
    tbl.Filter = " "
Else
    txt = "'%" & txt & "%'"
    tbl.Filter = "商品ID Like " & txt & " Or 商品名称 Like " & txt & " Or 拼音码 Like " & txt & ""
   
    Dim idx As String = "-1,"
    Dim idx_temp As String = ""
    Dim pdr As DataRow = Nothing
    Dim count As Integer = 0
    Dim cs As String = "商品id"
    For Each dr As DataRow In tbl.DataTable.Select(tbl.filter, "商品id")
       
        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 OrElse pdr Is Nothing 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
    tbl.filter = "(" & tbl.Filter & ") And _Identify not In (" & idx.trim(",") & ")"  '显示唯一值
   
End If

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


加好友 发短信
等级:小狐 帖子:339 积分:3760 威望:0 精华:0 注册:2017/9/7 15:20:00
  发帖心情 Post By:2018/11/29 0:32:00 [只看该作者]

可以了,没想到需要这么长的代码来实现,辛苦了,甜老师
顺便问一下,符号 “ &= ” 是什么意思

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


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

以下是引用304376480在2018/11/29 0:32:00的发言:
可以了,没想到需要这么长的代码来实现,辛苦了,甜老师
顺便问一下,符号 “ &= ” 是什么意思

 

a &= "123"

 

等同于

 

a = a & "123"


 回到顶部