powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нбольшое наблюдение
20 сообщений из 20, страница 1 из 1
Нбольшое наблюдение
    #32167629
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда порядок важен...

Dim rst As ADODB.Recordset
Dim ss As Long
Set rst = New ADODB.Recordset
Set rst = Me.RecordsetClone
rst.Find "ind=" & ххххх , , adSearchForward, 0
ss = rst.Bookmark
rst.Close
Set rst = Nothing
Me.Bookmark = ss



Dim rst As ADODB.Recordset
Dim ss As Long
Set rst = New ADODB.Recordset
Set rst = Me.RecordsetClone
rst.Find "ind=" & ххххх , , adSearchForward, 0
Me.Bookmark = rst.Bookmark
rst.Close
Set rst = Nothing

два варианта логически одинаковы и оба работают, но...
первый более правильный. заметно на ленточных формах.
первый ведет себя тоно так же как и в MDB.
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32167655
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim ss As Long
ну никак не может
быть long
только variant
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32167661
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Хам трамвайный
кусок из работающей проги........ ADP ......
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32167669
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отвечаю
long может иметь от -2 147 483 648 до 2 147 483 647
а закладки принимают значение от 0 до 4 294 967 295
вот и думай
естественно что все работает
просто пока попадаешь
в диапазон
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32167678
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раньше (если меня не глючит) если перемeнная не Variant акес ругался, при попытки присвоить значение закладки? Да, и почему-то сейчас я могу видеть значение закладки, а раньше (ДАО и акес97) не мог. Или у меню глюки либо....
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32167705
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Хам Т.
если уменя число записей будет больше 2 147 483 647 тогда конечно я влип.....
а с Long работает быстрее. сам ГЕТЦ советует по меньше использовать Variant
2Виктор
ДА теперь можно видеть значение закладки !
Гетц стр. 234 , если у нас книги одинаковые...
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32167721
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закладка не должна быть Long, и число записей тут не при чем. Даже не думай что оно по порядку нумеруется.
Если не хочешь Variant - используй String
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32167732
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по Гетцу
для получения ссылки на эту запись можно считать в переменную типа Variant значения свойства Bookmark объекта Recordset, представляющую собой целое число длиной 4 байта (Long integer).
ну и в конце есть замечание...
так что огграничение на использование Long только число записей. даже если это не по порядку то всё равно перекрывает реальный объем памяти (это все-таки какая-то привязка к адресу в памяти).

вообще не в Long дело а в порядке записи операторов для RecordsetClone .
для номальной работы нужно сначала закрыть
rst.Close
Set rst = Nothing
Виктор уже об этом писал - что делает это типа по интуиции или на всякий случай --- а надо обязательно.
а потом использовать сохранёное значение Bookmark.
хотя из смысла Clone этого не видно
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32167738
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще раз повторяю для тех кто в танке
Код: plaintext
Не хочешь использовать Variant - используй String

Или ты думаешь что 4 байта в стринг не влезут?
Про Long можешь забыть. И про количество записей тоже. Если ты конечно не хочешь писать программы которые "иногда работают да?"
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32167748
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Лох П.
ну ка с тобой не согласиться.
конечно ты прав.

просто тут об использовании RecordsetClone основа.
А есть еще "глюк "? с Recordset который еще не решили . может это и натолкнет на решение глюка.
мне в ближайшие дни аналогичное нуда здилать. хочется чтоб грабли были убраны, мест для шишек ужо мало...
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32168042
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Лох
беру свои слова о согласии обратно. буду спорить..
если в ADO Boormark имеет формат 4 байта (за эту информацию Гетц наверно отвечает) , а это подтвеждается косвенно тем , что Bookmark можно наблюдать, то и хранить это можно в любом виде главное, ЧТОБ было не мене 4 байт. Long для этого подходит.
а далее ошибка Гетца стр. 235 верхнее примечание (цитировать лень) .
знак Long это условность которая используется в математических операциях и операциях сравнения. если я заношу в переменную значение Bookmark, то складыват или делать что-то математическое с ним я заранее не намерен.
я просто использую эту переменную как 4 байта памяти, я записал 4 байта , потом прочитал. что записа- то и прочитал.
а если при просмотре в отладчике отображается отрицательное число - так это обработчик интерпритирует переменную Long так как положено. он не знает, что я вней храню, и это не значит, что закладка имеет отрицательное значение. если я в Long занес Hex FFFFFFFF это значит что мне просто так удобно хранить 32 бита .
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32168155
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если я заношу в переменную значение Bookmark
Остается понадеятся, что VB не сделает неявного преобразования типов...
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32168271
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2вадя
>Виктор уже об этом писал - что делает это типа по интуиции или на всякий случай --- а надо обязательно

