Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема_2_3_FoxИндексирование.doc
Скачиваний:
4
Добавлен:
11.08.2019
Размер:
81.92 Кб
Скачать

2. Управление индексами

Как уже говорилось, один и тот же файл-DBF может иметь любое число индексов, и все они могут быть одновременно открыты командами SET INDEX или USE...INDEX. В нашем случае команда

USE kadr INDEX kadrtab, polfam

открывает два индекса KADRTAB.IDX и POLFAM.IDX.

Пусть нужно проиндексировать базу KADR.DBF по полям SZAR и DTR таким образом, чтобы зарплата шла по возрастанию, а дата рождения - по убыванию, т.е. среди лиц, имеющих одинаковое значение поля SZAR, сначала расположить младших по возрасту. Такое индексирование осуществляет команда, где DTR вычитается из заведомо большей даты (здесь 0] .01.2000г.).

При вводе, удалении, редактировании записей все открытые индексные файлы будут соответствующим образом изменяться. Однако главным управляющим индексом, т.е. таким, в соответствии с которым при необходимости будет перемещаться указатель записей, может быть, конечно, только один. Им является индексный файл, открытый самым первым в команде (здесь KADRTAB.IDX), или назначенный таковым опцией ORDER.

В случае, если необходимо сделать главным другой индекс, используется команда

SET ORDER TO [<выр№>/<IDX-файл>/[ТАG] <имя тега> [OF <СDХ-файл>]] [IN <область>] [ASCENDING/DESCENDING]

Команда объявляет главный индекс/тег среди открытых IDX- или CDX- индексных файлов в текущей или указанной рабочей <области>. Опции команды совпадают с описанными выше для команды SET INDEX TO. Например, следующие команды сделают главным индекс POLFAM.IDX

SET ORDER TO polfam или SET ORDER Т0.2 Команда SET ORDER TO 0 или просто SET ORDER TO без параметра отключает все индексы от управления перемещением указателя записей. Теперь уже не будет главного индекса. Однако сами индексы остаются открытыми и чувствительными к изменениям в базе данных.

При необходимости имя главного индексного файла может быть выяснено с помощью функции

• ORDER([<o6ласть>])

Функция возвращает имя главного индексного файла или главного тега из мультииндексного файла для текущей рабочей области или области, заданной номером или псевдонимом.

Рассмотрим ряд вспомогательных команд и функций для паботы с мультииндексными файлами.

• COPY INDEXES <IDХ-файлы>/АLL, [ТО <CDX-файл>] Команда копирует все (ALL) или перечисленные через запятую открытые <IDX-файлы> в структурный или указанный мультииндексный DХ-файл>. Каждый такой файл становится тегом в CDX-файле с тем же самым именем, что и IDX-файл. Если CDX-файла нет, он создается.

• COPY TAG <тег> [OF DХ-фаил>] TO <IDХ-файл>

Команда создает <IDХ-файл> из поименованного <тега>, находящегося в указанном или (по умолчанию) структурном мультиин-дексном <СDХ-файле>. Файл должен быть открыт

• DELETE TAG <тег1> [OF <СDХ-файл 1>] [,<тег2> [OF <СDХ-файл 2>]]...

• DELETE TAG ALL [OF <СDХ-файл>]

Команды удаляют указанные или все (ALL) теги из открытого в текущей рабочей области CDX-файла. По умолчанию сначала рассматривается структурный CDX-файл (если он есть).

• NDX(<BbipN>[,<o6nacTb>])

Функция выдает прописными буквами полное имя индексного файла, открытого в текущей или указанной рабочей <области>. <BырN> указывает номер файла в команде открытия. Если файла нет, возвращается пустая строка.

• CDX/MDX(<BыpN>[,<o6ласть>])

Функция возвращает имя открытого CDX-файла. Первым считается структурный CDX-файл (если есть). Имя такого файла всегда совпадает с именем самой базы. Далее идут обычные мультииндексные файлы в порядке их открытия. Если структурного CDX-файла нет, рассматриваются только обычные CDX-файлы. <BыpN> - номер по порядку индексного файла, имя которого возвращается с учетом вышесказанного. Если файла с таким номером нет, возвращается нулевая строка.

• SYS(22 [,<область>])

Функция возвращает имя главного индекса или главного тега в IDX/CDX-файле. <0бласть> задается только числом.

• TAG([<CDX-файл>,] <вырN> [,<область>])

В соответствии с порядком открытия (<BыpN>) возвращает имя тега из DХ-файла> или имя IDX-файла для базы данных из текущей или указанной рабочей <области>. Если опущено имя CDX-файла, функция возвратит имя IDX-файла (если есть), или имя тега структурного мультииндексного файла (если есть), или имя тега из другого CDX-файла.