|
Диапазоны
В наборе данных, помимо фильтров, имеется
еще одно средство отбора записей. Группа методов позволяет
на основе использования индексов отбирать в набор данных
только те записи, значения индексированных полей которых
(для текущего индекса) соответствуют диапазону заданных
величин.
Диапазоны работают быстрее фильтров,
но менее гибки и не так удобны в работе. При использовании
диапазонов набор данных обязательно должен находиться
в состоянии 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,
граничные значения в диапазон не включаются, в противном
случае — включаются.
|