以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于Filter  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63003)

--  作者:machle
--  发布时间:2015/1/12 8:50:00
--  关于Filter
 自己构建treeview 的筛选树,点击一层节点,可以在表中显示相应的筛选数据。
用 and 和 or 连接一些条件表达式,但是发现当连接的表达式在3-4个的时候,可以正确筛选,按照同样的格式,表达式多了,就不工作了。

--  作者:Bin
--  发布时间:2015/1/12 8:51:00
--  
你条件迷糊了吧.   筛选不出数据 还是筛选数据混乱?  你弹出你设置的FIlter 看看 再对比一下数据就知道了
--  作者:machle
--  发布时间:2015/1/12 8:56:00
--  回复:(Bin)你条件迷糊了吧.   筛选不出数据 还...
Dim Filter As String
Dim txt As String = e.Form.Controls("TextBox1").Text
Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的行
If e.Node.Text <> "显示所有行" Then
    Select Case e.Node.Level
        Case 0
            Filter = "[类别] = \'" & dr("类别") & "\'"
        Case 1
            Filter = "[类别] = \'" & dr("类别") & "\' And [项别] = \'" & dr("项别") & "\'"
    End Select
End If

txt = "\'%" & txt & "%\'"

Dim Filter2 As String

Filter2 = "危险 Like " & txt & " or 预防 Like " & txt & " or 应急 Like " & txt

Tables("BasicLabel").Filter = Filter2 & "And" & Filter

Filter2 再增加相应格式的条件表达式,就不筛选了。

--  作者:Bin
--  发布时间:2015/1/12 9:00:00
--  
呵呵,你筛选条件迷糊了.  你自己搞乱了.

你是不是想要这个结果?  这个意思?

Filter2 = "(危险 Like " & txt & " or 预防 Like " & txt & " or 应急 Like " & txt & ")"

Tables("BasicLabel").Filter = Filter2 & " And " & Filter

--  作者:machle
--  发布时间:2015/1/12 9:23:00
--  回复:(Bin)呵呵,你筛选条件迷糊了.  你自己搞...
 谢谢您!调试了一下,可以用了
我看到比我多了几个括号,还有&
这是为什么呢?


--  作者:Bin
--  发布时间:2015/1/12 9:27:00
--  
没有多什么&  就是多了一个括号

你弹出条件观察一下就能理解了. 要解释还真不好解释.      "列1=1 and 列2=2 or 列3=4"    和 "列1=1 and (列2=2 or 列3=4)"   肯定是不一样的

括号里的判断会识别为一个整体

--  作者:machle
--  发布时间:2015/1/12 9:32:00
--  回复:(Bin)没有多什么&  就是多了一个括号...
 那我有些理解了,或和与的问题,需要给它隔开,例子里貌似没有,或者都是或,或者都是与,呵呵,谢谢!