Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / gorev_akhajan_makakshiripov_ehffektivnaja_rabota_s_subd

.pdf
Скачиваний:
52
Добавлен:
26.04.2015
Размер:
3.17 Mб
Скачать

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

Значения по умолчанию могут быть заданы в Конструкторе таблиц или программно. Значения по умолчанию могут быть заданы для полей любого типа, кроме General.

Для того чтобы задать значение по умолчанию для поля таблицы, включенной в базу данных, в Конструкторе таблиц введите значение в поле Default Value, находящееся в группе Field Properties (рис. 6.3), или используйте выражение DEFAULT в команде CREATE TABLE.

Рис. 6.3. Задание значения по умолчанию в Конструкторе таблиц

Предположим, в силу географического положения магазина чаще всего адрес клиентов данного магазина начинается с фразы "Санкт-Петербург". В следующем примере создается поле address со значением по умолчанию "Санкт-Петербург":

CREATE TABLE Customer (key_customer I, name_customer C(30), ; address C(30) DEFAULT "Санкт-Петербург", ;

tel C(12), fax C(12), last_name C(17), first_name C(17),; patronymic C(17), juridical L, comment M)

Если таблица Customer уже имеет поле address, то добавить для него значение по умолчанию можно следующей командой:

ALTER TABLE Customer ALTER COLUMN address SET DEFAULT ; "Санкт-Петербург"

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

Если по бизнес-правилам в приложении требуется обязательное наличие значения некоторого поля, то задание значения по умолчанию помогает избежать нарушения соответствующих правил проверки полей и записей.

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

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

Ⱦɚɧɧɚɹ ɜɟɪɫɢɹ ɤɧɢɝɢ ɜɵɩɭɳɟɧɚ ɷɥɟɤɬɪɨɧɧɵɦ ɢɡɞɚɬɟɥɶɫɬɜɨɦ %RRNV VKRS Ɋɚɫɩɪɨɫɬɪɚɧɟɧɢɟ ɩɪɨɞɚɠɚ ɩɟɪɟɡɚɩɢɫɶ ɞɚɧɧɨɣ ɤɧɢɝɢ ɢɥɢ ɟɟ ɱɚɫɬɟɣ ɁȺɉɊȿɓȿɇɕ Ɉ ɜɫɟɯ ɧɚɪɭɲɟɧɢɹɯ ɩɪɨɫɶɛɚ ɫɨɨɛɳɚɬɶ ɩɨ ɚɞɪɟɫɭ piracy@books-shop.com

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

Visual FoxPro производит вычисления для определения типов данных при закрытии определения таблицы. Если тип вычисленного значения несовместим с типом соответствующего поля, то генерируется сообщение об ошибке. Если выражение представляет собой определенную пользователем функцию или содержит вызовы таких функций, то такое выражение не вычисляется.

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

Правила проверки полей и записей контролируют вводимые значения на выполнение заданного критерия. Если вводимое значение не удовлетворяет критерию, оно отвергается.

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

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

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

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

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

Как задать правило проверки поля? В Конструкторе таблиц введите выражение критерия в поле ввода Validation Rule в группе Field Properties (рис.6.4) или используйте выражение CHECK в

команде CREATE TABLE или ALTER TABLE.

www.books-shop.com

Рис. 6.4. Задание правил проверки и сообщения об ошибке в Конструкторе таблиц

Следующий программный код вводит для таблицы Model правило проверки, требующее, чтобы значения, вводимые в поле quantity_drum, были не меньше единицы:

ALTER TABLE Model ;

ALTER COLUMN quantity_drum SET CHECK quantity_drum >>= 1

Если пользователь попытается ввести меньшее значение, Visual FoxPro выведет диалоговое окно, содержащее сообщение об ошибке, и значение будет отвергнуто.

Сообщение, которое выводится при нарушении правил, может быть задано при определении поля. Заданное сообщение будет выводиться вместо стандартного сообщения об ошибке в соответствующем диалоговом окне.

