Создание индексов в мультииндексных файлах
Следует напомнить о типах индексов в мультииндексных файлах, приведенных в табл.5.1.
Таблица 5.1 Типы индексов в мультииндексных файлах
Для дальнейшей работы нам понадобится создать индексы. Описание создания индексов для таблиц Detl, Detl_n, Poshk_k, Poski_n, Proek представлено в табл.5.2, табл.5.3, табл.5.5, табл.5.7 и табл.5.8 соответственно. Описание способов интерактивного создания индексов в мультииндексных файлах для таблиц Poshk и Poski представлено в табл.5.4 и табл.5.6 соответственно.
В этих таблицах заполняются следующие колонки: - Order Name - наименование индекса; - Type - тип индекса; - Expression - сюда вводится поле таблицы, для которого создается индекс; - Filter - указывается ограничение (фильтр) по полю таблицы, заданного в колонке Expression, при выводе записей на экран; - Collate – (по умолчанию стоит значение Machine) позволяет сортировать (упорядочивать) данные в таблице.
Таблица 5.2 Detl
Таблица 5.3 Detl_n
Таблица 5.4 Poshk
В таблице Poshk для 5-го и 6-го индексов теперь не используется тип индекса Unique из версий, предшествующих версии VFP 7.0. Он заменен на тип Regular.
Таблица 5.5 Poshk_k
Таблица 5.6 Poski
Таблица 5.7 Poski_n
Таблица 5.8 Proek
Создадим два дополнительных числовых поля tel и fax в таблице poshk_n размерностью в 9 знаков, типом данных Character, и маской ввода ###-##-## и введем в них данные. Правила ввода данных в эти поля: в конкретном поле нажать клавишу Ноme для установки курсора в начальной левой позиции поля и вводить 7 цифр подряд произвольно без дефиса (например, 1111111 для номера 111-11-11). Введем произвольные данные в поля tel и fax таким образом, чтобы они в каждом поле были записаны не по возрастанию. Для этих полей создадим индексы на основании описания, представленного в табл.5.9.
Таблица 5.9 Poshk_n
В таблице poshk_k добавляем еще два новых строковых поля firstname(ИМЯ) и lastname(ОТЧЕСТВО) размерностью 15 символов.
На предыдущих лабораторных работах мы узнали, как создавать процедуры. Приведем еще несколько примеров процедур для работы с таблицами, для которых созданы индексы. Напомним, что для открытия мультииндексного файла таблицы, созданного интерактивным способом, в окне Сommand или в тексте процедуры пишется команда по следующему синтаксису: Use <путь>\<имя ТБД>.dbf order <имя индексного файла> Расширение .dbf указывать не обязательно. Создание индексов интерактивнымспособом Процедура indexes В этой процедуре производится работа с индексами различных типов, созданных интерактивным способом в таблице poshk. Процедура сохраняется под именем indexes. *Файл indexes.prg *Просмотр индексов CLEAR CLOSE TABLES ALL ? "Выполнение индексированного файла poshk" ? "Индексирование по первичному ключу - коду поставщика" USE poshk ORDER nomp_i && Использование ТБД poshk с индексом nomp_i LIST WAIT set ORDER TO 2 && Перейти ко второму индексу CLEAR ? "Второй индекс. Индексирование по полю stat" LIST WAIT set ORDER to 3 && Перейти к третьему индексу CLEAR ? "Индексирование по полю stat с фильтром>10" LIST WAIT set ORDER to 4 CLEAR ? "Индексирование по полям gord+famp" LIST WAIT set ORDER to 5 CLEAR ? "Индексирование по полю gord" LIST WAIT set ORDER to 6 CLEAR ? "Индексирование по полям famp+gord " LIST WAIT CLEAR ? "Закрытие индексов" WAIT SET ORDER TO CLEAR RETURN
Рассмотрим подробнее результат индексации таблицы по каждому из созданных индексов для этой таблицы.
Индекс nomp_i (Primary) по полю nomp. В результате выполнения индексации по первичному ключу, заданному для номера поставщика, на экран выведется таблица (если вы работаете командным способом) или данные (если вы запускаете процедуру на выполнение), в которой записи отсортированы по номеру поставщика. Индекс STAT_I (Regular) по полю stat. В результате индексации по второму индексу на экран выведется таблица или данные, где записи будут отсортированы по статусу поставщика.
Индекс STAT_IL (Regular) по полю stat, но с заданным фильтром stat>10. В результате индексации по третьему индексу на экран выведется таблица или данные, где записи будут отсортированы по статусу поставщика, значение которого (статуса) превышает 10.
Индекс GF_I (Regular) составной по полям gord+famp. В результате индексации по четвертому индексу на экран выведется таблица или данные, где записи будут отсортированы по городу поставщика, а затем по фамилии поставщика, причем подряд будут идти две записи с городом «КИЕВ».
Индекс GF_In (Regular) по полю gord. В результате индексации по пятому индексу на экран выведутся таблица или данные, где все записи названий городов будут отсортированы в алфавитном порядке, причем подряд будут идти две записи с городом «КИЕВ». Индекс GF_In1 (Regular) составной по полям famp+gord. В результате индексации по шестому индексу на экран выведется таблица или данные, где записи будут отсортированы по фамилии поставщика, а затем внутри списка фамилий - по городу.
Для наглядности используем окно Command, куда необходимо ввести следующий текст: USE D:\BAZA\Poshk.dbf Set order to 1 * Что означает: передача управления главному индексу
Эту же команду можно заменить командой с указанием имени индекса, вместо его номера:
|