首页 > 解决方案 > 在 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

有一个黄色箭头指向它。

附加信息:

  1. 用于生成组合框值的表来自不同的表“Another_Table”,而不是 mainTable
  2. 我用作检查匹配组合框选择的字段的 mainTable 字段也是从同一“Another_Table”中提取选项的组合框

我对 VBA 和一般编码非常陌生,所以我可以说这个错误可能是我还没有学过的基本知识。我对所有的拼写和标点符号进行了三次检查,所以我很确定这不是问题(除非有一些奇怪的规则说我不能将我的表格/表格名称大写)。

在过去的几天里,我试图自己找到答案,但失败了。

如果有人能指出我正确的方向,将不胜感激。

标签: vbams-access

解决方案


正如@June7 建议的那样,您可以尝试FilterOn财产。我还建议您使用after_updateevent.

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

推荐阅读