使用主窗体中的未绑定文本框过滤Microsoft Access中的子窗体

时间:2016-02-11 19:09:08

标签: vba ms-access access-vba

我有两种形式:" 工作表" (主要形式)和" 工作分" (子表格)。

我试图使用' afterupdate '使用名为 yrcheck 的未绑定文本框功能,通过 JbYr 字段过滤子表单的数据表视图。

请告诉我,这段代码有什么问题?

Private Sub yrcheck_AfterUpdate()

Dim yr As Integer
yr = Me.yrcheck
[Jobs sub].Form.Filter "JbYr='" & yr & "'"
[Jobs sub].Form.FilterOn = True

End Sub

我得到"无效使用财产"作为一个错误。

出了什么问题?

3 个答案:

答案 0 :(得分:2)

告诉我们哪一行触发错误会很有帮助。既然你没有,我猜这一行是罪魁祸首......

[Jobs sub].Form.Filter "JbYr='" & yr & "'"

如果我的猜测是正确的,请在=和字符串表达式之间加一个Filter符号......

[Jobs sub].Form.Filter = "JbYr='" & yr & "'"
                       ^
                      here

如果该JbYr字段的数据类型为数字,请删除yr的值之前和之后的单引号...

[Jobs sub].Form.Filter = "JbYr=" & yr

我也会通过Me引用子窗体控件,类似于@Smandoli的建议,但我认为这不是原始错误的来源......

Me![Jobs sub].Form.Filter = "JbYr=" & yr

答案 1 :(得分:1)

也许这就是你引用子表单的方式。尝试:

Private Sub yrcheck_AfterUpdate()

    Dim yr As Integer
    yr = Me.yrcheck
    Me![Jobs sub].Filter "JbYr='" & yr & "'"
    Me![Jobs sub].FilterOn = True

End Sub

答案 2 :(得分:0)

非代码解决方案是保留此过滤器,只需在masterfields中包含文本框并展开子域:

[Id],[yrcheck]
[ParentID],[JbYr]

这也将删除用户删除此过滤器的选项。