Вы можете ограничить записи, к которым вы обращаетесь, только теми, которые вам действительно нужны с помощью индекса фильтрации или временного условия фильтра. Когда вы создаете индекс фильтрации (filtered index), Visual FoxPro создает индексные ключи в индексном файле только для тех записей, которые отвечают выражению фильтра. Индексы фильтрации полезны при создании сложные условий фильтра.
Замечание |
---|
Не рекомендуется использовать значения, которые отличаются от значений полей, имен констант и встроенных функций для создания выражения фильтра. Вы не можете указать выражение фильтра для бинарных индексов. |
Для создания индекса фильтрации
-
Откройте Table Designer для редактирования желаемой таблицы и перейдите на закладку Indexes.
-
В боксе Filter впечатайте выражение фильтра.
- или -
Постройте выражение фильтра, шелкнув по кнопке троеточия (...) справа от бокса Filter.
-
Щелкните по OK.
Например, приведенное ниже выражение фильтра выбирает только те записи, которые относятся к потребителям из Канады:
Скопировать код | |
---|---|
customer.country = "Canada" |
Для создания индекса фильтрации программно
-
Используйте команду INDEX и включите опцию FOR для указания выражения фильтра.
Например, предположим, что вы желаете подготовить список рассылки для торговых представителей вашей компании и вы желаете отсортировать список по странам. Вы можете создать индекс, который отфильтрует таблицу работников так, чтобы появились записи только для торговых представителей, упорядоченные по стране и фамилии. Приведенный ниже пример кода создает индекс фильтрации и отображает отфильтрованные данные в окне просмотра:
Скопировать код | |
---|---|
OPEN DATABASE (HOME(2) + 'Data\TestData') USE Employee INDEX ON country+last_name FOR title = "Sales Representative" ; TAG reps_cntry BROWSE |
Когда вы увидите окно просмотра, то в нем будут представленые только торговые представители; записи для других работников вообще не появятся в окне просмотра.
Надписи на рисунке - слева направо и сверху вниз:
Значение поля title="Sales Representative"
Да
Строится индекс на значениях полей "Country" и "LastName"
Просмотр результата в окне browse
Для получения более подробной информации смотрите описание команды INDEX.
Временные фильтры
Вы, кроме того, можете временно фильтровать данные без создания индекса фильтрации.
Для временного фильтрования данных
-
Используйте команду SET FILTER.
SET FILTER особенно полезна, когда вы желаете указать временное условие, по которому можно обращаться к данным в таблице.
В приведенном ниже примере, SET FILTER фильтрует таблицу Customer для отображения только тех потребителей, которые находятся в Германии:
Скопировать код | |
---|---|
OPEN DATABASE (HOME(2) + 'Data\TestData') USE Customer SET FILTER TO country = "Germany" BROWSE |
SET FILTER акцептирует любые действительные логические выражения Visual FoxPro в качестве условия фильтра. Вы можете отключить фильтр для текущей таблицы с помощью SET FILTER TO без указания выражения.
После использования SET FILTER, в таблице будут доступны только те записи, которые удовлетворяют условию фильтра. Все команды, которые обращаются к таблице будут учитывать выражение SET FILTER. Вы можете установить отдельный фильтр для каждой открытой таблицы.
Для получения более подробной информации смотрите описание команды SET FILTER.