以文本方式查看主题

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

--  作者:boooxu
--  发布时间:2012/11/7 22:04:00
--  [求助]

请各位大大指导下。以下这段代码想实现筛选符合三种条件所有行

但是怎么勾选其中一个的时候正确,同时勾二个或者三个就出错,

我是菜鸟,希望高手能指导下代码的错误

 

Tables("信息表").filter = ""

Dim hg As WinForm.CheckBox = e.Form.Controls("CheckBox1")
Dim ds As WinForm.CheckBox = e.Form.Controls("CheckBox2")
Dim yqx As WinForm.CheckBox = e.Form.Controls("CheckBox3")
Dim filter1 As String
Dim filter2 As String
Dim filter3 As String

With e.Form.Controls("CheckBox1")
    If hg.checked = True Then
        Filter1 = "状态 = \'合格\'"
    End If
End With

With e.Form.Controls("CheckBox2")
    If ds.checked = True Then
        Filter2 = "状态 = \'待审\'"
    End If
End With

With e.Form.Controls("CheckBox3")
    If yqx.checked = True Then
        Filter3 = "状态 = \'己取消\'"
    End If
End With

Tables("信息表").Filter = Filter1 & Filter2 & filter3   \'这句能不能通过这样实现并列三条种条件一起?


--  作者:boooxu
--  发布时间:2012/11/7 22:08:00
--  

说明下哦,以上代码就是筛选表格的状态符合以下三种情况的总行数

 

状态:O合格  O待审 O己取消

以上O是指的复选框。指表格同一列,列的题头是“状态”


--  作者:sgs
--  发布时间:2012/11/7 22:12:00
--  
条件组合到一起是吗,照理说你这个应该是三个不同状态,应该做成单选啊,怎么会是复选呢
[此贴子已经被作者于2012-11-7 22:14:52编辑过]

--  作者:boooxu
--  发布时间:2012/11/7 22:16:00
--  

是呀,我这要组合三种条件在一起。

 

要符合条件一+符合条件二+符合条件三


--  作者:sgs
--  发布时间:2012/11/7 22:18:00
--  

按你的思路应该是这样吧

Dim Filter As String
With e.Form.Controls("CheckBox1")
    If .checked Then
        Filter = "状态 = \'合格\'"
    End If
End With
With e.Form.Controls("CheckBox2")
    If .checked Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "状态 = \'待审\'"
    End If
End With
With e.Form.Controls("CheckBox3")
    If .checked Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "状态 = \'己取消\'"
    End If
End With
Tables("信息表").Filter = Filter


--  作者:boooxu
--  发布时间:2012/11/7 22:29:00
--  

谢谢楼上的兄弟,马上调试

好像不行,和我的情况一样,单选可以。

选二个或三个就会出现空值


--  作者:szp2012
--  发布时间:2012/11/7 22:29:00
--  

试试   Tables("信息表").Filter = Filter1 and Filter2 and  filter3   \'


--  作者:boooxu
--  发布时间:2012/11/7 22:30:00
--  

有朋友告诉我了,发上来分享下,

 

 

Tables("信息表").filter = ""

 

Dim hg As WinForm.CheckBox = e.Form.Controls("CheckBox1")

Dim ds As WinForm.CheckBox = e.Form.Controls("CheckBox2")

Dim yqx As WinForm.CheckBox = e.Form.Controls("CheckBox3")

Dim Filter As String

 

With e.Form.Controls("CheckBox1")

    If hg.checked = True Then

        If Filter > "" Then

            Filter = Filter & " or 状态 = \'合格\'"

        Else

            Filter = "  状态 = \'合格\'"

        End If

    End If

End With

 

With e.Form.Controls("CheckBox2")

    If ds.checked = True Then

        If Filter > "" Then

            Filter = Filter & " or 状态 = \'待审\'"

        Else

            Filter = " 状态 = \'待审\'"

        End If

    End If

End With

 

With e.Form.Controls("CheckBox3")

    If yqx.checked = True Then

        If Filter > "" Then

            Filter = Filter & " or 状态 = \'己取消\'"

        Else

            Filter = " 状态 = \'己取消\'"

        End If

    End If

End With

 

Tables("信息表").Filter = Filter