Вы можете ограничить записи, к которым вы обращаетесь, только теми, которые вам действительно нужны с помощью индекса фильтрации или временного условия фильтра. Когда вы создаете индекс фильтрации (filtered index), Visual FoxPro создает индексные ключи в индексном файле только для тех записей, которые отвечают выражению фильтра. Индексы фильтрации полезны при создании сложные условий фильтра.

NoteЗамечание

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

Для создания индекса фильтрации

  1. Откройте Table Designer для редактирования желаемой таблицы и перейдите на закладку Indexes.

  2. В боксе Filter впечатайте выражение фильтра.

    - или -

    Постройте выражение фильтра, шелкнув по кнопке троеточия (...) справа от бокса Filter.

  3. Щелкните по OK.

Например, приведенное ниже выражение фильтра выбирает только те записи, которые относятся к потребителям из Канады:

  CopyCode imageСкопировать код
customer.country = "Canada"

Для создания индекса фильтрации программно

  • Используйте команду INDEX и включите опцию FOR для указания выражения фильтра.

Например, предположим, что вы желаете подготовить список рассылки для торговых представителей вашей компании и вы желаете отсортировать список по странам. Вы можете создать индекс, который отфильтрует таблицу работников так, чтобы появились записи только для торговых представителей, упорядоченные по стране и фамилии. Приведенный ниже пример кода создает индекс фильтрации и отображает отфильтрованные данные в окне просмотра:

  CopyCode imageСкопировать код
OPEN DATABASE (HOME(2) + 'Data\TestData')
USE Employee
INDEX ON country+last_name FOR title = "Sales Representative" ;
TAG reps_cntry
BROWSE

Когда вы увидите окно просмотра, то в нем будут представленые только торговые представители; записи для других работников вообще не появятся в окне просмотра.

Индекс фильтрации строит индекс только для тех записей, которые отвечают выражению фильтр.
FoxPro Employee Table

Надписи на рисунке - слева направо и сверху вниз:
Значение поля title="Sales Representative"
Да
Строится индекс на значениях полей "Country" и "LastName"
Просмотр результата в окне brows
e

Для получения более подробной информации смотрите описание команды INDEX.

Временные фильтры

Вы, кроме того, можете временно фильтровать данные без создания индекса фильтрации.

Для временного фильтрования данных

  • Используйте команду SET FILTER.

    SET FILTER особенно полезна, когда вы желаете указать временное условие, по которому можно обращаться к данным в таблице.

В приведенном ниже примере, SET FILTER фильтрует таблицу Customer для отображения только тех потребителей, которые находятся в Германии:

  CopyCode imageСкопировать код
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.

Смотрите также