Эта статья посвящена поиску записи на клиенте методами FireDAC. Она основана на официальной документации
Все методы FireDAC ищут запись в локальном кэше. В зависимости от текущей сортировки, поиск записи может быть оптимизирован.
Стандартный поиск
Пример из документации
Метод Locate
1 2 3 4 5 |
FDQuery1.IndexFieldNames := 'ORDERID'; if FDQuery1.Locate('ORDERID', 10150, []) then ShowMessage('Order is found') else ShowMessage('Order is not found'); |
Также есть метод Lookup – он позволяет искать по ключевым значениям.
Расширенный поиск
Здесь используется the current dataset index
Метод LocateEx похож на Locate, но здесь больше опций, таких как поиск вперед, назад, поиск с начала или с текущей записи, поиск с использованием текстового предиката. Например,
1 2 3 4 |
if FDQuery1.LocateEx('Price >= 1000 and Price <= 2000', []) then ShowMessage('Order is found') else ShowMessage('Order is not found'); |
Есть также метод LookupEx.
Поиск с использованием фильтра
Этот подход для совместимости с BDE. Он может быть заменен методом LocateEx. Подробное описание в официальной документации.
Дополнительно
Большинство методов возвращают True, когда запись найдена. Альтернативно, приложение может проверять, свойство множества данных Found.
Также поиск не ведется в fkCalculated и fkLookup, вместо этого используйте fkInternalCalc и fkAggregate