3
我使用Access 2003通過ADO訪問存儲在SQL Server數據庫中的數據。我經常使用存儲過程獲取數據。我通過ADO在一個單獨的函數中執行存儲過程,該函數返回一個記錄集。當從一個函數返回記錄集時,哪裏是關閉記錄集的最佳位置,並釋放它在內存中的位置?它在返回記錄集的函數中完成,還是在調用執行ADO代碼的函數的子/函數中完成?下面是一個例子...傳遞給調用方法時,在Access中關閉ADO記錄集的正確方法是什麼?
這裏是調用方法
Public Sub CallingMethod()
Dim rs As ADODB.Recordset
Set rs = GetDataFromDatabase()
Set myListBox.Recordset = rs
rs.Close
Set rs = Nothing
End Sub
下面是實際執行存儲過程,並將其返回給調用方法
Public Function GetDataFromDatabase()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
cnn.ConnectionString = myConnectionString
cnn.Open
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = cnn
rs.Source = "EXEC uspMyStoredProcedure"
rs.LockType = adLockOptimistic
rs.CursorType = adOpenStatic
rs.CursorLocation = adUseClient
rs.Open
Set GetDataFromDatabase = rs
Set rs = Nothing
Set cnn = Nothing
End Function
方法
我想知道的是我應該關閉記錄集並將其設置爲等於無。我是否在兩個地方都做而不需要?只是尋找最佳實踐。謝謝。
就我所見,你有兩個不同的記錄集,所以都需要關閉yesno? – Fionnuala 2010-06-29 15:01:36
沒有聲明返回類型的函數表示模糊思考某人沿線的某個人。如果你想要一個變體(這是默認的返回類型),那麼明確地聲明它是一個變體。但是你不在這裏,你希望它成爲一個ADO.Recordset。請參閱下面的@ HansUp解決方案,這在我看來是正確的方法。 – 2010-06-29 22:08:22
謝謝大衛!你說得很好。我創建了函數來說明我的觀點,忘記了包含ADODB.Recordset的返回類型。接得好。 – webworm 2010-06-30 19:25:55