Для задания сообщения о нарушении правил проверки полей в Конструкторе таблиц введите сообщение в поле ввода Validation Text в группе Field Properties (рис.6.4) или используйте необязательный параметр ERROR в выражении CHECK в команде CREATE TABLE или ALTER TABLE.

Следующий фрагмент программы вводит для таблицы Model правило проверки, требующее, чтобы значения, вводимые в поле quantity_drum, были не меньше единицы, а также определяет сообщение об ошибке:

ALTER TABLE Model ;

ALTER COLUMN quantity_drum SET CHECK quantity_drum >>= 1 ;

ERROR "Количество цилиндров должно быть больше или равно 1"

Если пользователь попытается ввести значение меньше 1, Visual FoxPro выведет диалоговое окно с заданным сообщением об ошибке и неверное значение будет отвергнуто (рис. 6.5). Чтобы задать собственное сообщение об ошибке, можно использовать и выражение SET CHECK в команде ALTER TABLE с необязательным параметром ERROR.

www.books-shop.com

Рис. 6.5.

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

SEEK, LOCATE, SKIP, APPEND, APPEND BLANK, INSERT, AVERAGE, COUNT, BROWSE или

REPLACE FOR, может привести к повторному срабатыванию правил, создавая ошибочную ситуацию. Такая ситуация называется рекурсией.

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

Триггеры можно создавать в Конструкторе таблиц или с помощью команды CREATE TRIGGER. Для таблицы может быть задано по одному триггеру на каждое из событий: INSERT, UPDATE или DELETE. В каждый момент времени таблица может иметь максимум три триггера. Значением триггера может быть истина (.Т.) или ложь (.F.).

Для установки триггера в диалоговом окне Table Properties Конструктора таблиц введите в

одно из полей ввода - INSERT, UPDATE или DELETE Trigger - выражение триггера или имя хранимой процедуры, содержащей выражение триггера. Программно можно использовать предложение CHECK в команде CREATE TRIGGER.

Предположим, при продаже очередного автомобиля 27 числа каждого месяца требуется формировать запрос о результатах продажи за текущий месяц. Чтобы этого добиться, можно задать триггер на операцию Insert для таблицы Sale. Триггер устанавливается на операцию INSERT (а не на операцию DELETE или UPDATE), поскольку требуется, чтобы триггер срабатывал при добавлении новой записи. При создании триггера можно указать функцию __ri_insert_sale() как триггер вставки таблицы Sale (рис. 6.6). Эту функцию необходимо описать в хранимой процедуре:

Рис. 6.6.

PROCEDURE __ri_insert_sale IF DAY(DATE())=27

WAIT WINDOW 'Формирование отчета' NOWAIT SELECT * ;

FROM Sale ;

WHERE MONTH(Sale.date_sale) = MONTH(DATE()); INTO CURSOR Sale_Month_Current

ENDIF ENDPROC

www.books-shop.com

Триггеры для событий UPDATE и DELETE задаются аналогично.

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

Структура таблицы может быть изменена как в среде Конструктора таблиц, так и программно с помощью команды ALTER TABLE.

Например, можно изменить структуру связанной с базой данных таблицы Sale с помощью следующих команд:

OPEN DATABASE Auto_Store

USE Sale EXCLUSIVE

MODIFY STRUCTURE

После этого открывается Конструктор таблиц.

Для создания свободной таблицы в Project Manager выберите пункт Free Tables, а затем нажмите кнопку New, чтобы вызвать Конструктор таблиц. Для программного создания свободной таблицы используйте команду CREATE TABLE без открытых баз данных.

Следующий программный код создает свободную таблицу Order_, состоящую из четырех полей с именами key_order, key_customer, key_model, key_salman:

CLOSE DATABASES

CREATE TABLE Order_ (key_order I, ; key_customer I, ;

key_model I, ; key_salman I)

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

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

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

