Могу ли я использовать одну и ту же переменную набора записей в разных таблицах? - PullRequest
0 голосов
/ 31 января 2011

Я новичок в Microsoft Access.

Как я могу использовать одну и ту же переменную набора записей в разных таблицах?

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Да, вы можете, если не ожидаете, что переменная будет указывать на два набора записей.

Однако вопрос в том, почему вы?Что бы вы ожидали сохранить?Ресурсы?Не так уж и важно.Также ухудшается читаемость кода.Если вы через неделю или кто-то еще позже просматриваете ваш код, они могут не понимать, что происходит.Таким образом, я бы предложил переменную набора записей для каждой таблицы / запроса.

Также есть область действия переменной.Если определено в подпрограмме / функции, то она видна только в этой подпрограмме / функции.Если вверху это будет видно всем sou / function в этой форме / report / module.Если в модуле вы заявите, что он глобальный, он будет виден везде.

Итак, вопрос в том, почему вы спрашиваете?

0 голосов
/ 31 января 2011

Да, но вы должны обязательно закрыть набор записей, прежде чем переназначить переменную набора записей для другого набора записей. Вот пример:

Dim rs As DAO.Recordset
Dim bTimeToChangeRecordsets As Boolean

Set rs = CurrentDb.OpenRecordset("Contacts")

'add business logic here'

If bTimeToChangeRecordsets Then
    rs.Close
    'setting to Nothing is not necessary here,'
    'because setting to a new recordset instance has the '
    'same effect on the variable reference count '
    Set rs = CurrentDb.OpenRecordset("Comments")
End If

'more business logic'

rs.Close
Set rs = Nothing

Многие комментарии по этому вопросу были сосредоточены на необходимости установить переменную набора записей на Nothing, необходимо ли это и когда это необходимо, а также необходимо ли также вызывать Close для набора записей перед выпуском ссылки на набор записей. Есть несколько превосходных комментариев по этой теме, разбросанных по довольно многим вопросам о переполнении стека; этот особенно актуален для вашей ситуации. Я бы также направил вас к этой статье в базе знаний и этой выдержке из всесторонней книги .

Имея риск упрощения, я могу обобщить проблему следующим образом: если бы подсчет ссылок в Access работал хорошо, не нужно было бы беспокоиться о явном освобождении ссылок, задав для них значение Nothing, или о явном закрытии наборов записей. Однако практический опыт подсказывает нам, что, учитывая поведение Access, обе эти привычки должны быть частью наилучшей практики кодирования для VBA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...