|
|
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
когда порядок важен... 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:04 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
Dim ss As Long ну никак не может быть long только variant ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:33 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
2Хам трамвайный кусок из работающей проги........ ADP ...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:38 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
отвечаю long может иметь от -2 147 483 648 до 2 147 483 647 а закладки принимают значение от 0 до 4 294 967 295 вот и думай естественно что все работает просто пока попадаешь в диапазон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:48 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
Раньше (если меня не глючит) если перемeнная не Variant акес ругался, при попытки присвоить значение закладки? Да, и почему-то сейчас я могу видеть значение закладки, а раньше (ДАО и акес97) не мог. Или у меню глюки либо.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 18:59 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
2Хам Т. если уменя число записей будет больше 2 147 483 647 тогда конечно я влип..... а с Long работает быстрее. сам ГЕТЦ советует по меньше использовать Variant 2Виктор ДА теперь можно видеть значение закладки ! Гетц стр. 234 , если у нас книги одинаковые... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 19:54 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
Закладка не должна быть Long, и число записей тут не при чем. Даже не думай что оно по порядку нумеруется. Если не хочешь Variant - используй String ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 20:28 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
по Гетцу для получения ссылки на эту запись можно считать в переменную типа Variant значения свойства Bookmark объекта Recordset, представляющую собой целое число длиной 4 байта (Long integer). ну и в конце есть замечание... так что огграничение на использование Long только число записей. даже если это не по порядку то всё равно перекрывает реальный объем памяти (это все-таки какая-то привязка к адресу в памяти). вообще не в Long дело а в порядке записи операторов для RecordsetClone . для номальной работы нужно сначала закрыть rst.Close Set rst = Nothing Виктор уже об этом писал - что делает это типа по интуиции или на всякий случай --- а надо обязательно. а потом использовать сохранёное значение Bookmark. хотя из смысла Clone этого не видно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 21:05 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
И еще раз повторяю для тех кто в танке Код: plaintext Или ты думаешь что 4 байта в стринг не влезут? Про Long можешь забыть. И про количество записей тоже. Если ты конечно не хочешь писать программы которые "иногда работают да?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 21:20 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
2Лох П. ну ка с тобой не согласиться. конечно ты прав. просто тут об использовании RecordsetClone основа. А есть еще "глюк "? с Recordset который еще не решили . может это и натолкнет на решение глюка. мне в ближайшие дни аналогичное нуда здилать. хочется чтоб грабли были убраны, мест для шишек ужо мало... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2003, 21:52 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
2Лох беру свои слова о согласии обратно. буду спорить.. если в ADO Boormark имеет формат 4 байта (за эту информацию Гетц наверно отвечает) , а это подтвеждается косвенно тем , что Bookmark можно наблюдать, то и хранить это можно в любом виде главное, ЧТОБ было не мене 4 байт. Long для этого подходит. а далее ошибка Гетца стр. 235 верхнее примечание (цитировать лень) . знак Long это условность которая используется в математических операциях и операциях сравнения. если я заношу в переменную значение Bookmark, то складыват или делать что-то математическое с ним я заранее не намерен. я просто использую эту переменную как 4 байта памяти, я записал 4 байта , потом прочитал. что записа- то и прочитал. а если при просмотре в отладчике отображается отрицательное число - так это обработчик интерпритирует переменную Long так как положено. он не знает, что я вней храню, и это не значит, что закладка имеет отрицательное значение. если я в Long занес Hex FFFFFFFF это значит что мне просто так удобно хранить 32 бита . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2003, 11:19 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
если я заношу в переменную значение Bookmark Остается понадеятся, что VB не сделает неявного преобразования типов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 00:14 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
2вадя >Виктор уже об этом писал - что делает это типа по интуиции или на всякий случай --- а надо обязательно Не по интуиции - а по привычке. По-интуиции бабы мужиков выбирают И я писал о том, что не очень надеюсь на корректное поведение VBA при выходе из области видимости перемнных. Простой пример (не помню приводил ли)- собственный модуль класса для работы с формами. Устнановка в Nothing всех ссылок на объектные переменные в принудительном порядке дало выигрыш в 100-ю килобайт ОП при закрытии класса (а ведь ссылки в этом случаее должны освободиться сами, чего не было к сожалению ("мусорщик" филонит :) ), да и модуль стал вести себя более "правильно", исчезли некотрые не приятные ошибки. А при работе с рекордсетами - это для меня вообще правило: Закрыть и Уничтожить. Явно. Только в демонстарционных примерах могу дать слабинку :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 10:46 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
2Senin Viktor А при работе с рекордсетами - это для меня вообще правило: Закрыть и Уничтожить. а вот с этим заявлением в такой категоричной форме я не соглашусь если использовать для ADP/ADO set rs=me.recordset .... rs.close --- ни вкоем случае!!!!! set rs=nothing происходит какя то связь с основным рекордсетом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 16:54 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
Звкрывать надо, истессно, то, что открывали. Если было OpenRecordset, то надо Close, а если нет, то на нет и суда нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 17:00 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
2Саныч ну да ! для RecordsetClone ты тоже делаешь Open... а закрыть то нада обязательна (ADP/SQL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 17:06 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
2вадя >А при работе с рекордсетами - это для меня вообще правило: Закрыть и Уничтожить. >>а вот с этим заявлением в такой категоричной форме я не соглашусь Можно подумать я написал создать и сразу уничтожить. Во всем должен смысл. >происходит какя то связь с основным рекордсетом В mdb ничего подобного нет. Если сделать Set rs=Me.recordset ... rs.close; set rs=nothing ничего не будет - rs -это всего лишь "указатель" на рекодсет формы - и при его закрыти иничего не происходит, кроме как уничтожение лишнего указателя (проверенно на mdb) В твоем случае (не проверял), очевидно, происходит типа Me.Recordset.Close Set Me.Recordset = Nothing Хотя еще раз повторю не проверял и, если честно, - с трудом вериться. Рано или поздно rs выйдет из области видимости и уничтожиться - тогда что? Приведи пример поподробнее. Если это вылезла очередная пакасть от микромягких при связке акес+сиквел, то надо морально готовиться.. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 17:25 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
2 Сенин Виктор А с какой радости если сделать Код: plaintext 1. 2. то rs не будет закрыт? Ну указатель, ну и что. Если на рекордсет (обычный ADO-шный) сделать две ссылки и через одну из них его закрыть - то и через другую получим уже закрытый рекордсет. Видимо, Me.Recordset ни фига не обычный рекордсет. Жаль что нигде не написано чем же он необычен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 17:32 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
2Лоху Что-то я не понял твоего возмущения: "А с какой радости если сделать...то rs не будет закрыт?" Будет закрыт rs. Почему не будет? По поводу твоего замечания "сделать две ссылки и через одну из них его закрыть - то и через другую получим уже закрытый рекордсет." Тут ты прав - просто меня ввело в заблуждение следующее: хотя Me.Recodset будет закрыт (чего я и не проверил) , но с формой можно и далее работать: фильтровать, искать. На основе этого явления и я сделал скорополительный вывод, о том что с рекодсетом формы ничего не случилось :( если же сделать напрямую Me.Recordset.Close Set Me.Recordset = Nothing То все действительно по закрывается и форма станет unbound. Фигня какая-та. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 18:02 |
|
||
|
Нбольшое наблюдение
|
|||
|---|---|---|---|
|
#18+
да . мои опыты показывают , что где-то, что-то похожее. у Гетца есть нечто подобное Лоховскому высказыванию но где не могу найти, да там и очень-то много. так вскользь. а я накопал еще несколько странностей может кого на мысль натолкнет. есть: форма главная ГФ. вней подформа ПФ. в ПФ все прибамбасы с выделением цветом при переходах , при условиях(ну наверно помните я пытал форум) в ПФ все работает. В ГФ есть поле со списком , при выборе из этого поля происходит следующее 1)через добавочное поле отключаю выделение цветом в ПФ, т.е. на LostFocus, GetFocus отменяю записи в поля отвечающие за работу с цветовыми полями (при добавлении эти события срабатывают) 2) помощью Recordset_а добавляется новая запись в ПФ. 3)включаю выделение цветом. 4) спомощью ПФ.RecordsetClone делаю Movelast. ss=Bookmark close nothing ПФ.Bookmark=ss 5)ПФ.SetFocus работает. запись появляется сама - автоматом. ПФ редактируется, как до добавления записи. НО! при каждом действии происходит многократное мерцание ПФ, что не есть нужное. Shiaft+F9 возвращает все к нормальному режиму. Вопрос : мелькание (обновление) зависти от смены какого-то режима вормы. как это исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2003, 20:18 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32168809&tid=1681402]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 391ms |

| 0 / 0 |
