|
Поиск по индексам
Для организации индексного поиска к
набору данных должен быть подключен индекс (свойства
IndexName ИЛИ IndexFieldNames).
Метод FindKey
проводит поиск записи по заданным в параметре значениям
ключевых полей текущего индекса набора данных. В случае
успеха курсор набора данных устанавливается на найденной
записи, а метод возвращает значение True,
в противном случае — False.
Если индекс состоит из нескольких полей,
значения для поиска записываются в виде множества, причем
отсутствующие значения приравниваются к Null.
Рассмотрим простейший пример, в котором
реализован поиск по вторичному индексу в таблице CUSTOLY.DB
демонстрационной базы данных DBDEMOS. Индекс основан
на полях Last_Name И
First_Name (рис. 14.3).
В компоненте таblе1,
помимо стандартных настроек на таблицу, при помощи свойства
IndexName задан и вторичный индекс
(его имя Names). Значения для
поиска задаются в компонентах Edit1
и Edit2.
Рис. 14.3. Главная
форма проекта DemoFind
Листинг 14.1.
Секция Implementation главного
модуля Main проекта
DemoFind
implementation
{$R *.DFM}
procedure TForml.FormShow(Sender:
TObject);
begin
try
Cust.Open;
except
on E: EDBEngineError
do ShowMessage('Ошибка при открытии таблицы');
end;
end;
procedure TForml.FormClose(Sender:
TObject; var Action: TCloseAction);
begin
Gust.Close;
end;
procedure TForml.FindBtnClick(Sender:
TObject);
begin
try
if not Gust.FindKey([Editl.Text,
Edit2.Text])
then ShowMessage('Запись
не найдена');
except on E: EDatabaseError
do ShowMessage('Ошибка
поиска');
end;
end;
end.
Набор данных открывается в методе-обработчике
FormShow при открытии формы и
закрывается в методе-обработчике Formclose.
При щелчке на кнопке FindBtn
в метод FindKey передаются значения
для поиска из компонентов Edit1
И Edit2.
|