如何引用使用 Access VBA 不可见的子表单值?

How to reference a subform value that isn't visible using Access VBA?

我在 Access 中有一个子表单,它表示多对多关系中的联结 table。

具体来说,它基于一个查询,该查询包含所有 3 table 中的值(人物、旅行、People_Has_Trips)。子表单 (subfrmTripsPeople) 是主表单 (Trips) 的一部分。它显示联系人信息,并包含一个标记为 "Edit this person" 的按钮,其目的是打开子表单中选定记录的人员表单。这似乎是正确的调用,只是让子表单中的字段为 editable,以确保用户明确打算编辑用户。

这是我目前的 VBA 代码:

Private Sub cmdEditPerson_Click()

Dim selectedPerson As Integer
selectedPerson = Me.subfrmTripsPeople.Form!People_PersonID

DoCmd.OpenForm "People", , , "ID = " & selectedPerson

End Sub

当我进入表单并单击 "Edit this person" 时,我得到了 "Compile Error: Method or Data Member not found",其中 subfrmTripsPeople 在 VBA 编辑器中以蓝色突出显示,而 Private Sub 线路以黄色突出显示。所以看来我发现了一种不正确的方法来做到这一点。那么,我做错了什么,正确的做法是什么?

在我看来,明显的问题是我引用的字段 People_PersonID 实际上不是子表单上的字段,尽管我认为它是可访问的,因为它是底层源查询。然而,突出显示的代码似乎表明我的错误在于我引用子表单的方式。我看不出这有什么问题,而且我没有拼错名字或任何东西。

希望得到有关此问题的指导!

我最终添加了一个控制源为 people_personID 的文本框字段(称为 invisiblepersonID),将其宽度和高度设置为 0。
变量声明原来是多余的,所以我去掉了它。这是我的新 VBA 代码:

Private Sub cmdEditPerson_Click()

    DoCmd.OpenForm "People", , , "PersonID = " & Me!invisblepersonID

End Sub