Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2020, 10:35   #1
Fox78
Пользователь
 
Регистрация: 17.03.2017
Сообщений: 28
По умолчанию ClientDataSet - Найти далее

Добрый день!
Использую ClientDataSet, DBGrid, DataSource.

Несколько дней уже пытаюсь сделать поиск в таблице по типу "Найти далее".
Т.е. нашли первое совпадение по ключевому слову, далее необходимо от курсора продолжить поиск по тому же ключевому слову.

Простым перебором строк от начала до конца таблицы и их сравнением с искомым получается очень долгий процесс.

Функция Locate ищет очень быстро, но только первое совпадение, дальше не просматривает таблицу.

Код:
MainForm.CDS.Locate('List1','key',[])
Пробовал использовать:

Код:
MainForm.CDS.IndexFieldNames:='List1';
MainForm.CDS.EditKey;
MainForm.CDS.FieldByName('List1').AsString := 'key';
 if not MainForm.CDS.GotoKey then ShowMessage('Совпадения не найдено!');
Но результат тот же - ищет до первого совпадения.

Помогите советом, как реализовать поиск по типу "Найти далее"?
Fox78 вне форума Ответить с цитированием
Старый 25.02.2020, 11:34   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

1. убрать все лишнее.
найти (и показать) все нужного образца(вида) и только их.
DataSet .Filter
DataSet. Filtered
DataSet. OnFilterRecord
+F1 +SeeAlso +поиск
для начала достаточно и первых двух.

2. сгруппировать
получить в нужном порядке( чтобы все "подходящие" были друг за дружкой )
и тогда смотреть можно Locate +Next
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C#] Дан массив.Создать новый массив, в который поместить элементы так: первым поместить макс. элемент исходного массива, затем мин; далее макс и мин из оставшихся и так далее PickaBuu Помощь студентам 5 18.12.2017 07:49
Найти и вывести на экран максимальное, минимальное, среднее арифметическое и так далее.. Exelol Помощь студентам 13 04.09.2013 08:45
организация поиска "Найти далее" в Table lalochka C/C++ Базы данных 3 13.11.2011 17:51
Поиск текста: Найти далее fezilk24 Общие вопросы Delphi 3 17.11.2009 20:47