如何在 Access VBA 中引用已保存的查询?
Posted
技术标签:
【中文标题】如何在 Access VBA 中引用已保存的查询?【英文标题】:How can I refer to Saved Queries in Access VBA? 【发布时间】:2018-06-01 04:04:59 【问题描述】:我正在尝试检查已保存查询中的记录以确定 VBA 是否应禁用某些表单控件:
Dim SavedQry
SavedQry = Queries!qryCurrentItems 'or Queries("qryCurrentItems")
不会编译,因为它要我定义变量“查询”。
您可以使用Forms!FormName!ControlName
执行此类操作来引用控件中的数据,那么为什么不这样呢?
为了清楚起见;有问题的查询具有由表单填充的“参数”。代码如下。
SELECT tblColour.Colour AS Colour
FROM tblColour
INNER JOIN (tblGenCol
INNER JOIN tblAutCol ON tblAutCol.Colour = tblGenCol.Colour)
ON tblGenCol.Colour = tblColour.ID
WHERE tblGenCol.Genre = Forms!frmColourChoice!cmbGenre
AND tblAutCol.Author = Forms!frmColourChoice!cmbAuthor;
参数为 Forms!frmColourChoice!cmbGenre 和 Forms!frmColourChoice!cmbAuthor。
【问题讨论】:
声明变量As QueryDef
并使用CurrentDb().QueryDefs("QueryName")
设置对查询的引用。
【参考方案1】:
使用一两个对象:
Dim SavedQry As DAO.QueryDef
Dim rs As DAO.Recordset
Set SavedQry = CurrentDb.QueryDefs("qryCurrentItems")
SavedQry.Parameter("ParameterName1").Value = SomeValue
SavedQry.Parameter("ParameterName2").Value = AnotherValue
Set rs = SavedQry.OpenRecordset()
' Investigate records.
【讨论】:
这给了我“错误号 3061 - 参数太少。预期为 2。”在点Set rs = SavedQry.OpenRecordset()
然后设置参数值。请查看编辑后的答案。
但是参数在查询中被定义为来自触发此代码的开放表单...难道不应该通过它来解决吗?
太棒了。谢谢!以上是关于如何在 Access VBA 中引用已保存的查询?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Access VBA,如何计算选择查询中的输出记录数并将计数存储为 VBA 变量?
如何使用 VBA 从 Access 中的表单更改保存的导出路径?
如何在 Access VBA 中运行附加查询以根据表单字段中的数量创建一定数量的相同记录?
在Access 2007 VBA中,未保存的表单和报表是否可以键入为“AccessObject”..?