Ms access 使用主窗体中未绑定的文本框筛选Microsoft Access中的子窗体

Ms access 使用主窗体中未绑定的文本框筛选Microsoft Access中的子窗体,ms-access,vba,Ms 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

我有两种表格:“工作表”(主表格)和“工作子表格”(子表格)

我正在尝试使用“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
我将“无效使用属性”作为错误


怎么了?

可能是您引用子表单的方式有问题。尝试:

Private Sub yrcheck_AfterUpdate()

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

End Sub

可能是您引用子窗体的方式。尝试:

Private Sub yrcheck_AfterUpdate()

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

End Sub

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

[Jobs sub].Form.Filter“JbYr=”&yr&“
如果我的猜测是正确的,请在
过滤器
和字符串表达式之间包含一个
=
符号

[Jobs sub].Form.Filter=“JbYr=”&yr&“
^
在这里
如果该
JbYr
字段的数据类型为数字,则在
yr
值前后消除单引号

[Jobs sub].Form.Filter=“JbYr=”&yr
我也会通过
Me
引用子表单控件,类似于@Smandoli的建议,但我不认为这是您最初错误的根源

我![Jobs sub].Form.Filter=“JbYr=”&yr

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

[Jobs sub].Form.Filter“JbYr=”&yr&“
如果我的猜测是正确的,请在
过滤器
和字符串表达式之间包含一个
=
符号

[Jobs sub].Form.Filter=“JbYr=”&yr&“
^
在这里
如果该
JbYr
字段的数据类型为数字,则在
yr
值前后消除单引号

[Jobs sub].Form.Filter=“JbYr=”&yr
我也会通过
Me
引用子表单控件,类似于@Smandoli的建议,但我不认为这是您最初错误的根源

我![Jobs sub].Form.Filter=“JbYr=”&yr

非代码解决方案是离开此过滤器,只在主字段中包含文本框并展开子字段:

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

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

非代码解决方案是离开此筛选器,只在主字段中包含文本框并展开子字段:

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

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

什么是JbYr?字符串、数字或日期?JbYr是一个“长整数”,数字类型的字段。我认为yr应该是整数,但当我尝试这样做时,错误仍然存在。JbYr是什么?字符串、数字或日期?JbYr是一个“长整数”,数字类型的字段。我认为yr应该是整数,但当我尝试这样做时,错误仍然存在。嘿,汉斯,谢谢你的回复。我尝试了所有人的解决方案,错误要么持续存在,要么根本没有发生。为了消除混淆,我将过滤器本身存储为字符串。这是我的新代码:`Private Sub yrcheck_AfterUpdate()Dim yr As Integer Dim strFilter As String strFilter=“JbYr=”&yr&“yr=Me.yrcheck Me![Jobs sub].Filter=strFilter Me![Jobs-sub].FilterOn=True-End-sub`.\u我使用了等号,删除了等号,使用了单引号,删除了单引号,错误仍然存在。我迷路了。试过了,没有我!在[Jobs sub]之前。当我运行它时,同样的错误也会发生,但是下面的一行,
Me![Jobs sub].FilterOn=True
,是标记错误的。删除了我的名字!在那一行之前,我得到了一个不同类型的错误,整个方法声明标记了一个错误。请注意,当我复制和粘贴Smandoli的代码时,它不会产生错误,也不会产生结果。什么也没发生,没有打开过滤器。我希望我可以,但是数据库是为我的办公室准备的,而且上面有机密信息,所以我没有获得以下权限:(谢谢,我觉得代码没什么问题。我希望我能解释一下,让大家明白……实际上,对我来说,最安全的做法是制作一份数据库的“模拟”副本,在那里尝试代码,看看它是否有效,如果无效,就发送给你?请稍候。嘿,汉斯,谢谢你的回复。我尝试了两种方法的组合ryone的解决方案和错误要么持续存在,要么什么都没有发生。为了消除混淆,我将过滤器本身存储为字符串。这是我的新代码:`Private Sub yrcheck_AfterUpdate()Dim yr as Integer Dim strFilter as string strFilter=“JbYr=”&yr&“yr=Me.yrcheck Me![Jobs Sub].Filter=strFilter Me![Jobs-sub].FilterOn=True-End-sub`\uuuuu\u我使用了等号,删除了等号,使用了单引号,删除了单引号,错误仍然存在。我丢失了。在[Jobs-sub]之前,没有使用Me!尝试了它。当我运行它时,会出现相同的错误,但下面的行,
Me![Jobs-sub].FilterOn=True
,是标记错误的代码。删除了该行之前的“Me!”,然后我得到了另一种错误,整个方法声明标记了一个错误。请注意,当我复制和粘贴Smandoli的代码时,它不会产生错误,也不会产生结果。没有发生任何情况,没有打开任何筛选器。我希望我可以,however数据库是为我的办公室准备的,而且上面有机密信息,所以我没有得到以下许可:(谢谢你,我觉得代码没有什么问题。我希望我能解释一下,并让大家理解……实际上,对我来说,最安全的做法是制作一个数据库的“模拟”副本,在那里尝试代码,看看它是否有效,如果无效,请