Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Присвоение с использованием CurrentDb и DBEngine(0)(0) / 2 сообщений из 2, страница 1 из 1
01.09.2016, 10:00
    #39301688
Volunteer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоение с использованием CurrentDb и DBEngine(0)(0)
Обнаружил интересный эффект. Нужно было получить TableDef определенной таблицы, а присвоение
Код: vbnet
1.
Set tdf = CurrentDb.TableDefs(strTable)


не работало - на tdf рагалось дальше "Object invalid or no longer set"

Вот так работает:
Код: vbnet
1.
Set tdf = DBEngine(0)(0).TableDefs(strTable)



И так работает:
Код: vbnet
1.
2.
Set db = CurrentDb()
Set tdf = db.TableDefs(strTable)



Не совсем понятно, почему такое происходит. Понятно, что CurrntDb дает ссылку на текущую копию базы данных, каждое обращение это будет новая копия, но ссылка на объект с определением таблицы должен быть тот же самый. Или все ссылки на объекты базы данных, полученные через CurrentDb разрушаются сразу же после обращения к CurrentDb?
...
Рейтинг: 0 / 0
01.09.2016, 12:48
    #39301847
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоение с использованием CurrentDb и DBEngine(0)(0)
Volunteerвсе ссылки на объекты базы данных, полученные через CurrentDb разрушаются сразу же после обращения к CurrentDb?
Да, верно. CurrentDB - не объект, а метод. который возвращает ссылку на базу данных, но если ее не запомнить, она автоматически разрушается вместе с содержимым. Вот тут , например, обсуждалось это
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Присвоение с использованием CurrentDb и DBEngine(0)(0) / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]