Не по интуиции - а по привычке. По-интуиции бабы мужиков выбирают
И я писал о том, что не очень надеюсь на корректное поведение VBA при выходе из области видимости перемнных. Простой пример (не помню приводил ли)- собственный модуль класса для работы с формами. Устнановка в Nothing всех ссылок на объектные переменные в принудительном порядке дало выигрыш в 100-ю килобайт ОП при закрытии класса (а ведь ссылки в этом случаее должны освободиться сами, чего не было к сожалению ("мусорщик" филонит :) ), да и модуль стал вести себя более "правильно", исчезли некотрые не приятные ошибки. А при работе с рекордсетами - это для меня вообще правило: Закрыть и Уничтожить. Явно. Только в демонстарционных примерах могу дать слабинку :)
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32168766
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Senin Viktor
А при работе с рекордсетами - это для меня вообще правило: Закрыть и Уничтожить.

а вот с этим заявлением в такой категоричной форме я не соглашусь
если использовать
для ADP/ADO
set rs=me.recordset
....
rs.close --- ни вкоем случае!!!!!
set rs=nothing
происходит какя то связь с основным рекордсетом
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32168773
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Звкрывать надо, истессно, то, что открывали. Если было OpenRecordset, то надо Close, а если нет, то на нет и суда нет.
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32168782
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Саныч
ну да !
для RecordsetClone ты тоже делаешь Open...
а закрыть то нада обязательна
(ADP/SQL)
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32168809
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2вадя
>А при работе с рекордсетами - это для меня вообще правило: Закрыть и Уничтожить.
>>а вот с этим заявлением в такой категоричной форме я не соглашусь

Можно подумать я написал создать и сразу уничтожить. Во всем должен смысл.

>происходит какя то связь с основным рекордсетом

В mdb ничего подобного нет.
Если сделать
Set rs=Me.recordset

...

rs.close; set rs=nothing
ничего не будет - rs -это всего лишь "указатель" на рекодсет формы - и при его закрыти иничего не происходит, кроме как уничтожение лишнего указателя (проверенно на mdb)
В твоем случае (не проверял), очевидно, происходит типа
Me.Recordset.Close
Set Me.Recordset = Nothing
Хотя еще раз повторю не проверял и, если честно, - с трудом вериться. Рано или поздно rs выйдет из области видимости и уничтожиться - тогда что?

Приведи пример поподробнее. Если это вылезла очередная пакасть от микромягких при связке акес+сиквел, то надо морально готовиться.. :)
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32168817
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Сенин Виктор
А с какой радости если сделать
Код: plaintext
1.
2.
Set rs=Me.recordset 
... 
rs.close; set rs=nothing 

то rs не будет закрыт? Ну указатель, ну и что. Если на рекордсет (обычный ADO-шный) сделать две ссылки и через одну из них его закрыть - то и через другую получим уже закрытый рекордсет. Видимо, Me.Recordset ни фига не обычный рекордсет. Жаль что нигде не написано чем же он необычен.
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32168878
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Лоху

Что-то я не понял твоего возмущения: "А с какой радости если сделать...то rs не будет закрыт?" Будет закрыт rs. Почему не будет?

По поводу твоего замечания "сделать две ссылки и через одну из них его закрыть - то и через другую получим уже закрытый рекордсет."
Тут ты прав - просто меня ввело в заблуждение следующее: хотя Me.Recodset будет закрыт (чего я и не проверил) , но с формой можно и далее работать: фильтровать, искать. На основе этого явления и я сделал скорополительный вывод, о том что с рекодсетом формы ничего не случилось :(

если же сделать напрямую
Me.Recordset.Close
Set Me.Recordset = Nothing
То все действительно по закрывается и форма станет unbound.
Фигня какая-та.
...
Рейтинг: 0 / 0
Нбольшое наблюдение
    #32169000
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да . мои опыты показывают , что где-то, что-то похожее.
у Гетца есть нечто подобное Лоховскому высказыванию но где не могу найти, да там и очень-то много. так вскользь.

а я накопал еще несколько странностей может кого на мысль натолкнет.
есть:
форма главная ГФ. вней подформа ПФ. в ПФ все прибамбасы с выделением цветом при переходах , при условиях(ну наверно помните я пытал форум)
в ПФ все работает.
В ГФ есть поле со списком , при выборе из этого поля происходит следующее
1)через добавочное поле отключаю выделение цветом в ПФ, т.е. на LostFocus, GetFocus отменяю записи в поля отвечающие за работу с цветовыми полями (при добавлении эти события срабатывают)
2) помощью Recordset_а добавляется новая запись в ПФ.
3)включаю выделение цветом.
4) спомощью ПФ.RecordsetClone
делаю Movelast.
ss=Bookmark
close
nothing
ПФ.Bookmark=ss
5)ПФ.SetFocus

работает. запись появляется сама - автоматом. ПФ редактируется, как до добавления записи.

НО! при каждом действии происходит многократное мерцание ПФ, что не есть нужное.
Shiaft+F9 возвращает все к нормальному режиму.
Вопрос : мелькание (обновление) зависти от смены какого-то режима вормы. как это исправить?
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нбольшое наблюдение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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