Public rstConnGenericRecordset As ADODB.Connection
Public strConnectionGenericRecordset As String
Public rstGenericRecordset As ADODB.Recordset
Public Sub OpenDB()
........
Set rstConnGenericRecordset = New ADODB.Connection
...
Set rstGenericRecordset = New ADODB.Recordset
.......
End Sub
помогите разобратся с Nothing (set ...new)
помогите разобратся с Nothing вернее когда его надо делать , всё работает ,но правильно ли
вот например
модуль ,где объявлены переменные связи и функция связи и форма где при нажатии на кнопку вызывает функцию связи 2 раза .Если я правильно понимаю Nothing мне надо делать каждый раз
после вызова функции (в данном примере 2 раза) или можно один раз в unload - но тогда наверное теряются New после первого вызова
модуль
Код:
форма
Код:
Private Sub cmdOK_Click()
......
Call OpenDB
.....
Set rstConnGenericRecordset = Nothing
Set rstGenericRecordset = Nothing
If (......) Then
Call OpenDB
........
Set rstConnGenericRecordset = Nothing
Set rstGenericRecordset = Nothing
End If
......
Call OpenDB
.....
Set rstConnGenericRecordset = Nothing
Set rstGenericRecordset = Nothing
If (......) Then
Call OpenDB
........
Set rstConnGenericRecordset = Nothing
Set rstGenericRecordset = Nothing
End If
Опиши задачу подробнее плиз.
Код:
Set rstConnGenericRecordset = New ADODB.Connection
...
Set rstGenericRecordset = New ADODB.Recordset
...
Set rstGenericRecordset = New ADODB.Recordset
в коде одной и той же формы происходит многократный вызов функции OpenDB которая создаёт New .....
вопрос: нужно ли делать
Код:
Set rstConnGenericRecordset = Nothing
Set rstGenericRecordset = Nothing
Set rstGenericRecordset = Nothing
каждый раз после вызова функции OpenDB ?
Если параметры сами не обращаются в Nothing, тогда конечно нужно.
после вызова функции OpenDB или можно один раз в unload
Имхо, желательно каждый раз после вызова... Если сомневаешься - попробуй оба варианта, и выбери тот, который тебя устроит.
В отличие от С++, бейсик реализует объекты со счётчиками ссылок - это, несомненно, медленней, зато нет проблем с утечками памяти. Каждое присвоение ссылки, увеличивает значение счётчика, при переназначении ссылки счётчик старого объекта уменьшается. Когда счётчик достигает нуля - объект удаляется.
Set Ref = Nothing
просто означает, что мы перенаправляем ссылку в "никуда", но объект всё равно удаляет себя сам.
Но когда программа выходит из фрагмента кода, где была объявлена ссылка, счётчик объекта всё равно уменьшается. Так что объект удалится вне зависимости от того, обнулите ли вы ссылку "вручную" или нет - имеет значение только наличие иных ссылок на этот объект (в других функциях либо объектах).
большое спасибо
Цитата: Elina
есть функция OpenDB (которая находится в модуле) при помощи которой осущесвляется связь с б/д через New
New никогда не делал коннекта к БД. Этот оператор создает объект через раннее связывание.