2014-02-22 42 views
1

我正在使用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从来没有设置任何东西。

我在做什么错?这两个功能都在同一个模块中。看起来应该不会很难从一个功能获得结果到另一个功能。

回答

4

当你想要一个函数返回某些东西时,你必须给这个函数名分配一些东西。

QueryResults函数的最后部分改成这样:

'Set rsResults = CurrentDb.OpenRecordset(stQuery) 
Set QueryResults = CurrentDb.OpenRecordset(stQuery) 
End Function 
+0

我无法相信我错过了。非常感谢。我花了太长时间浏览关于如何使用记录集的网站。我从来没有注意到这个函数从来没有被赋值。谢谢你恢复我今天的理智。 – Nigel

相关问题