Первоначально при создании таблицы Visual FoxPro создает файл DBF и если имеются поля примечаний и General, то связанный с ним FPT-файл. В это время не создается никаких индексных файлов. Записи запоминаются в новой таблице в порядке ввода. При просмотре новой таблицы записи видны в том порядке, в котором они вводились. Обычно требуется просматривать записи и иметь к ним доступ в некотором заданном порядке. Например, может потребоваться, чтобы записи в таблице клиентов были отсортированы в алфавитном порядке названий компаний. Если нужно задать порядок доступа к записям и порядок их просмотра, следует создать для таблицы индексный файл путем создания для таблиц первого способа упорядочения или индексного ключа. Тогда можно будет устанавливать порядок записей в таблице в соответствии с индексным ключом и получать доступ к записям таблицы в новом порядке.

Как задать для таблицы индексный ключ? В Конструкторе таблиц на вкладке Index введите информацию об индексном ключе. Установите Regular в качестве типа индекса или используйте команду INDEX.

Например, следующий программный код открывает таблицу Model и создает индексный ключ для поля key_body. Ключевое слово TAG и следующее за ним "key_body" задают имя или тег для нового индексного ключа.

USE Model

INDEX ON key_body TAG key_body

В этом примере тег индексного ключа имел то же имя, что и индексируемое поле. Эти имена не обязательно должны совпадать, для индексного ключа можно задать и другое имя.

После создания с помощью команды INDEX индекса Visual FoxPro автоматически использует этот индекс, чтобы установить порядок записей в таблице. Например, если ввести данные в таблицу из предыдущего примера и просмотреть ее в окне просмотра, то записи будут отсортированы по полю key_body.

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

www.books-shop.com

Индексный CDX-файл, называемый структурным составным индексом, представляет собой наиболее общий и важный тип индексных файлов Visual FoxPro.

Обратите внимание на следующие свойства структурного CDX-файла:

Автоматически открывается при открытии таблицы.

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

Автоматически поддерживает операции добавления, изменения или удаления записей таблицы.

Visual FoxPro предлагает дополнительно еще два вида индексных файлов: неструктурные СDХфайлы и файлы с одним ключом - IDX-файлы. Однако СDХ-файлы, или структурные составные компактные индексы, представляют наиболее важный вид индексов. Остальные два вида индексов употребляются реже.

Visual FoxPro поддерживает четыре типа индексов: первичные, кандидаты, уникальные и обычные. Тип индекса определяет, допустимы или нет повторяющиеся значения полей и записей.

Первичный индекс (Primary) - это единственный индекс в таблице, который определяет уникальное ключевое значение для ее записей.

Следовательно, он запрещает повторяющиеся значения в заданных полях или в выражении. Для таблицы может быть создан только один первичный индекс. При попытке задать первичный индекс для поля, в котором уже имеются повторяющиеся значения, Visual FoxPro выдает сообщение об ошибке.

Индекс-кандидат (Candidate) - это индекс, который удовлетворяет требованиям к первичному индексу, но может быть не единственным в таблице.

Он также запрещает повторяющиеся значения в заданных полях или выражении. Название "кандидат" относится к основному свойству индекса: поскольку он запрещает дублирующие значения, то этот индекс можно использовать в качестве первичного индекса для таблицы.

При попытке задать индекс-кандидат для поля, в котором уже имеются повторяющиеся значения, Visual FoxPro выдает сообщение об ошибке.

Первичные индексы и индексы-кандидаты создаются с помощью команд CREATE TABLE или ALTER TABLE. При определении постоянного отношения типа "один ко многим" или "один к одному" можно использовать со стороны "один" как первичный индекс, так и индекс-кандидат.

Для создания первичного индекса или индекса-кандидата на вкладке Index Конструктора таблиц выберите тип индекса Primary или Candidate и создайте индекс (рис. 6.7) или используйте команду ALTER TABLE.

www.books-shop.com

Рис. 6.7.

Например, каждая из следующих команд делает key_model первичным ключом для таблицы

Model:

ALTER TABLE Model ADD PRIMARY KEY key_model TAG key_mode

ALTER TABLE Model ALTER COLUMN key_model I PRIMARY KEY

