0

我有一個參數查詢(粉紅色)的Access窗體。這裏是我的形式:訪問:將值傳遞給使用VBA的參數查詢?

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是一個名爲viewsSubform的子表單。這是我的代碼和新形式。正如你所看到的,在下拉菜單中,但選項是不可見的:

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

+0

看起來你的組合框有2列,第一個無形,但是你的查詢只返回一列,所以可見的組合框列是空的。 – Andre

+0

@Andre它的工作!像上次! :) – Johnathan

回答

0

組合框的RowSource是一個字符串屬性,所以你不能指定一個Recordset對象它。改爲將Recordset分配給組合的Recordset屬性。

由於這是一個對象分配,請使用Set關鍵字。

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

如果Combo12speciesSelection都包含在相同的形式(inputForm),你可以用這個來代替......

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

非常感謝您的回答!我剛剛意識到組合12在一個名爲viewsSubform的子表單中。 Combo12現在可以識別,下拉菜單可以工作,但我看不到任何條目。那麼,我幾乎在那裏?你能看看編輯?謝謝! :) – Johnathan

+0

你是否檢查過'qdf.OpenRecordset()'是否返回任何行? – HansUp

+0

其實,它工作得很好,它只是一個列編輯問題! :)現在,它完美的工作!再一次非常感謝你! – Johnathan