Метод Lookup, в отличие от Locate, не меняет положение курсора в таблице. Вместо этого он возвращает значения некоторых ее полей. Причем в отличие от Locate, этот метод осуществляет поиск лишь на точное соответствие. Такой способ поиска востребован реже, однако в некоторых случаях этим методом очень удобно пользоваться.
Рассмотрим работу метода Lookup на примере нашей программы.
Для поиска воспользуемся кнопкой с надписью “Найти”, расположенной в верхней части главной формы. Пользователь вводит в поле Edit1 какую то фамилию и нажимает кнопку “Найти”. Результаты выводим на экран функцией ShowMessage().
Итак, в окне главной формы дважды щелкните по кнопке “Найти”, создавая событие onClick, и впишите следующий листинг:
{щелкнули по кнопке Найти}
procedure TfMain.BitBtn1Click(Sender: TObject);
Var
MyLookup: Variant; //для получения результата
S: String; //для отчета
Begin
//получаем результат:
myLookup:= fDM.TLichData.Lookup(‘Фамилия‘, Edit1.Text,
‘Фамилия;Имя;Отчество;Образование’);
//проверяем, не Null ли это:
if VarType(myLookup) = varNull then
|
|
ShowMessage(‘Сотрудник с такой фамилией не найден!’)
else if VarType(myLookup) = varEmpty then
ShowMessage(‘Запись не найдена!’)
//если это массив, то из его элементов собираем
//многострочную строку:
Else if VarIsArray(myLookup) then begin
s:= myLookup[0] + #13 + myLookup[1] + #13 +
myLookup[2] + #13 + myLookup[3];
//и выводим ее на экран:
ShowMessage(s);
End; //else if
end;
Обратите внимание какой фрагмент кода вставлять и что данный код уже содержит begin и end; которые есть в процедуре, поэтому их необходимо удалить из процедуры.
Перед проверкой необходимо отключить предыдущий метод поиска.
Комментарии достаточно подробны, чтобы вы разобрались с кодом. Сохраните проект, скомпилируйте его и запустите. Опробуйте этот способ поиска.
Фильтрация записей в базе данных Delphi
Фильтрацию данных применяют не реже чем поиск. Разница в том, что при поиске данных пользователь видит все записи таблицы, при этом курсор либо переходит к искомой записи, либо он получает данные этой записи в виде результата работы функции. При фильтрации пользователь видит только те записи, которые удовлетворяют условиям фильтра, остальные записи становятся скрытыми. Таким образом искать нужные данные проще.
Фильтрация осуществляется при помощи свойства Filter и события onFilterRecord. Рассмотрим основные способы фильтрации записей.