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

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


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



Содержание раздела