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)
的确。我现在感觉有点愚蠢。 Shoudl我删除了这个问题? –
我不这么认为,帕特里克。它应该有助于另一位读者理解QueryDef必须是“named”(即使只有一个空字符串作为名称)才能使Access识别“参数”。另外我认为这很有趣。我以前从未注意过这个问题。 :-) – HansUp