我有一个带有参数查询的Access表单(粉红色) . 这是我的表格:
当用户选择一个物种时,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
我使用向导创建了我的查询 . 这是一个快照:
在标准部分,我可以在提示时手动输入物种(例如“猫”),并且它可以工作 . 但不是我的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()
1 回答
组合框的
RowSource
是字符串属性,因此您无法为其分配Recordset
对象 . 将Recordset
分配给组合的Recordset
属性 .由于这是对象分配,因此请使用
Set
关键字 .如果
Combo12
和speciesSelection
都包含在同一表单中(inputForm
),则可以使用此代替...