powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "Убить" все незакрытые рекордсеты
11 сообщений из 11, страница 1 из 1
"Убить" все незакрытые рекордсеты
    #37221766
dubok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В процессе написания кода в файле mdb часто программист открывал рекордсеты Set rs = CurrentDb.OpenRecordset... но саму переменную не очищал Set rs = nothing и не закрывал рекордсет rs.Close. Лазить по всему коду в поисках этих оплошностей очень трудоемко. Можно ли как то выцепить все такие переменные и очистить их. Потому как если этого не сделать, то mdb не закрывается, а висит в памяти. Спасибо.
...
Рейтинг: 0 / 0
"Убить" все незакрытые рекордсеты
    #37222139
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-нить типа
Код: plaintext
1.
2.
for each rs in currentdb.recordsets
   rs.close
next
...
Рейтинг: 0 / 0
"Убить" все незакрытые рекордсеты
    #37222689
dubok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
на сколько я знаю Close не решит окончательно проблему, но буду знать, что хотя бы открытые рекордсеты смогу закрыть. Спасибо.
...
Рейтинг: 0 / 0
"Убить" все незакрытые рекордсеты
    #37223236
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dubokна сколько я знаю Close не решит окончательно проблему
Зачистку переменных, чтобы они не указывали на объект типа Recordset, должен обеспечить программист. В частности, не-использованием глобальных переменных нескалярного типа.
...
Рейтинг: 0 / 0
"Убить" все незакрытые рекордсеты
    #37223983
dubok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinadubokна сколько я знаю Close не решит окончательно проблему
Зачистку переменных, чтобы они не указывали на объект типа Recordset, должен обеспечить программист. В частности, не-использованием глобальных переменных нескалярного типа.
таких переменных нет в проекте. все переменные находятся внтури функций и являются локальными. но проблема остается.
...
Рейтинг: 0 / 0
"Убить" все незакрытые рекордсеты
    #37224135
Глюкман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а точто из-за неоткрытых рекордсетов процесс висит?
...
Рейтинг: 0 / 0
"Убить" все незакрытые рекордсеты
    #37224168
Глюкман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dubokAkinaпропущено...

Зачистку переменных, чтобы они не указывали на объект типа Recordset, должен обеспечить программист. В частности, не-использованием глобальных переменных нескалярного типа.
таких переменных нет в проекте. все переменные находятся внтури функций и являются локальными. но проблема остается.

при завершении процедуры/функции, локально открытые переменные access должен сам уничтожать, разве нет?
...
Рейтинг: 0 / 0
"Убить" все незакрытые рекордсеты
    #37224352
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глюкманпри завершении процедуры/функции, локально открытые переменные access должен сам уничтожать, разве нет? Теоретически - да.
...
Рейтинг: 0 / 0
"Убить" все незакрытые рекордсеты
    #37224569
DzonyBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossГлюкманпри завершении процедуры/функции, локально открытые переменные access должен сам уничтожать, разве нет? Теоретически - да.
я пробовал проводит эксперимент открытия несколько раз одно и то же рекордсета не закрывая предыдущий.И что интересно опыт прошел успешно.Я не скажу что так должно быть,но может прав
Глюкмана точто из-за неоткрытых рекордсетов процесс висит?
Мне кажется лучше самому пересмотреть код для поиска проблем.Понятно что тяжело и время,но может так дешевле будет?
...
Рейтинг: 0 / 0
"Убить" все незакрытые рекордсеты
    #37225849
dubok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DzonyBBМне кажется лучше самому пересмотреть код для поиска проблем.Понятно что тяжело и время,но может так дешевле будет?
Да согласен, пока так и делаю. Но mdb файлов порядка 30 разных. Это будет долго :(

Глюкмана точто из-за неоткрытых рекордсетов процесс висит?
Да точно. Делал эксперимент. Пишем Set RS = CurrentDb.OpenRecordset(...), а Set RS = nothing не пишем. Выполняем код. Закрываем mdb. Он закрывается и тут же открывается пустой и не закрывается уже, только kill process помогает.

Глюкманпри завершении процедуры/функции, локально открытые переменные access должен сам уничтожать, разве нет?
Я тоже так думал, но получается, что нет.

DzonyBBя пробовал проводит эксперимент открытия несколько раз одно и то же рекордсета не закрывая предыдущий.И что интересно опыт прошел успешно.Я не скажу что так должно быть,но может прав
В смысле так:
Set RS = CurrentDb.OpenRecordset("SELECT 1")
Set RS = CurrentDb.OpenRecordset("SELECT 2")
Если так, то тут ничего криминального мне кажется.
...
Рейтинг: 0 / 0
"Убить" все незакрытые рекордсеты
    #37274414
dubok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось в итоге вот что: локальные рекордсеты закрывались по окончанию выполнения функции, даже если программист их не освобождал, а вот висели глобальные переменные, которые и вешали аксес. Спасибо за ответы.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "Убить" все незакрытые рекордсеты
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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