Поиск по части текущего индекса
Если это необходимо, можно осуществлять поиск по частичному множеству индексных полей. Тогда поиск будет производиться не по всем полям данного индекса, а по их части. Для этого необходимо с помощью свойства 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] ) ;