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

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

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

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

Fields in subform

这是我目前拥有的 VBA 代码:

1
2
3
4
5
6
7
8
Private Sub cmdEditPerson_Click()

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

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

End Sub

当我进入表单并单击"编辑此人"时,我得到"编译错误:找不到方法或数据成员",subfrmTripsPeople 在 VBA 编辑器中以蓝色突出显示,Private Sub 行以黄色突出显示。所以看来我发现了一种不正确的方法来做到这一点。那么,我做错了什么,正确的方法是什么?

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

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


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

1
2
3
4
5
Private Sub cmdEditPerson_Click()

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

End Sub