如何解决在 ms-Access
目标:我想创建一个自定义表单来过滤表中的数据。我有一个组合框,用于选择过滤条件,然后使用所需的过滤数据生成子表单。
这是我的代码,仅当特定字段与我选择的组合框值匹配时,才使用过滤条件填充子表单。
Private Sub comboBox_selection_AfterUpdate()
Dim Filter_Function As String
Filter_Function = "SELECT * FROM mainTable WHERE ([Specific_Field] = " & Me.comboBox_selection & ")"
Me.some_subform.Form.RecordSource = Filter_Function
Me.some_subform.Form.Requery
End Sub
结果:当我从组合框中选择条件时,我收到消息
"查询表达式中的语法错误(缺少运算符) '([Specific_field] = comboBox_selection)'"
Me.some_subform.Form.RecordSource = Filter_Function
带有指向它的黄色箭头。
附加信息:
我对 VBA 和一般编码非常陌生,所以我可以看出错误可能是我还没有学到的基本知识。我对所有拼写和标点符号进行了三次检查,因此我非常确信这不是问题(除非有一些奇怪的规则说我不能将表格/表单名称大写)。
过去几天我试图自己找到答案,但失败了。
如果有人能指出我正确的方向,我将不胜感激。
解决方法
正如@June7 建议的那样,您可以尝试 FilterOn
属性。我还建议您使用 after_update
事件。
Dim Filter_Function As String
Filter_Function = "[Specific_Field] ='" & Me.cboSearch & "'"
Forms![MyFormName]![Some_subform].Form.FilterOn = False
Forms![MyFormName]![Some_subform].Form.Filter = Filter_Function
Forms![MyFormName]![Some_subform].Form.FilterOn = True
,
我确实使用了 After_Update
事件以及 @Harun24HR 上面提供的代码。
感谢@June7 和@Harun24HR,这既提供了令人难以置信的信息又很有帮助。 Filter and FilterOn
函数运行良好。我相信我现在明白这个函数是如何工作的,以及为什么它有三行代码(就订单操作而言?)。它比我第一次尝试简洁得多。
我想我需要访问更多有关基本 VBA 的教程以进行访问。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。