Пояснение к работе

Наборы данных TTable имеют общие свойства, методы и события для фильтрации записей - Filter, Filtered, OnFilterRecord, FindFirst, FindLast, FindNext, FindPrior. Они описаны в пре­дыдущей главе.

Для фильтрации записей ТБД собственно TTable имеет следующие методы:

SetRangeStart - устанавливает нижнюю границу фильтра;

EditRangeEnd - устанавливает верхнюю границу фильтра;

ApplyRange - осуществляет фильтрацию записей в TTable;

SetRange - имеет тот же эффект, что и последовательное выполнение методов SetRangeStart, SetRangeEnd и ApplyRange. В качестве параметра исполь­зуются массивы констант, каждый из которых содержит значения клю­чевых полей.

Фильтрация методами ApplyRange/SetRange должна проводиться по ключевым полям. По умолчанию берется текущий индекс, определяемый свойством TTable.IndexName или TTable.IndexFieldNames. Если значения этих свойств не уста­новлены, по умолчанию используется главный индекс ТБД. Поэтому, если нужно использовать индекс, отличный от главного, необходимо явно переустановить значе­ние свойства TTable.IndexName (имя текущего индекса) или TTable.IndexFieldNames (список полей текущего индекса).

Метод procedure SetRange(const StartValues, EndValues: array of const); показывает в НД только те записи, индексные поля которых лежат в диапазоне [StartValues..EndValues].

Пример. Пусть в НД Table1 показываются все записи из ТБД tov.DB (Товары). Включим в структуру записи НД Table1 два поля: GrNum (Номер группы) и Tovar ( Наименование товара). Пусть текущий индекс построен по полю GrNum.

Тогда для фильтрации записей таким образом, чтобы показывались записи только с определенным номером группы, располагаем в форме компоненты Edit1 (для ввода мера группы) и Checkbox1. Если CheckBox1 отмечен (Checkbox1.Checked = True), то производится фильтрация по номеру группы, введенному в Edit1, в противном случае называются все записи из ТБД (рис. 5.1.).

Рис. 5.1. Неотфильтрованный набор данных.

Напишем такой обработчик события CheckBox1.OnClick:

procedure TForm1.CheckBox1Click(Sender: TObject);

var

GrNumTmp: Integer;

begin

if CheckBoxl.Checked then

begin

GrNumTmp:= StrToInt(Edit1.Text);

{--------------- фильтрация записей в НД---------------}

with Tablel do

begin

CancelRange;

SetRange([GrNumTmp],[GrNumTmp]);

end; { with}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: