VBA 将参数添加到新的查询定义中

VBA add parameters to new query def

这段代码工作正常:

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 是不允许的。
任何解决方案?谢谢

如果您给 QueryDef 一个名称,您的第二个示例应该可以工作。如果您希望它是临时的 QueryDef,请使用空字符串作为名称 ...

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