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

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

при завершении процедуры/функции, локально открытые переменные access должен сам уничтожать, разве нет?
...
Рейтинг: 0 / 0
20.04.2011, 13:01
    #37224352
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Убить" все незакрытые рекордсеты
Глюкманпри завершении процедуры/функции, локально открытые переменные access должен сам уничтожать, разве нет? Теоретически - да.
...
Рейтинг: 0 / 0
20.04.2011, 14:13
    #37224569
DzonyBB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Убить" все незакрытые рекордсеты
JossГлюкманпри завершении процедуры/функции, локально открытые переменные access должен сам уничтожать, разве нет? Теоретически - да.
я пробовал проводит эксперимент открытия несколько раз одно и то же рекордсета не закрывая предыдущий.И что интересно опыт прошел успешно.Я не скажу что так должно быть,но может прав
Глюкмана точто из-за неоткрытых рекордсетов процесс висит?
Мне кажется лучше самому пересмотреть код для поиска проблем.Понятно что тяжело и время,но может так дешевле будет?
...
Рейтинг: 0 / 0
21.04.2011, 07:25
    #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
23.05.2011, 13:47
    #37274414
dubok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Убить" все незакрытые рекордсеты
Получилось в итоге вот что: локальные рекордсеты закрывались по окончанию выполнения функции, даже если программист их не освобождал, а вот висели глобальные переменные, которые и вешали аксес. Спасибо за ответы.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "Убить" все незакрытые рекордсеты / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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