以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] Filter Contains  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=51869)

--  作者:home8225
--  发布时间:2014/6/4 17:35:00
--  [求助] Filter Contains

窗口里有个输入项为操作者的名字       
现在的代码是 Filter = Filter & "操作者 = \'" & .Value & "\'",结果是筛选条件为 :操作者=.Value
想问下怎么改使筛选出来的结果为 包含输入的操作者名字,谢谢!
Dim Filter As String
Filter = ""
With e.Form.Controls("操作者")
    If .Value IsNot Nothing Then
            If Filter >"" Then
            Filter = Filter & " And "
            End If
        Filter = Filter & "操作者 = \'" & .Value & "\'"
    End If
End With



 
图片点击可在新窗口打开查看此主题相关图片如下:qq截圖20140604173352.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2014-6-4 17:36:05编辑过]

--  作者:Bin
--  发布时间:2014/6/4 17:39:00
--  
用like http://www.foxtable.com/help/topics/1647.htm
--  作者:home8225
--  发布时间:2014/6/4 17:45:00
--  
是这样么?
我试了下发现筛选不出来东西
Dim Filter As String
Filter = ""
With e.Form.Controls("操作者")
    If .Value IsNot Nothing Then
            If Filter >"" Then
            Filter = Filter & " And "
            End If
        Filter = Filter & "操作者 like \'%.Value%\'"
    End If
End With

--  作者:Bin
--  发布时间:2014/6/4 17:49:00
--  
Filter = Filter & "操作者 like \'%" & .Value & "%\'"
--  作者:有点甜
--  发布时间:2014/6/4 17:55:00
--  
Dim Filter As String
Filter = "1=1"
With e.Form.Controls("操作者")
    If .Value <> Nothing Then
        Filter = Filter & " and 操作者 like \'*" & .Value & "*\'"
    End If
End With
[此贴子已经被作者于2014-6-4 17:55:13编辑过]

--  作者:xxk02
--  发布时间:2014/10/2 16:40:00
--  

       我也遇到类似问题,用like难以精确过滤,比如操作者1为\'张三,李四\',操作者2为\'张三一,李四\',

操作者3为\'李张三,李四\',我想过滤出\'张三\'的所有行,但用 Filter = 操作者 like \'%" & .Value & "%\'",却将\'张三一\'和\'李张三\'所在行也过滤出来,请问在这种情况下怎么写过滤条件?


--  作者:lsy
--  发布时间:2014/10/2 16:52:00
--  
以下是引用xxk02在2014-10-2 16:40:00的发言:

       我也遇到类似问题,用like难以精确过滤,比如操作者1为\'张三,李四\',操作者2为\'张三一,李四\',

操作者3为\'李张三,李四\',我想过滤出\'张三\'的所有行,但用 Filter = 操作者 like \'%" & .Value & "%\'",却将\'张三一\'和\'李张三\'所在行也过滤出来,请问在这种情况下怎么写过滤条件?

Dim Filter As String
Filter = "1=1"
With e.Form.Controls("操作者")
    If .Value <> Nothing Then
        Filter = Filter & " And 操作者 = \'" & .Value & "\'"
    End If
End With

--  作者:xxk02
--  发布时间:2014/10/2 17:05:00
--  
      我是找出操作列包含\'.Value\'的用户,如操作者列为\'张三,李四\',不仅仅有为\'张三\',还有\'李四\',
--  作者:yan2006l
--  发布时间:2014/10/3 12:16:00
--  

这个只能最原始的编码:

遍历所有行,每个行的单元格用spilt(,)弄成数组,看这个数组有没有contains你的变量,如果有记住这行的ID

最后把这些ID放到()里面,然后filter就是用in来写


--  作者:有点甜
--  发布时间:2014/10/4 9:42:00
--  
以下是引用xxk02在2014-10-2 16:40:00的发言:

       我也遇到类似问题,用like难以精确过滤,比如操作者1为\'张三,李四\',操作者2为\'张三一,李四\',

操作者3为\'李张三,李四\',我想过滤出\'张三\'的所有行,但用 Filter = 操作者 like \'%" & .Value & "%\'",却将\'张三一\'和\'李张三\'所在行也过滤出来,请问在这种情况下怎么写过滤条件?

 

Dim Filter As String
Filter = "1=1"
With e.Form.Controls("操作者")
    If .Value <> Nothing Then
        Filter = Filter & " and (操作者 = \'" & .Value & "\' or 操作者 like \'" & .Value & ",%\' or 操作者 like \'%," & .Value & ",%\' or 操作者 = "%," & .Value & "\')"
    End If
End With