访问:使用 VBA 将值传递给参数查询?

Access: passing value to a parameter query using VBA?

我有一个带参数查询的 Access 表单(粉红色)。这是我的表格:

当用户 select 是一个物种时,Access 使用选项组(称为 "speciesSelection")生成的数字在 table 中查找物种名称,它起作用了。但是,我想将物种名称传递给参数查询,以便记录集可以作为突出显示的组合框 (Combo12) 的数据源。但是,当我select一个品种时,组合框是空白的。这是我的代码:

Private Sub speciesSelection_AfterUpdate()
Dim dbs As Database
Dim qdf As QueryDef
Dim rst As Recordset

Set dbs = CurrentDb

'Get species name of the current Cases instance'
Dim speciesChosen As String
speciesChosen = DLookup("Species", "tblSpeciesList", "ID=" & speciesSelection)

'Get the parameter query
Set qdf = dbs.QueryDefs("qryClinicalObservations")

'Supply the parameter value
qdf.Parameters("enterSpecies") = speciesChosen

'Open a Recordset based on the parameter query
Forms!inputForm.Controls!Combo12.RowSource = qdf.OpenRecordset()
End Sub

我使用向导创建了查询。这是快照:

在标准部分,我可以在出现提示时手动输入一个物种(例如 "cat"),而且它有效。但不是我的 VBA 代码...

有明显错误吗?好像没识别到Combo12

编辑:

这是我的新代码。实际上,Combo12 在一个名为 observationsSubform 的子窗体中。这是我的代码和新表格。如您所见,下拉菜单,但选项不可见:

Private Sub speciesSelection_AfterUpdate()
Dim dbs As Database
Dim qdf As QueryDef
Dim rst As Recordset

Set dbs = CurrentDb

'Get species name of the current Cases instance'
Dim speciesChosen As String
speciesChosen = DLookup("Species", "tblSpeciesList", "ID=" & speciesSelection)

MsgBox (speciesChosen)

'Get the parameter query
Set qdf = dbs.QueryDefs("qryClinicalObservations")

'Supply the parameter value
qdf!enterSpecies = speciesChosen

Set Me!observationsSubform!Combo12.Recordset = qdf.OpenRecordset()

组合框的 RowSource 是一个字符串 属性,因此您不能将 Recordset 对象分配给它。将您的 Recordset 分配给组合的 Recordset 属性。

因为这是一个对象赋值,所以使用 Set 关键字。

Set Forms!inputForm!Combo12.Recordset = qdf.OpenRecordset()

如果 Combo12speciesSelection 都包含在相同的表单中 (inputForm),您可以使用此代替...

Set Me!Combo12.Recordset = qdf.OpenRecordset()