|
|
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
привык делать так: var=currentdb.openrecordset("select Name from Names")("Name") вопрос в том - выделяется ли память под такое открытие рекордсета и как его закрыть? а предпосылка вопроса такая: начала вылетать ошибка - Открытие большего числа таблиц невозможно, порылся в инете, нашел что нужно закрывать рекордсеты. Access97 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:41:15 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
recordset.Close ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:45:07 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
currentdb это вообще очень гнусная вещь, советую ею не пользоваться, так как каждый currentdb приводит к открытию нового экземпляра базы данных рекордсет я обычно закрываю так: objRst.Close Set objRst = Nothing ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:46:27 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Лучше и корректнее Set recorset = nothing ------------------------------------------------------ Заходи в саpай аккуpатно - могут быть сеpьезные гpабли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:46:30 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Чем же насинг без клоуза корректнее ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:49:49 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
с этим: objRst.Close Set objRst = Nothing все понятно... но ведь объекту objRst сначала нужно присвоить рекордсет. а я то его открываю без присваивания имени... Или способов кроме присваивания не существует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:51:28 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
AlexJS но ведь объекту objRst сначала нужно присвоить рекордсет. а я то его открываю без присваивания имени... Или способов кроме присваивания не существует? что вы под этим подразумеваете? рекордсет открывается так как у вас и написано в первом посте тольно не objRst = objDb.OpenRecordset(...) а Set objRst = objDb.OpenRecordset(...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 15:59:00 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
да еще сразу не обратил внимание, что это за конструкция у вас такая? ("select Name from Names")("Name") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:02:42 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Lenivecда еще сразу не обратил внимание, что это за конструкция у вас такая? ("select Name from Names")("Name") ну тогда реальный пример: if currentdb.openrecordset("select IDВыставки from TВыставки where ID=35")("IDВыставки")=185 then конструкция, поверьте, замечательно работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:08:12 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
DLookup тебе в руки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:14:34 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
AlexJS if currentdb.openrecordset("select IDВыставки from TВыставки where ID=35")("IDВыставки")=185 then конструкция, поверьте, замечательно работает без ножа зарезал. что, что работает? Берет первое поле первой записи рекордсета? И что? А Dlookup не проще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:17:14 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
автор if currentdb.openrecordset("select IDВыставки from TВыставки where ID=35")("IDВыставки")=185 then конструкция, поверьте, замечательно работает Сишнику такая жуткая конструкция в кошмарном сне не присниться. Где создается объект, где уничтожается ? Зачем из-за одного значения рекордсет гонять ? Эдак и число записей можно в цикле мувнекстом пересчитывать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:18:51 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Спасибо думаю лукап действитльно мне поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:30:16 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Еще не забудьте про остальные DSum, DMax ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:32:32 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Что за бред вы тут понаписали??? Leniveccurrentdb это вообще очень гнусная вещь, советую ею не пользоваться, так как каждый currentdb приводит к открытию нового экземпляра базы данных Да ну? Во мля как бывает то Программист-ЛюбительСишнику такая жуткая конструкция в кошмарном сне не присниться. Где создается объект, где уничтожается ? Перепишите этот код на си, и поудивляйтесь немного. Придется точку заменить на "->", а в остальном - те же яйца, только в профиль. Советующие DLookup (и остальные DSum'ы, DMax'ы) почему-то не упоминают про то, что работает оно медленнее, чем чтение одного поля из рекордсета с одной записью. Также все почему-то забывают о такой маааленькой детали... DLookup'у (DSum'у, DMax'у) пофигу на все уровни изоляции транзакций, он в своем воркспейсе работает. Вам оно надо? Точно надо? А вы уверены, что автору вопроса это тоже надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:42:33 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
ЛП: ты топик с начала читал, или только конец? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:47:15 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
автор Советующие DLookup (и остальные DSum'ы, DMax'ы) почему-то не упоминают про то, что работает оно медленнее, чем чтение одного поля из рекордсета с одной записью. Быстрее, чем открытие рекордсета с условием выбора, сортировкой или группировкой и суммрованием плюс выборка поля из него ? Если это проверенная информация, то можно взять на вооружение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:47:56 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель автор Советующие DLookup (и остальные DSum'ы, DMax'ы) почему-то не упоминают про то, что работает оно медленнее, чем чтение одного поля из рекордсета с одной записью. Быстрее, чем открытие рекордсета с условием выбора, сортировкой или группировкой и суммрованием плюс выборка поля из него ? Если это проверенная информация, то можно взять на вооружение. Только что провел тестирование: Код: plaintext 1. 2. 3. 4. 5. 6. в первом случае результат выдается через 6 сек, во втором через 3 сек. На глазок. Что посоветуете в этом случае? Как и рекордсет закрыть, и в скорости не потерять, и сишнику глаза не мозолить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:55:38 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
2 Kelme ЛП: ты топик с начала читал, или только конец? С начала. Забыл собственно ответ дать 2 AlexJS Если надо быть уверенным в корректном закрытии рекордсета, то надо его куда-нить сохранить. Код: plaintext 1. 2. 2 Программист-Любитель Быстрее, чем открытие рекордсета с условием выбора, сортировкой или группировкой и суммрованием плюс выборка поля из него ? А почему оно должно быть медленнее? Можно подумать, что всякие там DLookup'ы не открывают запросы, не накладывают условий, не выполняют всякие там группировки, суммирования и прочее. Если бы это было так, то откуда бы они информацию брали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 16:59:47 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
короче чтобы грамотно закрыть рекордсет, надо его грамотно открыть типа: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:01:21 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
автор Можно подумать, что всякие там DLookup'ы не открывают запросы, не накладывают условий, не выполняют всякие там группировки, суммирования и прочее. Если бы это было так, то откуда бы они информацию брали? Конечно открывают. Но я думал, что в DLookup'ах внутри может быть более соптимизированный алгоритм, нежели в универсальных запросах вообще. И рекордсеты внутри они просто обязаны корректно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:04:16 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
быстрее всего будет Код: plaintext .collect - можно выкинуть как недокументированное, сильно не помогает помогает dbOpenSnapshot против dbOpenDynaset А вот если таблица прилинкованная , замена Currentdb() на переменную, указывающую на базу поможет серьёзно ускориться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:07:00 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель автор Можно подумать, что всякие там DLookup'ы не открывают запросы, не накладывают условий, не выполняют всякие там группировки, суммирования и прочее. Если бы это было так, то откуда бы они информацию брали? Конечно открывают. Но я думал, что в DLookup'ах внутри может быть более соптимизированный алгоритм, нежели в универсальных запросах вообще. И рекордсеты внутри они просто обязаны корректно закрывать. ЛП прав ;) HELP Although you can use the DLookup function to display a value from a field in a foreign table, it may be more efficient to create a query that contains the fields that you need from both tables and then to base your form or report on that query. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:08:07 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
А что есть данные, что при использовании var=currentdb.openrecordset("select Name from Names")("Name") мусор остаётся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:09:24 |
|
||
|
как грамотно закрыть recordset?
|
|||
|---|---|---|---|
|
#18+
Конечно открывают. Но я думал, что в DLookup'ах внутри может быть более соптимизированный алгоритм, нежели в универсальных запросах вообще. А откуда этот соптимизированный алгоритм там возмется? И как можно еще более оптимизировать какое-нибудь условие типа "Поле=Значение"? Есть индекс - будем его использовать, нет индекса - будем сканить. Это в случае запроса. А в случае DLookup'а - хрен его знает как ему в голову взбредет поиск выполнять. И рекордсеты внутри они просто обязаны корректно закрывать. Угу. Обязаны. Конструкция типа CurrentDb.OpenRecordset("трампампам")("трампампам") тоже обязана рекордсеты закрывать. Однако... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2004, 17:10:41 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32816877&tid=1669899]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 269ms |
| total: | 408ms |

| 0 / 0 |
