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

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

Быстрый поиск при помощи TTable [D6, dBase, FoxPro]


Страницы:   1 2

Nikkkkk ©   (2003-08-18 15:46:00) 

Уважаемые мастера,
как осуществить быстрый поиск записи по заданному условию. Какая команда работает быстрее всего. Если не трудно, небольшой пример.
Заранее спасибо.


Nikkkkk   (2003-08-18 17:40:00) [21]


> Соловьев © (18.08.03 17:35) [14]
> SQL запросами можешь пользоваться.

Могу, умею, и постоянно пользуюсь. Но в моей задаче возникла необходимость работать с базами данных FoxPRO 2.5 (Dos). Так что полный доступ пришлось отключить, т.к. при редактировании записей, TQuery создает свой индекс, и изменения из под FoxPRO не видны. TTable работает пока без глюков. А при попытке сделать запрос к таблице(открытой только для чтения) на сервере, выдает ошибку: Can not acces dyrectory. и т.д.


koks   (2003-08-18 17:37:00) [22]

повторюсь - ты сам придумываешь себе сложности... Все проще. Использую TQuery.


Соловьев   (2003-08-18 17:35:00) [23]

SQL запросами можешь пользоваться.


Nikkkkk   (2003-08-18 17:33:00) [24]


> бред. может быть только наоборот.

это о чем ???


Соловьев   (2003-08-18 17:32:00) [25]


> SQL запросами пользоваться не могу, таблицы открыты только
> для чтения

бред. может быть только наоборот.


Nikkkkk   (2003-08-18 17:31:00) [26]


> Соловьев © (18.08.03 17:26) [10]
> select t1.*
> from table t1
> where t1."date" between :p1 and :p2

SQL запросами пользоваться не могу, таблицы открыты только для чтения, как справочники...
SORRY
за то что не сказал раньше
необходима какая то процедура, которую поддерживает TTable, связанная и индексом...


Соловьев   (2003-08-18 17:26:00) [27]

select t1.*
from table t1
where t1."date" between :p1 and :p2


Nikkkkk   (2003-08-18 17:24:00) [28]


> создал бы для всех записей поле (строковое в твоем случае),
> в которое бы автоматом при изменении-добавлении записи заносилось
> значение, но которому ты будешь их отбирать (твое индексное
> выражение).
> ну а дальше - фильтр...
> И вообще - 500 000 записей - это мало...
>
> Я вообще очень настороженно отношусь к фильтрам по выражению
> в BDE, да еще к FoxPro-шным таблицам.

я не могу добавлять никакие поля в таблицу, по условию моей задачи, потому что в них постоянно работают другие пользователи. Мне необходимо сделать выборку из одной базы, потом по результату сделанной выборки, произвести выборку из другой таблицы, поэтому 500000 записей это я сказал примерно. На самом деле их намного больше. Индекс в этой таблице уже существует (он описан мною выше), этот индекс сортирует записи по дате ввода. Мне же необходимо перейти (как можно быстрее) на запись с датой ввода 01.месяц.год, и далее при помощи TTabe.next добраться до 31.месяц.год. Так вот, этот то самый быстрый переход у меня и занимает минуту-полторы. А мне бы хотелось узнать, нет ли какой-нибудь стандартной процедуры поиска (дипа Фоксовской seek), для быстрого перехода к первой по счету подходящей записи ???
Заранее спасибо.


koks   (2003-08-18 17:09:00) [29]

Я бы сделал так:

создал бы для всех записей поле (строковое в твоем случае), в которое бы автоматом при изменении-добавлении записи заносилось значение, но которому ты будешь их отбирать (твое индексное выражение).
ну а дальше - фильтр...
И вообще - 500 000 записей - это мало...

Я вообще очень настороженно отношусь к фильтрам по выражению в BDE, да еще к FoxPro-шным таблицам.


Nikkkkk   (2003-08-18 16:36:00) [30]

!!! ПОМОГИТЕ ПЛИИИИЗЗЗЗЗ !!!


Nikkkkk   (2003-08-18 16:26:00) [31]

Ну, чо же все замолчали, я знаю что Query ищет все и быстро, но с его помощью выбрать 20 записей из 500000 тоже не слишком быстро, как быть, подскажите мастера. Как осуществить поиск, отталкиваясь от индекса STR(GURN,3)+DTOS(DATOTG)+STR(NOMDOK,7)???


Nikkkkk   (2003-08-18 16:06:00) [32]

индекс выглядит так:
STR(GURN,3)+DTOS(DATOTG)+STR(NOMDOK,7) (FoxPro)


Nikkkkk   (2003-08-18 16:05:00) [33]

Пробую
Table1.FindNearest(["1",strtodate("01.07.03")]);
выдает ошибку:
cannot use array or field values with Expression inexes
что бы это могло занчить ???


MsGuns   (2003-08-18 15:54:00) [34]

Locate


Семен Сорокин   (2003-08-18 15:54:00) [35]

быстрее ИМХО запрос (TQuery) работает


Bob   (2003-08-18 15:52:00) [36]

Если по ключевому полю - TTable.FindNearest() прокатывае на ура


Страницы:   1 2

Наверх

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