Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вTTable перейти к записи с оределенным номером??? [D6, dBase, FoxPro]


Nikkkkk ©   (2003-08-15 09:44:00) 

Уважаемые мастера,Как при помощи компонента TTable перейти к записи с заданным номером??? Для чего мне это нужно? Мне необходимо найти запись по дате, пробовал использовать Locate, работает медленно. Хочу попробовать организовать поиск по принципу угадывания числа..
Спасибо всем ответившим.


Nikolay M.   (2003-08-15 18:06:00) [1]


> VAleksey © (15.08.03 11:39) [5]
> Вот выдержка из хелпа в Delphi 5. Если вы имеете более надежный
> источник, то прошу указать.

Пардон, я говорил про ClientDataSet.


MsGuns   (2003-08-15 17:51:00) [2]

Пардон ! С последующим FindKey по найденному в запросе идентификатору.

ЗЫ. Отвлекли ;)


MsGuns   (2003-08-15 17:49:00) [3]

А что, просто запросом (Select ... where ...) не позволяет политика партии ?


sniknik   (2003-08-15 16:32:00) [4]

Nikkkkk (15.08.03 09:57) [3]
> Индекс создавать нельзя, работаю в активных базах используемых в других программах...
переходи на ADO подходит как нельзя лутше. после чтения в локальный рекордсет наложение индекса (проперти Sort), пройдет практически незаметно для оригинальной таблицы...
а уж по индексированному полю поиск, "быстрее не бывает".


Mike Kouzmine   (2003-08-15 16:11:00) [5]

Вопрос звучит так:
Уважаемые мастера,Как при помощи компонента TTable перейти к записи с заданным номером???
Вопросы есть? А для чего это ему надо, это следующий вопрос.


KPP   (2003-08-15 15:46:00) [6]

>Mike Kouzmine © (15.08.03 15:31) [7]

В вопрос звусит так:
"...Мне необходимо найти запись по дате, пробовал использовать Locate, работает медленно. ..."

как можно такое сделать "простым присваиванием св-ву recno номера нужной записи"?


Mike Kouzmine   (2003-08-15 15:31:00) [7]

Для перехода на номер записи никакие индексы не нужны. Работает простое присваивание св-ву recno номера нужной записи


KPP   (2003-08-15 13:23:00) [8]

Ищу запись при помощи Locate без индексов - в таблице с 10000 записей работает практически незаметно
перед поиском отключи вычисляемые поля, сделай таблице
DisableControls; а после поиска EnableControls;


VAleksey   (2003-08-15 11:39:00) [9]


> Nikolay M. © (15.08.03 09:46)

Вот выдержка из хелпа в Delphi 5. Если вы имеете более надежный источник, то прошу указать.

Locate uses the fastest possible method to locate matching records. If the search fields in KeyFields are indexed and the index is compatible with the specified search options, Locate uses the index. Otherwise Locate creates a filter for the search.

Т.е. если Locate в каком - то частном случае не использует индекс, то это не значит, что он его вообще не использует.


Mike Kouzmine   (2003-08-15 10:23:00) [10]

t.recno := x;


Nikkkkk   (2003-08-15 09:57:00) [11]

Индекс создавать нельзя, работаю в активных базах используемых в других программах...


Виталя   (2003-08-15 09:48:00) [12]

Table.First;
for i:=1 to Nomer do Table.Next;
А вообще отсортируй по дате тогда Locate работать будет быстрей


Nikolay M.   (2003-08-15 09:46:00) [13]


> пробовал использовать Locate, работает медленно

Начиная с пятерки Locate не использует индексы. Засовывай имя поля в IndexFieldNames и ищи FindKey-ем.


Наверх

Титульная страница Поиск, карта сайта Написать письмо