Я использую Access 2003 для доступа к данным, хранящимся в базе данных SQL Server, через ADO. Чаще всего я получаю данные с помощью хранимых процедур. Я выполняю хранимые процедуры через ADO в отдельной функции, которая возвращает набор записей. При возврате набора записей из функции, где лучше всего закрыть набор записей и освободить его, удерживая в памяти? Это делается в функции, которая возвращает набор записей, или в подпрограмме / функции, которая вызывает функцию, выполняющую код 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
Что мне интересно, так это то, где я должен закрывать набор записей и устанавливать его равным нулю. Я делаю это в обоих местах без необходимости? Просто ищу лучшие практики. Спасибо.