访问:使用DAO.recordset运行查询,该查询从另一个查询中进行选择

时间:2016-08-05 18:19:01

标签: vba ms-access

我有一个带有文本字段和子表单的访问表单。文本字段是名为myQuery的查询的参数,子表单显示myQuery的结果。

在VBA中我想访问myQuery的第一行,所以我尝试使用DAO.recordsets,如下所示:

dim query as string
dim rs as DAO.recordset
query = "select top 1 * from myQuery"
set rs=CurrentDb.OpenRecordset(query)

我收到错误说"参数太少"。

如果我转到创建查询选项卡,并运行SQL代码"从myQuery中选择top 1 *"有用。我猜测通过CurrentDb.OpenRecordset运行查询时,您无法像使用常规SQL那样将另一个查询视为表格。

是否有人知道如何使用OpenRecordset从其他查询中进行选择?

此致

1 个答案:

答案 0 :(得分:1)

在打开记录集之前,请考虑使用querydef并评估参数。但是,在此实例中不能使用特定的SELECT表达式,而是整个查询对象。可以通过选择记录集值来镜像TOP 1而不进行循环(因为它首先选择)。

Dim db As DAO.Database
Dim qdf As DAO.querydef
Dim rst As DAO.Recordset

Set db = CurrentDb
Set qdf = db.QueryDefs("myQuery")
For Each prm In qdf.Parameters
    prm.Value = Eval(prm.Name)
Next prm

Set rst = qdf.OpenRecordset(dbOpenDynaset)
rst.MoveFirst

Debug.Print rst.Fields(0), rst.Fields(1), rst.Fields(2), rst.Fields(3), rst.Fields(4)