В наборе данных, помимо фильтров, имеется еще одно средство отбора записей. Группа методов позволяет на основе использования индексов отбирать в набор данных только те записи, значения индексированных полей которых (для текущего индекса) соответствуют диапазону заданных величин.
Диапазоны работают быстрее фильтров, но менее гибки и не так удобны в работе. При использовании диапазонов набор данных обязательно должен находиться в состоянии dsSetKey (см. ниже).
Для того чтобы включить диапазон, необходимо задать стартовое и конечное значение диапазона для ключевых полей, затем применить созданный диапазон к набору данных. Работающий диапазон можно модифицировать.
Примечание
Все методы работы с диапазонами используют те поля, которые заданы в текущем индексе. Для таблиц Paradox и dBASE это свойство indexName. Для таблиц серверов SQL это свойство indexFieldNames.
Метод setRangestart переводит набор данных в режим dsSetKey, следующее за этим присваивание ключевым полям значений означает задание начальной границы диапазона.
Метод setRangeEnd переводит набор данных в режим dsSetKey, следующее за этим присваивание ключевым полям значений означает задание конечной границы диапазона.
После этого необходимо использовать метод AppiyRange, который применяет созданный диапазон к набору данных:
with Tablel do
begin
SetRangeStart;
Fields[0].Value := '439';
SetRangeEnd;
Fields[1].Value := '522';
AppiyRange;
end;
Работающий диапазон можно модифицировать аналогичным образом: после вызова методов EditRangestart и EditRangeEnd необходимо задать новые границы для ключевых полей и снова вызвать метод AppiyRange:
with Tablel do
begin
EditRangeStart;
Fields[0].Value := '500';
EditRangeEnd;
Fields[1].Value := '522';
AppiyRange;
end;
Отмена диапазона осуществляется методом CancelRange.
Если индекс содержит несколько полей, то перед вызовом метода AppiyRange необходимо задать значения для всех ключевых полей.
Для одновременного задания верхней и нижней границы диапазона можно использовать Метод SetRange.
with Tabiel do
begin
SetRange(['500'], ['522']);
AppiyRange;
end;
Тем, какая граница будет у диапазона — открытая или закрытая, управляет свойство KeyExclusive. Если оно имеет значение True, граничные значения в диапазон не включаются, в противном случае — включаются.