Delphi 3 и создание приложений баз данных


8.3.6. Поиск по части текущего индекса


Если это необходимо, можно осуществлять поиск по частичному множеству индексных полей. Тогда поиск будет производиться не по всем полям данного индекса, а по их части. Для этого необходимо с помощью свойства property KeyFieldCount: Integer; указать, сколько начальных полей индекса будут использоваться при поиске Установка значения свойства KeyFieldCount актуальна только в случае использования методов GoToKey и GoToNearest. Как осуществить поиск по частичному множеству индексных полей для методов Find и FmdNearest, см ниже.

Пример.

Пусть при текущем индексе по полям 'Doljnost; FIO' необходимо осуществить поиск по должности, и по 'должности; ФИО'. Условия поиска будем вводить в Editi (должность) и Edit2 (ФИО) Результаты работы приводимого ниже кода показаны на рис 8.20 а и 8 20 б.

procedure TForm1.OneFieldFindButtonClick(Sender: T0bject);

begin

// поиск по 1 полю индекса

WITH Table1 do begin

SetKey;

KeyFieldCount := 1;

Table1Doljnost.Value := Editl.Text;

GoToNearest;

END; // with

end;

procedure TForm1. FullKeyFmfButtonClick (Sender : TObject);

begin

// поиск по 2 полям индекса

WITH Table1 do begin

SetKey;

KeyFieldCount := 2; II на всякий случай, восстановим

Table1Doljnost.Value := Edit1.Text;

Table1FIO.Value := Edit2.Text;

GoToNearest;

END; // with

end;

При этом есть ограничения- подмножество полей индекса должно быть в полном индексе непрерывным, т.е при индексе из 4 полей можно осуществить поиск по 1-му, 2-му, 3-му полям одновременно и нельзя по 1-му, 4-му, 6-му полям.

При использовании методов FindKey и FindNearest необходимости в использовании KeyFieldCount нет; для поиска по частичному соответствию достаточно указать в списке часть полей данного индекса:

// поиск по одному полю из двух

WITH Tablel do

FindNearest ( [Editl.Text] ) ;

// поиск по двум полям из двух:

WITH Tablel do

FindNearest( [Editl.Text, Edit2.Text] ) ;




Начало  Назад  Вперед



Книжный магазин