
Посему возник такой вопрос по уничтожению своих объектов.
Например, вызываем процедуру, в которой
Dim rs As new ADODB.recordset
или даже
Dim rs As ADODB.recordset
Set rs = new ADODB.recordset
Если я не возвращаю ссылок на этот рекордсет (ну или др. объект), и не делаю на него ссылок из глобальных переменных, то, насколько я понимаю, он АВТОМАТИЧЕСКИ уничтожается при завершении процедуры. Даже если произошла ошибка, а обработчик в процедуре, которая вызывала эту. Т.е. не нужно так уж обязательно лепить
Set rs = Nothing
в конце этой процедуры.
По крайней мере, смотря на примеры из MSDN можно понять так.
То же, видимо, действует в случае, если объявить глобальную переменную в каком-нить модуле:
Public rs As new ADODB.recordset
Данный объект, получается, должен удаляться АВТОМАТИЧЕСКИ при завершении программы.
Ну и последний пример.
Вызывающая процедура имеет:
Dim rs As ADODB.recordset
Вызываем процедуру:
Public Sub SP(..., rs AS ADODB.recordset)
В ней создается объект:
Set rs = cmd.Execute
А вот в этом случае, при завершении родительской процедуры rs тоже будет уничтожен АВТОМАТИЧЕСКИ ... или я не прав?
А, забыл, есть еще часто встречающийся случай - объявляем несколько объектов в классе. Я предпочитаю в деструкторе (Terminate) делать им всем Set ... = Nothing - моэ и это лишнее?