![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как организовать циклический поиск по таблице? [D5, Paradox]
Anics © (2004-03-02 10:32:00)Пусть есть таблица сотрудников, и там 10 человек с фамилией "Иванов". Как можно организовать поиск таким образом, чтобы при первом поиске позиционировался первый "Иванов", при втором - второй "Иванов" и так далее по циклу?
Соловьев (2004-03-02 13:46:00) [1]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1076933565&n=1
посмотреть то что я предложил
Anatoly Podgoretsky (2004-03-02 13:36:00) [2]Или GotoNearest или FindNearest в зависимости от индекса
Alex_Bredin (2004-03-02 13:35:00) [3]в добавление к
> Anatoly Podgoretsky © (02.03.04 13:11) [7]
Лучше использовать SetKey,GotoNearest вместо Locate(для индексированных полей)
Anatoly Podgoretsky (2004-03-02 13:11:00) [4]Anics (02.03.04 10:36) [2]
Дальше два оптимальных варианта
1. фильтр по фамилии
2. Активируем индекс, Locate и далее последовательный поиск (Next) пока фамилия равна.
3. неоптимальный вариант, Locate и далее последовательный поиск до конца набора с проверкой на совпадение
SPIRIT (2004-03-02 13:01:00) [5]
> Voland2000 (02.03.04 12:58) [5]
и по времени это раз в 5 долльше чем [4] .
Voland2000 (2004-03-02 12:58:00) [6]Не знаю как вы, а я сделал по своему:
1)Проходим каждую запись таблицы.
2)Функцией pos() ищем нужную строку.
VAleksey (2004-03-02 10:46:00) [7]1) Навигация по условиям фильтра в неотфильтрованном НД. DataSet.FindFirst, DataSet.FindNext. Фильтр можно установить с помощью св-в Filter или события OnFilterRecord - DataSet - a. (Советую OnFilterRecord)
2) Сделать запрос и получить списко идентификаторов (ID) для всех Ивановых в таблице. Затем простой Locate по значениям из этого списка.
3) Взять dbGridEh где реадизована эта возможность.
malkolinge (2004-03-02 10:39:00) [8]Если на клиенте - наложи фильтр. Name = 'Иванов'.
Anics (2004-03-02 10:36:00) [9]Индекс существует, что дальше?
Alex_Bredin (2004-03-02 10:35:00) [10]создайте индекс по этому полю