根据主窗体上的复选框查询子报表

时间:2014-01-09 17:59:24

标签: forms ms-access filter access-vba subforms

我有以下主表单“编辑服务”,子表单“编辑服务子表单”:

enter image description here

我想根据主表单顶部的复选框过滤子表单,该复选框与子表单中与是/否标准相关的字段相关。

即。如果选中店内包装盒,那么它应该过滤子表格中具有店内的任何商品。如果未选中,则应清除过滤器。

ANSWER

Private Sub chbxInShop_Click()
    If Me.chbxInShop.Value Then
        Me.[Edit Services SubForm].Form.Filter = "[SrvInShop] = True"
        Me.[Edit Services SubForm].Form.FilterOn = True
        Me.[Edit Services SubForm].Form.Requery
    End If
End Sub

2 个答案:

答案 0 :(得分:0)

答案在原帖中。我错误地标记了SubForm ...

答案 1 :(得分:0)

根据您的示例数据库,似乎代码的True和False条件相反。例如,以下行表示“如果chbxInShop为False(未选中),则执行以下”,即应用子表单过滤器。但是,如果选中复选框,您确实要应用过滤器...意味着其.Value为True(-1)。

If Me.chbxInShop.Value = 0 Then

我使用您的表单为复选框的After Update事件测试了以下代码,它完成了我认为您要求的内容。

Private Sub chbxInShop_AfterUpdate()
    Dim strFilter As String

    strFilter = vbNullString ' make it explicit
    If Me.chbxInShop.Value = True Then
        strFilter = "[SrvInShop] = True"
    End If
    With Me.[Edit Services SubForm].Form
        .Filter = strFilter
        .FilterOn = Me.chbxInShop.Value
    End With
End Sub

如果您以后决定要根据表单的所有4个复选框的值来确定子表单过滤器,则需要检查每个表单并创建一个合适的Filter字符串,这可能会结束为类似......

strFilter = "[SrvInShop] = True AND [SrvSmallBusiness] = True"