使用过滤器打开访问表单 VBA

Open Access Form with Filter VBA

我在使用过滤器打开表单时遇到问题。我尝试 运行 的代码是这样的:

DoCmd.OpenForm "MyForm", , "[ID] = " & Me.MyListBox.Column(0), , acFormEdit, acDialog

当我 运行 这一行时,它会打开表单,但不会应用过滤器。

FilterOnLoad属性设置为True,我在On Load事件中验证过它是true。

在 Form_Load 事件中,Me.FilterOn = False 并且 Me.Filter = "".

过滤器怎么了?我究竟做错了什么?我尝试通过 VBA 将 Me.FilterOn 属性 设置为 True,然后保存表格,但是当我再次打开表格时,它被重置为 False。

如果我使用 VBA 设置过滤器,然后将 Me.FilterOn 属性 设置为 True,则表单会正确过滤。我已验证 "Me.MyListBox.Column(0)"

的值是否正确

DoCmd.OpenForm 方法 帮助主题对 FilterName 参数的说明如下:

A string expression that's the valid name of a query in the current database.

但是您没有给它查询的名称。我认为您实际上想要 WhereCondition 参数:

DoCmd.OpenForm FormName:="MyForm", _
    WhereCondition:="[ID] = " & Me.MyListBox.Column(0), _
    DataMode:=acFormEdit, _
    WindowMode:=acDialog