以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  筛选后如何排除重复值  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=128055)

--  作者:304376480
--  发布时间: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
--  发布时间:2018/11/28 8:03:00
--  
代码没有问题
--  作者:有点甜
--  发布时间:2018/11/28 9:05:00
--  

 

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

 


--  作者:304376480
--  发布时间: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



--  作者:有点甜
--  发布时间: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
--  发布时间:2018/11/29 0:32:00
--  
可以了,没想到需要这么长的代码来实现,辛苦了,甜老师
顺便问一下,符号 “ &= ” 是什么意思

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

 

a &= "123"

 

等同于

 

a = a & "123"