VBA参数添加到新的查询高清

问题描述:

此代码工作正常: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

如果你给QueryDef一个名字,你的第二个例子应该可以工作。如果你想要它是一个临时QueryDef,使用空字符串的名称...

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

的确。我现在感觉有点愚蠢。 Shoudl我删除了这个问题? –

+0

我不这么认为,帕特里克。它应该有助于另一位读者理解QueryDef必须是“named”(即使只有一个空字符串作为名称)才能使Access识别“参数”。另外我认为这很有趣。我以前从未注意过这个问题。 :-) – HansUp