|
|
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
//Sasha 1 Большое спасибо за совет по работе с двумя таблицами связанными реляцией 1-> многие через RecordSet. Вчера вечером разобрался и написал процедуру для заполнения отпускных дней в табеле. Работает по сравнению со старым выриантом сверхбыстро. У меня еще вопрос к уважаемым знатокам Access. Как пользоваться в рекордсете командой Seek для быстрого перехода к нужной записи.Поле должно быть индексированным. У меня поле числового типа и известно значение,по которому нужно найти запись.Как пользуясь Seek быстро перейти на нужную запись в рекордсете. Что работает быстрей в рекордсете FindFirst или Seek? Ребята,если можно то приведите небольшой примерчик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 08:40 |
|
||
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
>Что работает быстрей в рекордсете FindFirst или Seek? Seek работает в несколько раз быстрее. На таблице из 1,1 мил. Seek ищет (первый вызов) за 0,9 сек Find - 4.5 сек. (индекс уникальный) примерчик [src] Public Sub qwertr() Dim cnn As ADODB.Connection Dim rs As ADODB.Recordset 'Dim t As Long 't = timeGetTime Set cnn = CurrentProject.Connection Set rs = New ADODB.Recordset rs.CursorLocation=adUseServer rs.Index = "TextField" rs.Open "t", cnn, , , adCmdTableDirect rs.Seek "СтрокаКоторуюИщем", adSeekFirstEQ If rs.EOF Then 'не найдено Else 'найдено 'можно использовать rs.Bookmark End If 'Debug.Print (timeGetTime - t) rs.Close: Set rs = Nothing End Sub [src] курсор обязательно должен быть серверным rs.Index = "TextField" - имя индекса adCmdTableDirect -обязательно с этой константой (равной 512) При последующих вызовах Seek от 0 до 10 миллисекунд Find 4 секунды. Разы считай сам :) === Работaет только с Jet (Provider=Microsoft.Jet.OLEDB.4.0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 09:19 |
|
||
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
2 Senin Victor Спасибо большое за примерчик и за ответ на вопрос. Но использую Access 97 и DAO 3.5. Как там это осуществить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 09:46 |
|
||
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
>adCmdTableDirect -обязательно с этой константой т.е. Seek работает только с таблицами - для рекордсета с данными из нескольких таблиц (на основе запроса) Seek не подходит... //на всякий случай... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 09:50 |
|
||
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
в Ас97 set rs=openrecordset("Tab") rs.Index="id" Seek "=", 5 будет искать запись у которой id=5 при условии, что Tab проиндексирована по id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 09:51 |
|
||
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
Цены Вам нет ребята !!! Спасибо Нуф-Нуф -у за ценное замечание и Шуре_1! Моя тупая программная дохлая черепаха забегала как гепард!!! Последний тупой вопрос, у меня индекс по текстовому полю,но могу индексированное поле преобразовать в числовой тип.Сик работать быстрей будет с числовым индексом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 10:41 |
|
||
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
по идее да, но вряд ли намного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 10:44 |
|
||
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
>т.е. Seek работает только с таблицами - для рекордсета с данными из нескольких таблиц (на основе запроса) Seek не подходит Спорю на 7 енотов, что любой запрос основан на таблицах откеда и можно выудить данные (даже если есть Union) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 10:49 |
|
||
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
Эта, Виктор, спорить не могу, ибо енотов у меня нет совсем :) Но! Но при попытке в приведенном же тобой коде открыть запрос (любой запрос, даже основанный полностью на таблице) вылетает: Run-time error '-2147217867 (80040e35)' Недопустимая операция Да и потом... Не подскажешь ли как система должна открыть запрос с несколькими таблицами через ТаблДИРЕКТ? Да и в книжках что-то на эту тему было... Хде грабли? //может чего и не знаю, но грабли эти проходил - пытался искать Seek'ом в запросах. Дело бесполезное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 11:43 |
|
||
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
2Нуф-нуф >Run-time error '-2147217867 (80040e35)' Недопустимая операция >Хде грабли? А кто здесь сказал, что можно через запросы? :) Когда я говорил про 7 енотов, я имел ввиду только таблицу. Не запрос, не буханку хлеба - а таблицу. С индексами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 11:47 |
|
||
|
Прошу помощи, RecordSet -> Seek
|
|||
|---|---|---|---|
|
#18+
А ну г-о-н-и е-е-е-н-о-т-о-в! Т.е. я сказал: >т.е. Seek работает только с таблицами - для рекордсета с данными из нескольких таблиц ( на основе запроса ) Seek не подходит Ты же и сказал: >Спорю на 7 енотов, что любой запрос основан на таблицах откеда и можно выудить данные (даже если есть Union ) Union где может есть? Только в запросах может есть :) Ты сказал: >А кто здесь сказал, что можно через запросы? :) Ну так никто и не говорил... //кажется, разминулись в мыслях :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2003, 11:58 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32202649&tid=1680656]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 322ms |

| 0 / 0 |
