Фильтрация по диапазону

При фильтрации по диапазону в НД включаются записи, значения полей которых попадают в заданный диапазон.

Таким образом, условием фильтрации является выражение вида " значение > нижней границы AND значение < верхней границы " (вместо операций сравнения < > могут указываться и операции <= >=).

Достоинством фильтрации по диапазону является высокая скорость обработки записей. Этот способ фильтрации применим только для индексированных полей. Индекс поля, диапазон которого задан в качестве критерия для отбора записей, должен быть установлен как текущий.

Для фильтрации записей по диапазону компонент Table имеет следующие методы:

ApplyRange – активизирует фильтр (включение фильтра);

CancelRange – деактивизирует фильтр (выключение фильтра);

SetRangeStart – устанавливает нижнюю границу диапазона;

SetRangeEnd – устанавливает верхнюю границу диапазона;

EditRangeStart – изменяет предварительно заданную нижнюю границу диапазона;

EditRangeEnd – изменяет предварительно заданную верхнюю границу диапазона;

SetRange – имеет тот же эффект, что и последовательное выполнение методов SetRangeStart, SetRangeEnd и ApplyRange. Процедура позволяет одновременно задать границы диапазона и выполнить фильтрацию.

Свойство KeyExclusive типа Boolean определяет, как учитывается заданное граничное значение при анализе записей. Если KeyExclusive = False (по умолчанию), то записи, у которых значения полей фильтрации совпадают с границами диапазона, включаются в состав НД, а если KeyExclusive = True, то такие записи в НД не попадают. Свойство KeyExclusive действует отдельно для нижней и верхней границы. Значение этого свойства должно устанавливаться после вызова методов SetRangeStart, SetRangeEnd, EditRangeStart и EditRangeEnd.

Пример:

Table1.IndexName: ='indCena'; //установка текущего индекса indCena (создан по полю Cena таблицы Tovar.db)

Table1. SetRangeStart;

Table1. KeyExclusive: = True;

Table1.FieldByName('Cena').AsFloat: =100.5;

Записи, содержащие в поле Cena значение 100,5, не входят в отфильтрованный НД (т. к. KeyExclusive = True). Фильтрация по диапазону подчиняется условию Cena >100,5. Если бы KeyExclusive = False, то условие фильтрации выглядело бы по-другому (Cena >=100,5).

Когда одна из границ диапазона не задана, то диапазон открыт, то есть нижняя граница становится равной минимально возможному, а верхняя граница – максимально возможному значению этого поля.


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



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