2016-02-05 38 views
1

此代碼工作正常:VBA參數添加到新的查詢高清

Dim db As DAO.Database, rs As DAO.Recordset, qd As DAO.QueryDef 

Set db = CurrentDb 
Set qd = db.QueryDefs("query1") 
qd.Parameters("[cou]").Value = "BE" 
Set rs = qd.OpenRecordset 
Do Until rs.EOF 
    Debug.Print rs!title, rs!country_fk 
    rs.MoveNext 
Loop 
rs.Close 

但是當我嘗試創建一個querydef,而不是使用現有的,以達到相同的結果,我上qd.Parameters行錯誤。

Set db = CurrentDb 
Set qd = db.CreateQueryDef 
qd.SQL = "PARAMETERS [cou] Text (255); SELECT TOP 10 Title, Country_fk FROM dbo_Client WHERE Country_fk=[cou];" 
qd.Parameters("[cou]").Value = "BE" 

Set rs = qd.OpenRecordset 
Do Until rs.EOF 
... 

我注意到qd.Parameters.Count = 0和qd.Parameters.Add是不允許的。
任何解決方案? Thx

回答

1

如果你給QueryDef一個名字,你的第二個例子應該可以工作。如果你想要它是一個臨時QueryDef,使用空字符串的名稱...

'Set qd = db.CreateQueryDef 
Set qd = db.CreateQueryDef(vbNullString) 
+0

的確。我現在感覺有點愚蠢。 Shoudl我刪除了這個問題? –

+0

我不這麼認爲,帕特里克。它應該有助於另一位讀者理解QueryDef必須是「named」(即使只有一個空字符串作爲名稱)才能使Access識別「參數」。另外我認爲這很有趣。我以前從未注意過這個問題。 :-) – HansUp