1

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

在此处输入图像描述

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

IE 如果选中 In-Shop 框,则应过滤子表单中 In-Shop 为 Yes 的任何内容。如果未选中,则应清除过滤器。

回答

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
4

2 回答 2

0

答案在原帖中。我错误地标记了子表单...

于 2014-01-09T19:03:57.690 回答
0

根据您的示例数据库,代码似乎将 True 和 False 条件颠倒了。例如,下面这行的意思是“If chbxInShop is False (un-checked) then do the following”,即应用子表单过滤器。但是您真的想在选中复选框时应用过滤器......这意味着它.Value是 True (-1)。

If Me.chbxInShop.Value = 0 Then

我使用您的表单测试了复选框的更新后事件的以下代码,它可以满足您的要求。

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"
于 2014-01-09T21:01:32.620 回答