VBA将参数添加到新查询def
Posted
技术标签:
【中文标题】VBA将参数添加到新查询def【英文标题】:VBA add parameters to new query def 【发布时间】:2016-05-15 13:45:51 【问题描述】:这段代码运行良好:
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
是不允许的。
有什么解决办法吗?谢谢
【问题讨论】:
【参考方案1】:如果你给QueryDef
一个名字,你的第二个例子应该可以工作。如果您希望它是临时的QueryDef
,请使用空字符串作为名称...
'Set qd = db.CreateQueryDef
Set qd = db.CreateQueryDef(vbNullString)
【讨论】:
确实如此。我现在觉得有点傻。我应该删除问题吗? 我不这么认为,帕特里克。它应该可以帮助其他读者理解QueryDef
必须是“命名的”(即使只有一个空字符串作为名称),以便 Access 识别 Parameters
。另外,我认为这很有趣;我以前从未注意到这个问题。 :-)以上是关于VBA将参数添加到新查询def的主要内容,如果未能解决你的问题,请参考以下文章