Delphi вики
Advertisement

Поиск данных

Поиск первой записи осуществляется с помощью метода Locate.

function Locate (const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions) : Boolean;

Данный метод имеет следующие параметры:

Параметр
Описание

KeyFields

Задает поле или список полей, по которым ведется поиск. Если имеется несколько полей, их разделяют точкой с запятой.

KeyValues

Является вариантным массивом, в котором задаются критерии поиска. При этом первое значение KeyValues ставится в соответствие с первым полем, указанным в KeyFields. Второе - со вторым, и так далее.

Options

  • loCaseInsensitive - поиск ведется без учета высоты букв, то есть, считаются одинаковыми строки "строка", "Строка" или "СТРОКА".
  • loPartialKey - запись будет удовлетворять условию, если ее часть содержит искомый текст. То есть, если мы ищем "ст", то удовлетворять условию будут "строка", "станция", "стажер" и т.п.
  • Пустой набор [] указывает, что настройки поиска игнорируются. То есть, строка ищется "как есть".

Пример использования метода:

ADOTable1.Locate('Фaмилия', Editl.Text, []);
ADOTable1.Locate('Фaмилия;Имя', VarArrayOf ( [ 'Иванов ' , 'Иван']), [loCaseInsensitive]);

Фильтрация данных

Для фильтрации используется следующая конструкция:

Выгрузка всех записей таблицы:

 ADOTable1.Filtered:=false;
 ADOTable1.Filter:='Параметры фильтра';
 ADOTable1.Filtered:=true;

Параметры фильтра можно описать тремя способами:

 ADOTable1.Filter:='[Имя поля] LIKE '+ '''' + 'Искомый текст' + '%' + '''';
 ADOTable1.Filter:='[Имя поля] LIKE '+ QuotedStr('Искомый текст'+ '%');
 ADOTable1.Filter:='[Имя поля] LIKE '+ #39 + 'Искомый текст' + '%' + #39;

Знак % вначале, означает, что до 'Искомый текст' может быть любое значение. Если % в конце, значит что ищем данные, которые начинаются с 'Искомый текст'. Если % с двух сторон, то мы ищем любое вхождение 'Искомый текст'. Искомый текст всегда должен быть обрамлён одинарными кавычками (').
Если в имени поля используются только латинские буквы, цифры и знак подчёркивания, то квадратные скобки можно опустить:

 ADOTable1.Filter:='FieldName LIKE '+ QuotedStr('Искомый текст'+ '%');

Для фильтрации по двум полям Параметр фильтрации должен выглядеть следующим образом:

 ADOTable1.Filter:='FieldName1 LIKE ' + QuotedStr('Искомый текст 1' + '%') + ' AND ' +
                   'FieldName2 LIKE ' + QuotedStr('Искомый текст 2' + '%') + ' AND ' +
                   'FieldName3 LIKE ' + QuotedStr('Искомый текст 3' + '%');

Можно использовать любые логические операторы: and, or, not, xor.

Удаление записи

Для удаления текущей записи

ADOTable.Delete;
Advertisement