Ms access 将结果从一个函数拉入另一个函数

Ms access 将结果从一个函数拉入另一个函数,ms-access,vba,ms-access-2010,recordset,Ms Access,Vba,Ms Access 2010,Recordset,我正在使用Access 2010。如何从一个函数移到另一个函数中获取记录集中的信息?以下代码为我提供了一个对象变量未设置错误: Function Main() Dim rs as DAO.RecordSet Dim i as integer Set rs = QueryResults(i) Do While Not rs.EOF debug.print rs!result rs.MoveNext Loop End Function Function

我正在使用Access 2010。如何从一个函数移到另一个函数中获取记录集中的信息?以下代码为我提供了一个对象变量未设置错误:

Function Main()
Dim rs as DAO.RecordSet
Dim i as integer

Set rs = QueryResults(i)
   Do While Not rs.EOF
       debug.print rs!result
       rs.MoveNext
   Loop
End Function



Function QueryResults(i as Integer) as DAO.RecordSet
Dim stQuery as String
Dim rsResults as DAO.RecordSet
Dim i2 as Integer

i2 = i
stQuery = "Select query that uses i2 to get results"
Set rsResults = CurrentDb.OpenRecordset(stQuery)
End Function
我可以单步执行并看到QueryResults函数正在工作。我可以打印出rsResults中的每一行,并查看它是否符合我的要求。当代码点击“do while not rs.EOF”行时,问题就出现了。它说rs从未设置为任何东西


我做错了什么?这两个功能在同一个模块中。从一个函数到另一个函数中获取结果似乎不难。

当您希望函数返回某个内容时,必须将该内容指定给函数名

QueryResults
函数的最后一部分更改为:

'Set rsResults=CurrentDb.OpenRecordset(stQuery)
Set QueryResults=CurrentDb.OpenRecordset(stQuery)
端函数

当您希望函数返回某个内容时,必须将该内容分配给函数名

QueryResults
函数的最后一部分更改为:

'Set rsResults=CurrentDb.OpenRecordset(stQuery)
Set QueryResults=CurrentDb.OpenRecordset(stQuery)
端函数

我真不敢相信我错过了。非常感谢你。我花了很长时间在网站上寻找如何使用记录集。我甚至从未注意到函数从未被赋值。谢谢你今天让我恢复了理智。我真不敢相信我错过了。非常感谢你。我花了很长时间在网站上寻找如何使用记录集。我甚至从未注意到函数从未被赋值。谢谢你让我今天恢复了理智。