Первичные индексы и индексы-кандидаты хранятся в структурном СDХ-файле данной таблицы, а также в базе данных, когда установлены свойства "Primary" или "Candidate". Эти типы индексов невозможно хранить ни в неструктурных СDХ-файлах, ни в IDХ-файлах. Основной причиной этого является то, что файл, содержащий индексы таких типов, должен быть всегда открытым, если открыта соответствующая таблица.

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

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

Слово "уникальный" относится к значениям индексного файла, содержащего только уникальные значения ключей; поскольку каждое значение не запоминается более одного раза, все последующие появления какого-либо значения игнорируются. Если таблица проиндексирована уникальным индексом, то она может иметь повторяющиеся значения. Уникальный тип индексов поддерживается для обеспечения совместимости с предыдущими версиями.

Обычный индекс (Regular) - это индекс, который не является уникальным, первичным или индексом-кандидатом.

Обычные индексы используются для упорядочения и поиска записей, но не для обеспечения уникальности данных в этих записях. Обычный индекс используется также при организации

www.books-shop.com

постоянных отношений типа "один ко многим" со стороны многих.

После создания индексных ключей для таблицы Model по полям key_model, key_firm, key_fuil_oil, key_tyre и key_body можно выводить записи в различном порядке, просто выбирая нужный индексный ключ. Команда SET ORDER используется для указания того индексного ключа, по которому будет упорядочиваться таблица.

Например, следующие команды открывают окно Browse для просмотра данных и выводят записи таблицы Model, упорядоченные по полю key_model:

SET ORDER ТО key_model

BROWSE

В табл. 6.3 систематизируются свойства трех видов индексов.

Таблица 6.3. Виды индексов Visual FoxPro

Виды

Описание

Количество

Ограничения

индекса

 

ключей

 

Структурный

Имя файла,

Выражения со

Максимум 240

CDX

совпадает с

многими

символов на

 

именем

ключами,

вычисляемое

 

таблицы;

называемыми

выражение

 

автоматически тегами

 

 

открывается

 

 

 

при открытии

 

 

 

таблицы

 

 

Неструктурный Должен

Выражения со

Максимум 240

CDX

открываться

многими

символов на

 

явно; имеет

ключами,

вычисляемое

 

имя файла,

называемыми

выражение

 

отличное от

тегами

 

 

имени файла

 

 

 

таблицы

 

 

Простые IDX

Должен

Одноключевые Максимум 100

 

открываться

выражения

символов на

 

явно; имя

 

вычисляемое

 

файла с

 

выражение

 

расширением

 

 

 

.IDX

 

 

определяется

пользователем

Неструктурные СDХ-индексы применяются в тех случаях, когда требуется создать несколько индексных тегов для какой-либо специальной цели, однако нежелательна постоянная поддержка этих индексов. Например, если приложение содержит некоторый набор отчетов на основе анализа данных в полях, которые в остальное время не индексируются, то прикладная программа может создать неструктурный СDХ-индекс с необходимыми индексными тегами, запустить на выполнение эти отчеты, а затем удалить неструктурные СDХ-индексы.

Для создания неструктурного индексного тега используйте команду INDEX с параметрами TAG

и OF.

Предложение OF в команде INDEX используется для указания того, что индекс-ный тег должен быть сохранен в файле, отличном от структурного СDХ-файла данной таблицы. Например, следующая команда создает тег с именем name_firm для таблицы Firm и сохраняет его в неструктурном СDХ-файле с именем NSTRFIRM.CDX:

USE Firm

INDEX ON name_firm TO TAG name_firm OF NSTRFIRM

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

Обычно простые индексы используются в качестве временных индексов, создаваемых или реорганизуемых непосредственно перед использованием. Для каждой таблицы может быть создано сколько угодно IDХ-файлов. Некоторые программисты предпочитают использовать этот тип индекса при создании многопользовательских приложений, так как он легче поддается восстановлению в случае аварийных сбоев.

www.books-shop.com

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

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

last_name + first_name + patronymic

