|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
В процессе написания кода в файле mdb часто программист открывал рекордсеты Set rs = CurrentDb.OpenRecordset... но саму переменную не очищал Set rs = nothing и не закрывал рекордсет rs.Close. Лазить по всему коду в поисках этих оплошностей очень трудоемко. Можно ли как то выцепить все такие переменные и очистить их. Потому как если этого не сделать, то mdb не закрывается, а висит в памяти. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 07:50 |
|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
Что-нить типа Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 11:32 |
|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
Akina, на сколько я знаю Close не решит окончательно проблему, но буду знать, что хотя бы открытые рекордсеты смогу закрыть. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 14:17 |
|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
dubokна сколько я знаю Close не решит окончательно проблему Зачистку переменных, чтобы они не указывали на объект типа Recordset, должен обеспечить программист. В частности, не-использованием глобальных переменных нескалярного типа. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 17:29 |
|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
Akinadubokна сколько я знаю Close не решит окончательно проблему Зачистку переменных, чтобы они не указывали на объект типа Recordset, должен обеспечить программист. В частности, не-использованием глобальных переменных нескалярного типа. таких переменных нет в проекте. все переменные находятся внтури функций и являются локальными. но проблема остается. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 10:36 |
|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
а точто из-за неоткрытых рекордсетов процесс висит? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 11:50 |
|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
dubokAkinaпропущено... Зачистку переменных, чтобы они не указывали на объект типа Recordset, должен обеспечить программист. В частности, не-использованием глобальных переменных нескалярного типа. таких переменных нет в проекте. все переменные находятся внтури функций и являются локальными. но проблема остается. при завершении процедуры/функции, локально открытые переменные access должен сам уничтожать, разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 12:03 |
|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
Глюкманпри завершении процедуры/функции, локально открытые переменные access должен сам уничтожать, разве нет? Теоретически - да. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 13:01 |
|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
JossГлюкманпри завершении процедуры/функции, локально открытые переменные access должен сам уничтожать, разве нет? Теоретически - да. я пробовал проводит эксперимент открытия несколько раз одно и то же рекордсета не закрывая предыдущий.И что интересно опыт прошел успешно.Я не скажу что так должно быть,но может прав Глюкмана точто из-за неоткрытых рекордсетов процесс висит? Мне кажется лучше самому пересмотреть код для поиска проблем.Понятно что тяжело и время,но может так дешевле будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 14:13 |
|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
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") Если так, то тут ничего криминального мне кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 07:25 |
|
"Убить" все незакрытые рекордсеты
|
|||
---|---|---|---|
#18+
Получилось в итоге вот что: локальные рекордсеты закрывались по окончанию выполнения функции, даже если программист их не освобождал, а вот висели глобальные переменные, которые и вешали аксес. Спасибо за ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2011, 13:47 |
|
|
start [/forum/topic.php?fid=45&gotonew=1&tid=1627028]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
13ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 273ms |
total: | 450ms |
0 / 0 |