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

Примеры работы с мультииндексными файлами в базе kadr.Dbf.

Создание индексного тега по фамилии (полю FAM) в структурном мультииндексном файле KADR.CDX. Тег получает имя FAM:

INDEX ON fam TAG fam

Создание индексного тега DET по убыванию значения поля DET (число детей) в мультииндексном файле KADRUB.CDX:

INDEX ON -det TAG det OF kadrub

ИЛИ

INDEX ON det TAG det OF kadrub DESCENDING

Создание тега POLFAM в PFKADR.CDX по выражению POL+FAM. Одновременно индекс KADRUB.IDX -закрывается:

INDEX ON pol+fam TAG polfam OF pfkadr

Просмотр имен CDX-файлов командой DIR и с помощью 4'унк-ции CDXO:

DIR *.cdx && KADR.CDX KADRUB. ОЗХ PFKADR.CDX ? CDX(l),CDX(2) && KADR.CDX PFKADR.CDX

Просмотр имен всех тегов и выявление главного тега:

? TAG(l) ,TAG(2) ,SYS(22) 66KADR FAM POLFAM

Копирование тега FAM из KADR.CDX в KADRFAM.IDX:

COPY TAG fam TO kadrfam

Создание индексного файла ZAR.IDX:

INDEX ON azar TO zar

Дополнение мультииндексного файла KADRUB.CDX тегами, образованными из всех открытых IDX-файлов. В данном примере, тегом ZAR из файла ZAR.IDX: .

COPY INDEXES ALL TO kadrub

При работе с индексированными базами данных следует быть внимательным в случае изменения полей базы, по которым выполнено индексирование, и этот индекс в данный момент является главным. После изменения значения такого поля командой REPLACE индекс сразу перестроится и положение текущей записи среди других будет уже иное, чем ранее. Следствием этого может явиться получение неправильного результата при использовании команды REPLACE с WHILE-условием, например некоторые записи базы данных, включенные в область действия команды, могут быть не обработаны. Использование команды REPLACE с FOR-условием не вызывает каких-либо проблем с индексами. При этом (см. ниже) желательно неназначение главного индекса (SET ORDER TO 0). В случае изменения большого объема данных может оказаться даже полное отключение индексов командой SET INDEX TO с последующим восстановлением командой REINDEX.

Индексирование не только логически упорядочивает записи базы •данных, но позволяет легко выполнить и физическую сортировку данных. Для этого только надо скопировать проиндексированную базу в новый файл командой COPY TO <новый файл>. В таком <новом файле> записи будет уже расположены заданным образом.

Далее мы рассмотрим и специальную команду сортировки (SORT), которая сразу создает новый файл.

По умолчанию команда SET ORDER задает управляющий файл или тег индекса для таблицы, открытой в текущей рабочей области.

Кроме перечисленных в FoxPro реализована очень сильная команда отбора данных из языка SQL - SELECT (не путать с командой SELECT перехода в рабочую область). Средства SQL будут рассмотрены отдельно.

8