Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите разобратся с Nothing (set ...new)

13K
13 февраля 2007 года
Elina
22 / / 04.09.2006
добрый день ,
помогите разобратся с Nothing вернее когда его надо делать , всё работает ,но правильно ли
вот например
модуль ,где объявлены переменные связи и функция связи и форма где при нажатии на кнопку вызывает функцию связи 2 раза .Если я правильно понимаю Nothing мне надо делать каждый раз
после вызова функции (в данном примере 2 раза) или можно один раз в unload - но тогда наверное теряются New после первого вызова
модуль
Код:
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


форма
Код:
Private Sub cmdOK_Click()

......
Call OpenDB

.....
Set rstConnGenericRecordset = Nothing
Set rstGenericRecordset = Nothing

  If (......) Then
     Call OpenDB
     ........
    Set rstConnGenericRecordset = Nothing
    Set rstGenericRecordset = Nothing
  End If
313
13 февраля 2007 года
insane88
440 / / 13.12.2006
Опиши задачу подробнее плиз.
13K
13 февраля 2007 года
Elina
22 / / 04.09.2006
есть функция OpenDB (которая находится в модуле) при помощи которой осущесвляется связь с б/д через New
 
Код:
Set rstConnGenericRecordset = New ADODB.Connection
   ...
   
    Set rstGenericRecordset = New ADODB.Recordset


в коде одной и той же формы происходит многократный вызов функции OpenDB которая создаёт New .....

вопрос: нужно ли делать
 
Код:
Set rstConnGenericRecordset = Nothing
    Set rstGenericRecordset = Nothing


каждый раз после вызова функции OpenDB ?
313
13 февраля 2007 года
insane88
440 / / 13.12.2006
Если параметры сами не обращаются в Nothing, тогда конечно нужно.
13K
14 февраля 2007 года
Elina
22 / / 04.09.2006
хотелось бы уточнить Nothing мне надо делать каждый раз
после вызова функции OpenDB или можно один раз в unload
313
14 февраля 2007 года
insane88
440 / / 13.12.2006
Имхо, желательно каждый раз после вызова... Если сомневаешься - попробуй оба варианта, и выбери тот, который тебя устроит.
309
14 февраля 2007 года
el scorpio
1.1K / / 19.09.2006
Вообще-то писать Nothing не обязательно.
В отличие от С++, бейсик реализует объекты со счётчиками ссылок - это, несомненно, медленней, зато нет проблем с утечками памяти. Каждое присвоение ссылки, увеличивает значение счётчика, при переназначении ссылки счётчик старого объекта уменьшается. Когда счётчик достигает нуля - объект удаляется.
Set Ref = Nothing
просто означает, что мы перенаправляем ссылку в "никуда", но объект всё равно удаляет себя сам.
Но когда программа выходит из фрагмента кода, где была объявлена ссылка, счётчик объекта всё равно уменьшается. Так что объект удалится вне зависимости от того, обнулите ли вы ссылку "вручную" или нет - имеет значение только наличие иных ссылок на этот объект (в других функциях либо объектах).
13K
15 февраля 2007 года
Elina
22 / / 04.09.2006
большое спасибо
8.9K
17 февраля 2007 года
Залетин Виталий
71 / / 10.12.2005
Цитата: Elina
есть функция OpenDB (которая находится в модуле) при помощи которой осущесвляется связь с б/д через New



New никогда не делал коннекта к БД. Этот оператор создает объект через раннее связывание.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог