2014-02-22 38 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

相關問題