微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 ms-Access

如何解决在 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”,而不是主表
  2. 我用作检查匹配组合框选择的字段的 mainTable 字段也是从同一个“Another_Table”中提取选项的组合框

我对 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 举报,一经查实,本站将立刻删除。