Фильтрация по диапазону
При фильтрации по диапазону в НД включаются записи, значения полей которых попадают в заданный диапазон.
Таким образом, условием фильтрации является выражение вида "значение > нижней границы 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).
Когда одна из границ диапазона не задана, то диапазон открыт, то есть нижняя граница становится равной минимально возможному, а верхняя граница – максимально возможному значению этого поля.
Дата добавления: 2015-05-16; просмотров: 673;