Если просматривать таблицу Customer, когда она упорядочена по такому ключу, то можно убедиться, что она оказывается отсортированной по полю last_name, затем по полю first_name и только после этого по полю patronymic.

Вы можете создать индекс с помощью следующей команды:

INDEX ON last_name + first_name + patronymic TAG ; LasFirPat

Можно создавать индексы на основе более сложных индексных выражений. Индексные выражения Visual FoxPro могут содержать функции Visual FoxPro, константы или определенные пользователем функции.

Результат вычисления индексного выражения не должен превышать 100 символов для простых (IDХ) индексов и 240 символов для тегов СDХ-индексов. В одном индексном теге можно комбинировать данные различных типов, преобразовав компоненты выражения к символьному типу.

Для индексных тегов могут употребляться встроенные функции Visual FoxPro. Например, чтобы преобразовать поле типа дата в символьное выражение, можно использовать функцию DTOS(), а для преобразования числового значения в строку символов - функцию STR(). Пусть требуется создать индексный тег для таблицы Account, в котором бы комбинировались поля date_write (дата выписки счета) и sum_ (сумма оплаты), тогда можно использовать следующее индексное выражение:

INDEX ON DTOS(date_write) + STR(sum_) TAG DatSum

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

Если индексный тег строится для таблицы, связанной с базой данных, то предпочтительнее использовать хранимые процедуры, а не определенные пользователем функции. Поскольку определенная пользователем функция хранится в файле, отдельном от базы данных, есть вероятность, что этот файл будет перемещен или удален, а это приведет к неработоспособности индексный тег, ссылающийся на такую функцию. Хранимые же процедуры запоминаются в DBСфайле и всегда могут быть найдены Visual FoxPro.

Другим преимуществом использования хранимых процедур в индексных выражениях является то, что в индексе будет гарантировано использование в точности того кода, который указан. Если же в индексном выражении используется определенная пользователем функция, то при выполнении индексирования будет вызываться любая функция с указанным именем, оказавшаяся в области видимости Visual FoxPro.

Использование хранимых процедур или определенных пользователем функций следует тщательно продумывать, поскольку это увеличивает время создания индекса.

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

Как создать убывающий индекс? На вкладке Index Конструктора таблиц нажмите кнопку со стрелкой слева от поля Name так, чтобы стрелка на кнопке указала вниз, или используйте предложение DESCENDING в команде INDEX ON.

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

USE Account

INDEX ON sum_ TAG sum_ DESCENDING

BROWSE

www.books-shop.com

Возможность читать индекс по убыванию ключа позволяет воспользоваться существующим индексом, вместо того чтобы создавать новый. Пусть имеется индекс, упорядочивающий таблицу Account по полю sum_, созданный с помощью следующего программного кода:

USE Account

INDEX ON sum_ TAG sum_

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

USE Account

SET ORDER ТО sum_ DESCENDING

BROWSE

В предыдущих примерах внимание было сосредоточено на доступе к информации по убыванию ключа. Однако обе команды - SET ORDER и INDEX - могут использоваться с опцией ASCENDING. Комбинируя разные варианты употребления этих команд, можно добиться значительной гибкости приложения. Например, при создании индекса можно указать опцию ASCENDING или DESCENDING для наиболее часто используемого порядка, а если необходимо, в команде SET ORDER можно указать противоположный порядок.

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

Как создать фильтр? На вкладке Index Конструктора таблиц введите фильтрующее выражение

вполе ввода Filter нужного индекса (рис. 6.8) или используйте необязательное предложение FOR

вкоманде INDEX.

Рис. 6.8.

Если в команду INDEX ввести необязательное предложение FOR, то индекс будет действовать на таблицу, как фильтр. Индексные ключи будут создаваться в индексном файле только для записей, удовлетворяющих значению фильтра. Следующий программный код создает фильтрующий индекс и выводит отфильтрованные данные в окне просмотра:

USE Account

INDEX ON sum_ FOR sum_>>30000 TAG sum_

www.books-shop.com

Соседние файлы в папке лабы