Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 25.02.2020, 11:35   #1
Fox78
Пользователь
 
Регистрация: 17.03.2017
Сообщений: 20
По умолчанию 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, 12:34   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,009
По умолчанию

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS