我有一个带有参数查询的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()
答案 0 :(得分:0)
组合框的RowSource
是一个字符串属性,因此您无法为其分配Recordset
个对象。将您的Recordset
分配给组合的Recordset
媒体资源。
由于这是对象分配,请使用Set
关键字。
Set Forms!inputForm!Combo12.Recordset = qdf.OpenRecordset()
如果Combo12
和speciesSelection
都包含在同一表单(inputForm
)中,则可以使用此代码...
Set Me!Combo12.Recordset = qdf.OpenRecordset()