【发布时间】:2020-02-03 11:38:47
【问题描述】:
我正在使用 MS Access,目前正在尝试导航子表单。但是我发现很难理解如何简单地更改子表单的记录源。我的“NavigationSubform”中的一个选项卡称为“nbCustomerList”,其目标导航名称为“CustomerList”。在 CustomerList 表单中,有一个按钮,单击该按钮会打开一个弹出窗口,允许您过滤 CustomerList 上的查询。如何从这样的事件中更改记录源?
Private Sub btnSearch_Click()
On Error GoTo HandleError
If CurrentProject.AllForms("MainMenu").IsLoaded Then
[Forms]![CustomerList].RecordSource = CustomerListFilter()
[Forms]![MainMenu]![NavigationSubform].Requery
End If
''ErrorHandling'''''''''''''''''''''''''''''''''''''''''''''''''''''''
HandleExit:
Exit Sub
HandleError:
MsgBox (Err.Number & ": " & Err.Description)
Resume HandleExit
End Sub
【问题讨论】:
-
我已经尝试过“Forms!MainMenu!nbCustomerList.Form.RecordSource = CustomerListFilter()”但是我收到错误 438:对象不支持此属性或方法
-
CustomerListFilter()是否返回有效的SELECT语句?记录源不仅仅是要过滤的内容列表。 -
是的,这在直接从表单操作时工作得非常好,但是从导航子表单调用时会引发此错误。我也尝试过使用标准的 select * 语句,但错误仍然标记
-
代码的第 5 行正在调用一个函数,该函数可能包含您需要参考的代码来了解这一点。但是,您应该搜索子表单控件的 .recordsource 属性。您可以通过代码轻松设置它,也可以通过属性窗口手动设置。但是,正如您在研究中肯定会学到的那样,学习如何正确地重新查询表单是您需要学习的东西。