Для организации индексного поиска к набору данных должен быть подключен индекс (свойства
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.
Знаете ли Вы, что такое "Большой Взрыв"? Согласно рупору релятивистской идеологии Википедии "Большой взрыв (англ. Big Bang) - это космологическая модель, описывающая раннее развитие Вселенной, а именно - начало расширения Вселенной, перед которым Вселенная находилась в сингулярном состоянии. Обычно сейчас автоматически сочетают теорию Большого взрыва и модель горячей Вселенной, но эти концепции независимы и исторически существовало также представление о холодной начальной Вселенной вблизи Большого взрыва. Именно сочетание теории Большого взрыва с теорией горячей Вселенной, подкрепляемое существованием реликтового излучения..." В этой тираде количество нонсенсов (бессмыслиц) больше, чем количество предложений, иначе просто трудно запутать сознание обывателя до такой степени, чтобы он поверил в эту ахинею. На самом деле взорваться что-либо может только в уже имеющемся пространстве. Без этого никакого взрыва в принципе быть не может, так как "взрыв" - понятие, применимое только внутри уже имеющегося пространства. А раз так, то есть, если пространство вселенной уже было до БВ, то БВ не может быть началом Вселенной в принципе. Это во-первых. Во-вторых, Вселенная - это не обычный конечный объект с границами, это сама бесконечность во времени и пространстве. У нее нет начала и конца, а также пространственных границ уже по ее определению: она есть всё (потому и называется Вселенной). В третьих, фраза "представление о холодной начальной Вселенной вблизи Большого взрыва" тоже есть сплошной нонсенс. Что могло быть "вблизи Большого взрыва", если самой Вселенной там еще не было? Подробнее читайте в FAQ по эфирной физике.