我有一个带有文本字段和子表单的访问表单。文本字段是名为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
从其他查询中进行选择?
此致
答案 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)