Разработка приложений баз данных в Delphi. Шейкер Т.Д. - 49 стр.

UptoLike

Составители: 

49
Свойство KeyExclusive отвечает за включение в отфильтрованный на-
бор записей, попадающих на границу диапазона. По умолчанию
KeyExclu-
sive
имеет значение false, границы включаются в диапазон. Для исключения
из диапазона граничного значения надо присвоить
KeyExclusive значение
true. Причём для каждой границы свойство KeyExclusive устанавливается
отдельно, то есть можно одну границу включить в диапазон, а другуюнет.
Методы
EditRangeStart, EditRangeEnd работают аналогично SetRang-
eStart
и SetRangeEnd.
Ниже приведён пример фильтрации диапазона в таблице customer.db. В
этой таблице определено два индекса: главный по полю CustNo и вторичный
ByCompany по полю Company. Так как поле CustNo целочисленное, то вве-
дённые пользователем значения преобразуются к целому типу.
procedure TForm1.RadioGroup1Click(Sender:TObject);
begin
case RadioGroup1.ItemIndex of
0:Table1.IndexFieldNames:='';
1:Table1.IndexFieldNames:='Company';
end;
end;
procedure TForm1.Button5Click(Sender:TObject);
begin
Table1.CancelRange;
with Table1 do
begin
EditRangeStart;
if RadioGroup1.ItemIndex=0
then FieldByName('CustNo').AsInteger:=strtoint(Edit3.Text)
else FieldByName('Company').AsString:=Edit3.Text;
EditRangeEnd;
KeyExclusive:=false;
if RadioGroup1.ItemIndex=0
then FieldByName('CustNo').AsInteger:=strtoint(Edit4.Text)
else FieldByName('Company').AsString:=Edit4.Text;
ApplyRange;
end;
end;
При смене текущего индекса фильтрация по индексу, который был уста-
новлен ранее, перестаёт действовать, в результирующий набор включаются все
     Свойство KeyExclusive отвечает за включение в отфильтрованный на-
бор записей, попадающих на границу диапазона. По умолчанию KeyExclu-
sive имеет значение false, границы включаются в диапазон. Для исключения
из диапазона граничного значения надо присвоить KeyExclusive значение
true. Причём для каждой границы свойство KeyExclusive устанавливается
отдельно, то есть можно одну границу включить в диапазон, а другую – нет.
Методы EditRangeStart, EditRangeEnd работают аналогично SetRang-
eStart и SetRangeEnd.
     Ниже приведён пример фильтрации диапазона в таблице customer.db. В
этой таблице определено два индекса: главный по полю CustNo и вторичный
ByCompany по полю Company. Так как поле CustNo целочисленное, то вве-
дённые пользователем значения преобразуются к целому типу.
procedure TForm1.RadioGroup1Click(Sender:TObject);
begin
 case RadioGroup1.ItemIndex of
 0:Table1.IndexFieldNames:='';
 1:Table1.IndexFieldNames:='Company';
 end;
end;
procedure TForm1.Button5Click(Sender:TObject);
begin
 Table1.CancelRange;
 with Table1 do
  begin
   EditRangeStart;
   if RadioGroup1.ItemIndex=0
     then FieldByName('CustNo').AsInteger:=strtoint(Edit3.Text)
     else FieldByName('Company').AsString:=Edit3.Text;
   EditRangeEnd;
   KeyExclusive:=false;
   if RadioGroup1.ItemIndex=0
     then FieldByName('CustNo').AsInteger:=strtoint(Edit4.Text)
     else FieldByName('Company').AsString:=Edit4.Text;
   ApplyRange;
  end;
end;
     При смене текущего индекса фильтрация по индексу, который был уста-
новлен ранее, перестаёт действовать, в результирующий набор включаются все

                                    49