vba - 在 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
有一个黄色箭头指向它。
附加信息:
- 用于生成组合框值的表来自不同的表“Another_Table”,而不是 mainTable
- 我用作检查匹配组合框选择的字段的 mainTable 字段也是从同一“Another_Table”中提取选项的组合框
我对 VBA 和一般编码非常陌生,所以我可以说这个错误可能是我还没有学过的基本知识。我对所有的拼写和标点符号进行了三次检查,所以我很确定这不是问题(除非有一些奇怪的规则说我不能将我的表格/表格名称大写)。
在过去的几天里,我试图自己找到答案,但失败了。
如果有人能指出我正确的方向,将不胜感激。
解决方案
正如@June7 建议的那样,您可以尝试FilterOn
财产。我还建议您使用after_update
event.
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
推荐阅读
- javascript - 更新 React 组件中的默认值
- bash - 当未提供 --stable 选项时, sort -n 是否可以预测地处理关系?如果有,怎么做?
- groovy - 有没有办法在 Liferay 中获取工作流提交的表单字段?
- python - 具有多个连接的 Sqlalchemy 查询,包括非直接多对多关系
- c# - Unity C# 错误'cs0116'“命名空间不能直接包含字段或方法等成员”
- javascript - 在 mouseenter 上隐藏 div - 但保留它
- entity-framework-core - ef core plus 是否支持带减号的批量更新?
- python - python tkinter 计算器项目
- javascript - 将可排序列表添加到空列表中并删除可排序列表而不重复
- python - 如何在 Python 中执行伴随敏感性(最好通过 CVODE)