|
|
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
Всегда закрывал ранее открытый рекордсет так: rs.Close set rs=nothing Надоело писать 2 строчки, сочинил под это дело функцию (в стандартном модуле): Function CloseObj(ByRef Z As Object) On Error Resume Next Z.Close Set Z = Nothing End Function и передаю ей rs для закрытия. (On Error Resume Next сделано на случай, если переданный объект не рекордсет и не имеет метода Close). Так вот, вдруг обнаружил, что первый способ закрытия рекордсета и передача его этой функции не одно и тоже: при закрытии функцией, таблица, данные которой фигурировали в рекордсете, не освобождается. Например, не могу удалить ее, - система говорит, что таблица открыта. Знатоки, разъясните ситуацию, пожалуйста. В чем разница? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 16:27 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
А ты попробуй On Error Resume Next убрать - вдруг Close и не отрабатывает вовсе? Строка Код: plaintext лишняя. При передаче рекордсета в функцию ты сделал лишнюю ссылку, ну и убил потом ее. Внешняя ссылка то от этого не обнулилась З.Ы. Лень писать - можно вообще на VB положиться, ниче не закрывать и не обнулять З.З.Ы. Предыдущее З.Ы. считать шюткой :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 16:33 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
ЛППри передаче рекордсета в функцию ты сделал лишнюю ссылку, ну и убил потом ее. Внешняя ссылка то от этого не обнулилась ЛП ты не прав. :) ByRef есть ByRef - это кстати легко проверяется через ObjPtr. 2Alex112 Что касается исходного вопроса: в общем случае у меня всё прибивается корректно. Что-то ты еще забыл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 16:37 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
2 IgorM Не понял. Ты знаешь способ передавать объекты ByVal??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 16:39 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
2 IgorM В дополнение к первому своему "не понял" Код: plaintext 1. 2. 3. Ну выдает ObjPtr одно и то же значение. Но ссылки то две. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 16:45 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
Нет, в VB способов не знаю, тут ты прав, не прав в том, что ссылка не обнулится, можешь проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 16:48 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
Подожди, я тут "перепутался". :) Смысл в том, что при таком объявлении Код: plaintext счетчик ссылок не увеличивается, а при таком: Код: plaintext увеличивается. Что имхо и соответствует передаче "указателя" или "объекта". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 16:53 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
Где не обнулится ссылка? В какой момент? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 16:54 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
У меня не остаётся, только что проверил. Nothing (нулевой адрес) в rst, что, в общем-то, логично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 16:56 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
Ок. Теперь понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 17:06 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
Вопрос такой - а зачем писать две строчки Код: plaintext 1. 2. если они выполняют оно и тоже действие и являются взаимозаменяемыми (альтернативными по отношению руг к другу)? Или есть особенности и хелп нагло врет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 05:34 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
авторони выполняют оно и тоже действие и являются взаимозаменяемыми ..................... ................ ............... ................... ...................... сильно писал кипятком пока писал ответ прочитал свой ответ отмодерил свой ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 09:11 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
2chkalov chkalovони выполняют оно и тоже действие и являются взаимозаменяемыми тебе просто повезло и в темноте ты обошел эти грабли. забудь про лень и вставляй эти две строки не задумываясь. самое лёгкое(при их отсутствии) - акс не выгружается из памяти... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 10:42 |
|
||
|
Правильное закрытие DAO.рекордсета: вопрос...
|
|||
|---|---|---|---|
|
#18+
может быть проблема с неправильной "передачей по ссылке" (достаточно взять ссылку в скобки): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ?testCloseObj() True 0 True 0 True 0 True 0 а вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ?testCloseObj() True 0 False 1922228 True 0 False 1920208 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 11:10 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32435182&tid=1676171]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
137ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 422ms |

| 0 / 0 |
