使用主窗体中的未绑定文本框过滤 Microsoft Access 中的子窗体
Posted
技术标签:
【中文标题】使用主窗体中的未绑定文本框过滤 Microsoft Access 中的子窗体【英文标题】:Filtering a subform in Microsoft Access using an unbound textbox in main form 【发布时间】:2016-02-11 19:09:07 【问题描述】:我有两个表单:“Job Sheet”(主表单)和“Jobs sub”(子表单)。
我正在尝试使用 '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
我收到“无效使用财产”错误。
怎么了?
【问题讨论】:
什么是 JbYr?字符串、数字还是日期? JbYr 是一个“长整数”,数字类型字段。 我认为 yr 应该是整数,但是当我尝试这样做时,错误并没有消失。 【参考方案1】:告诉我们哪一行触发了错误会很有帮助。既然你没有,我猜这条线是罪魁祸首......
[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
【讨论】:
嗨,汉斯,谢谢您的回复。我尝试了每个人的解决方案的组合,错误要么持续存在,要么什么也没有发生。为了消除混淆,我将过滤器本身存储为字符串。这是我的新代码:` 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 ` ___ 我用过等号,去掉等号,用过单引号,去掉单引号,错误依旧。我迷路了。 试过了,没有我! [乔布斯子]之前。当我运行它时,会发生同样的错误,但下面的行Me![Jobs sub].FilterOn = True
是标记错误的行。删除了我!在那一行之前,然后我得到了另一种错误,整个方法声明都标记了一个错误。
请注意,当我复制和粘贴 Smandoli 的代码时,它不会产生错误,也不会产生结果。没有任何反应,没有打开过滤器。
我希望我可以,但是数据库是为我的办公室使用的,并且上面有机密信息,显然,所以我没有获得许可:(谢谢,我认为没有什么问题代码。
我希望我能解释一下并理解它......实际上对我来说最安全的做法是制作数据库的“模拟”副本,在那里尝试代码,看看它是否有效,如果没有,发给你?请稍等。【参考方案2】:
可能是您引用子表单的方式。试试:
Private Sub yrcheck_AfterUpdate()
Dim yr As Integer
yr = Me.yrcheck
Me![Jobs sub].Filter "JbYr='" & yr & "'"
Me![Jobs sub].FilterOn = True
End Sub
【讨论】:
谢谢,我一直在尝试,没有出现错误,但没有任何反应(抱歉,错误不会像我之前输入的那样持续存在)。从字面上复制并粘贴您的代码。 注意:我已经删除了单引号 IRT 别人的建议。然后错误再次发生。把单引号放回去,错误仍然发生并且不会停止发生。 D:【参考方案3】:非代码解决方案是保留此过滤器,只在主字段中包含文本框并展开子字段:
[Id],[yrcheck]
[ParentID],[JbYr]
这也将删除用户删除此过滤器的选项。
【讨论】:
我以为我之前评论过你,但似乎没有发送,对不起。我需要用户能够删除过滤器以查看所有记录,并根据需要以这种方式重新过滤。以上是关于使用主窗体中的未绑定文本框过滤 Microsoft Access 中的子窗体的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Access - 子窗体中的组合框基于主窗体组合框
如何通过文本框过滤数据表视图中的子表单? #likeoperator #where 子句