【问题标题】:Access Navigation Subform, recordsource访问导航子窗体、记录源
【发布时间】: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

【问题讨论】:

  • 这能回答你的问题吗? Setting the Record Source of a subform in Access
  • 我已经尝试过“Forms!MainMenu!nbCustomerList.Form.RecordSource = CustomerListFilter()”但是我收到错误 438:对象不支持此属性或方法
  • CustomerListFilter() 是否返回有效的SELECT 语句?记录源不仅仅是要过滤的内容列表。
  • 是的,这在直接从表单操作时工作得非常好,但是从导航子表单调用时会引发此错误。我也尝试过使用标准的 select * 语句,但错误仍然标记
  • 代码的第 5 行正在调用一个函数,该函数可能包含您需要参考的代码来了解这一点。但是,您应该搜索子表单控件的 .recordsource 属性。您可以通过代码轻松设置它,也可以通过属性窗口手动设置。但是,正如您在研究中肯定会学到的那样,学习如何正确地重新查询表单是您需要学习的东西。

标签: vba ms-access


【解决方案1】:

以下测试对我有用:
Forms![Navigation Form].NavigationSubform.Form.RecordSource = "SELECT * FROM Rates WHERE ID=2"

假设您的表单设计具有 Access 分配的 [Navigation Form] 和 NavigationSubform 的默认名称,请在您的数据库中尝试:

[Forms]![Navigation Form].NavigationSubform.Form.RecordSource = CustomerListFilter()

不需要重新查询命令。

我不使用导航表单设计。请记住,无论设置了多少选项卡,任何时候都只有一个子表单可用。导航表单的本质是它通过单击选项卡来加载和卸载子表单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多