Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Примеры. Индексирование и открытие таблиц




Индексирование и открытие таблиц

Последовательный поиск (Locate)

Фильтрация данных (Set Filter)

Локализация и поиск записей в таблице

Редактирование полей в программном режиме (Replace)

В FoxPro можно изменять значения полей программным путем.

Replace<границы> [While <условие>] [For <условие>]

<поле1> With <Выр1>

[,<noлe2> With <Выр2>]...

Эта команда осуществляет множественное изменение полей таблицы в соответствии с заданными выражениями в установленных границах и при заданных условиях. Если отсутствует параметр <границы> или <условия>, то изменена будет только текущая запись.

Пример.

Use “Brig” && открытие таблицы с данными о выработке по бригаде

Replace Zar With Zar*1.2 For Vir>100 && премия 20% за перевыполнение Replace Zar With Zar+500 For Tab=98 && надбавка бригадиру с таб. номером 98

В FoxPro предусмотрена команда вида Set Filter To[<ВырL>] Она позволяет выводить и обрабатывать только те записи активной таб­ли­цы, которые удовлетворяют заданному условию. Команда Set Filter To (без параметров) отключает фильтр активного файла таблицы (Set Filter To Pol='М'.And. Szarp>1000000).

Команда Locate For<Условие> [<Границы>] [While <Условие>] осу­ществляет последовательный поиск первой записи в таблице, удов­лет­во­ряющей заданному For-условию, среди запи­сей, находящихся в задан­ных границах, и до тех пор, пока соблюдается While-условие. В случае, если гра­ни­цы и While-условие отсутствуют, поиск ведется во всем файле, на­чи­ная с первой записи. При успешном поиске указатель записей уста­нав­ли­ва­ет­ся на найденную запись. При неудачном поиске функция Recno() возвращает чис­ло записей в таблице плюс 1, функция Found() =.F., а функция Eof() возвращает.Т.

Команда Continue продолжает поиск. При отсутствии очередной за­пи­си в Locate‑группе функция Found() =.F., а функция Eof() возвращает.Т..

Индексный файл содержит записи, каждая из которых содержит два зна­чения: индекс (ключа) и номер записи в таблице со значением дан­но­го индекса, записи отсортированы по индексу (п. 1.3.8.1).

В FoxPro можно создать три типа индексных файлов.

Обычный индексный файл. Он имеет расширение имени IDX и содержит один индексный ключ*.

Мультииндексный файл с расширением имени МDX. Такой файл может хранить сразу несколько индексных выражений. Он является соединением нескольких простых индексных файлов.

Структурный индексный файл‑ аналогичен предыдущему, но имеет расширений CDX и открывается автоматически при открытии таблицы. В Visual Foxpro создается автоматически и используется масте­ра­ми и кон­струк­то­ра­ми.

Таблица, имеющая открытый индексный файл, просматривается в по­рядке, определенном индексным выражением <Выр>. При этом фи­зи­чес­кий порядок записей не изменяется. Процессом просмотра и доступа к таблице управляет только один индексный файл (главный). Hекоторые команды (например, Seek) используют глав­ный ин­дексный файл для поиска записей. Однако при изменении инфор­мации в таблице обновляются все открытые индексные файлы. Глав­ный индек­сный файл можно определить при помощи фразы Index команды Use или при помощи команд Set Index и Set Order.

Индексирование выполняется следующей командой:

Index On<Выр> To “<файл.idx>”[For<ВырL>][Compact][Unique][Additive]

<Выр> - индексное выражение содержит поля текущей таблицы. Ин­дек­сный ключ, построенный на основании индексного выражения, соз­дает­ся для каждой записи таблицы и записывается в индексный файл. FoxPro использует эти ключи для просмотра и осуществления дос­тупа к записям таблицы. Для простых индексных файлов длина ин­дек­сного вы­ра­жения не может превышать 100 символов;

<файл.idx> - имя индексного файла IDX. По умолчанию создаваемому индексному файлу присваивается расширение IDX;

Compact - создает компактный файл без пробельных символов IDX;

Unique -дублирующие индексы не включаются в индексный файл;

Additive - при создании индексного файла или файлов для таблицы при по­мощи команды Index, все ранее открытые индексные файлы (за иск­лю­чением структурного индекса) закрываются. Если присутствует Additi­ve, то ранее открытые индексные файлы остаются открытыми.

Index On Kod_Pred To Predprk && индексирование по одному полю

Index On Str(Kod_Gor,6)+Comp Tocom && несколько полей в индексе

Index On Oklad For Oklad>1000000 To Kadrokl && фильтрованный индекс

Существующие индексные файлы могут быть открытыко­ман­дами Use и Set Index.

Рассмотрим эти команды.

Открытие таблицы реализуется командой:

Use[<файл>|?] [In <рабочая область>] [Index <список индексных файлов>][Order[<ВырN>|<индексный файл.idx>][Ascending | Descending],

<файл> - имя таблицы, которую необходимо открыть. Если указан?, то будет выдано окно открытия файлов со списком предлагаемых таблиц. Если команда Use указана без <файл>, а в указанной рабочей области открыта таблица, то она будет закрыта. Таблица будет также закрыта в случае, когда в этой же рабочей области будет открыта другая таблица;

<рабочая область> - таблица открывается в указанной рабочей области. Для закрытия таблицы в другой рабочей области необходимо выполнить команду Use без имени таблицы, но с указанием рабочей области в In <рабочая область>;

<список индексных файлов> |? - открывает вместе с таблицей индексные файлы. Файлы в <списке индексных файлов> должны разделяться запятыми. Первый файл в <списке индексных файлов> становится главным индексным файлом, если не указано <ВырN>, которое указывает на главный индексный файл. Индексные файлы пронумерованы в порядке нахождения в <списке индексных файлов>. Если <ВырN> равно 0, то записи файла таблицы будут доступными по физическому номеру, но индексные файлы остаются открытыми;

Order [<индексный файл.idx>] - точное указание индексного файла в качестве главного индекса;

Ascending | Descending - указывает порядок размещения записей в таблице (возрастающий или убывающий). Индексный файл не изменяется, меняется только порядок доступа к записям.

Перед открытием таблицы данных нужно открыть базу с этой таб­ли­цей (п. 2.4.17).

Подключение индексов выполняется командой:

Set Index To[<список открываемых индексных файлов> ]

[Order <ВырN> | <файл.idx> ] [Ascending | Descending] [Additive]

Значения параметров аналогичны одноименным параметрам предыдущей команды.

Additive - все ранее открытые индексные файлы остаются открытыми.

Закрытие индексов выполняется командами: Set Index To или C lose Index.

Назначения главного индексного файла выполняется командой

Set Order To[<ВырN> | <Файл.idx> [Ascending | Descending]]

<ВырN> соответствует позиции индекса в списке, заданном с помощью ко­манд Set Index To или Use. Если задана команда Set Order To [0], то отключается доступ к файлу с помощью индексов.

Ascending | Descending - можно также специфицировать упорядочение главным индексом по возрастанию или по убыванию. При этом никаких изменений в индексном файле не будет, а изменится только порядок вывода записей.

Функция Order() возвращает имя главного индекса.

Функция Ndx(<ВырN>) возвращает имя индексного файла под номером ВырN.




Поделиться с друзьями:


Дата добавления: 2014-12-10; Просмотров: 709; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.