首页 文章

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

提问于
浏览
0

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

enter image description here

当用户选择一个物种时,Access使用选项组生成的数字(称为“speciesSelection”)来查找表中的物种名称,并且它可以工作 . 但是,我想将种类名称传递给参数查询,以便记录集可以是突出显示的组合框(Combo12)的数据源 . 但是,当我选择一个物种时,组合框是空白的 . 这是我的代码:

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

我使用向导创建了我的查询 . 这是一个快照:

enter image description here

在标准部分,我可以在提示时手动输入物种(例如“猫”),并且它可以工作 . 但不是我的VBA代码......

有明显的错误吗?似乎Combo12不被认可 .

编辑:

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

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()

enter image description here

1 回答

  • 0

    组合框的 RowSource 是字符串属性,因此您无法为其分配 Recordset 对象 . 将 Recordset 分配给组合的 Recordset 属性 .

    由于这是对象分配,因此请使用 Set 关键字 .

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

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

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

相关问题