当放置在选项卡式页面上时,组合框中的 MS Access Forms 查询不起作用

MS Access Forms Query in Combobox does not work when placed on a tabbed page

Combobox OnChange 下的 MS Access 2013 查询在独立表单上工作,但在我放置时提示输入值,运行 它在选项卡式表单页面下。以下是我创建的详细信息:

Table:

Name: TblCustomers: 
Fields: CustID, CustName, CustRegion

查询:

Name: QryCustomers:
SQL: SELECT *
     FROM TblCustomers
     WHERE CustRegion = Forms!FrmCustomers!cmb_Region;

形式:

Name: FrmCustomers:
RecordSource: QryCustomers

Combobox(在 FrmCustomers 表单上):

Name: cmb_Region
Items: Asia, America, Europe, MiddleEast, RoW
OnChange VBA Procedulre: 
    Private Sub cmb_Region_Change()
        Me.Requery
    End Sub

制表符形式:

Name: CustomerApp
Page1: FrmCustomers

我 运行 表单 FrmCustomers 独立,它工作得很好。同样的表格我拖到 Page1 的选项卡形式 CustomerApp 并尝试 运行,它提示:

Enter Parameter Value:
Forms!FrmCustomers!cmb_Region

请注意,我不需要查询独立工作。

如何使该表单既独立工作又在选项卡式表单页面上工作?

我认为问题出在 WHERE CustRegion = Forms!FrmCustomers!cmb_Region;

最初在 FrmCustomers 上找到 CustRegion。但现在该表格在另一个表格上!

你需要

WHERE CustRegion = Forms!CustomerApp!TabControl.Form!FrmCustomers!cmb_Region;

我现在忘记了确切的语法,但大概是这样。

删除表单的 recordSource 值:FrmCustomers

将 Open_form 事件添加到:FrmCustomers

在 open_form 事件中有此代码。 (如果 custregion 是一个字符串,相应地添加 '')

Dim SQL_GET as string
SQL_GET = "SELECT * FROM TblCustomers WHERE CustRegion = " & me.cmb_Region.value

me.recordsource = SQL_GET

这应该会根据您的 cmp_region 值检索记录。确保您选择了默认值。