Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 [ 53 ] 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

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

в порядке убывания

USE Account

SET ORDER ТО sum DESCENDING

BROWSE

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

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

Как создать фильтр? На вкладке Index Конструктора таблиц введите фильтрующее выражение в поле ввода Filter нужного индекса (рис. 6.8) или используйте необязательное предложение FOR в команде INDEX.

Table Designer

Jable Name: I acco.unt

Database:

I c:\prciect book\ai.ito -itore dbc

Table Properties..

Table

Index

Name

TiJpe

Expression

ACCOUNT

Regular

account

KEY CUSTO

Regular

kev customer

KEY AUTO

Regular

keiJ auto

number rec

Primary

nunber recorc

LRegular jJ

sunrl

Filter

sum>30000

Cancel

Insert

Delete

c:\project book\account.dbf

Records:

7 Fields: 7 Length:

Рис. 6.8.

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

USE Account

INDEX ON sum FOR sum >>30000 TAG sum

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

USE Account

INDEX ON sum TAG sum



BROWSE

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

USE Account

SET FILTER ТО sum >> 30000

BROWSE

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

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

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

Как перестроить индексный файл? В меню Table выберите Rebuild Indexes или используйте команду REINDEX.

Например, следующий программный код обновляет индексный файл для таблицы Account:

USE Account REINDEX

Команда REINDEX обновляет все индексные файлы, открытые в текущей рабочей области. Visual FoxPro распознает все виды индексных файлов (составные СDХ-файлы, структурные СDХ-файлы и простые IDХ-файлы) и соответственно их перестраивает. Обновляются все теги в СDХ-файлах и структурных СDХ-файлах, открывающихся автоматически вместе с таблицей.

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

Итак, пришло время вернуться к нашей задаче, описанной в первой главе (раздел 1.2) и спроектированной во второй (раздел 2.2). Следующий программный код описывает создание базы данных Auto Store. Полностью программа записана на прилагаемой к книге дискете, здесь мы приводим ключевые фрагменты, исключая однотипные операции:

WAIT WINDOW "Один момент... " NOWAIT

* После выполнения данного кода не забудьте БД

* "Auto Store" включить в проект (с помощью клавиши Add,

* предварительно выделив пункт Databases во вкладке Data) CREATE DATABASE auto store && Создание БД Auto Store

? DBSETPROP(auto store, database, comment, ;

Автоматизация управления работы дилера по продаже легковых автомобилей.) && Комментарий

к БД

* Создание таблицы Model

CREATE TABLE Model (key model i, name model c(20), key firm i DEFAULT 1, ; swept volume n(5) NULL, quantity drum n(2) NULL, ;

capacity n(5,1) NULL, torgue n(5,1) NULL, ;

key fuel oil i DEFAULT 1, top speed n(5,1) NULL, ; starting n(4,1) NULL, key tyre i DEFAULT 1, ; key body i DEFAULT 1, quantity door n(1) NULL, ; quantity sead n(2) NULL, length n(5)<>NULL, width n(4) ;

NULL, ;

height n(4) NULL, expense 90 n(4,1) NULL, ; expense 120 n(4,1) NULL, expense town n(4,1) NULL)

* Установка заголовков (для таблицы model)

? DBSETPROP (Model.key model, field, caption, ; Уникальный ключ модели) ? DBSETPROP (Model.name model, field, caption, ; Наименование модели)



? DBSETPROP (Model.key firm, field, caption, ; Уникальный ключ фирмы)

* Создание комментария (для таблицы Model)

? DBSETPROP (Model.key firm, field, comment, ;

По данному полю можно определить наименование фирмы ; через таблицы Firm)

* Создание первичного ключа (для таблицы Model)

ALTER TABLE Model ADD PRIMARY KEY key model TAG key model

* Формирование правил и сообщений об ошибке

* (для таблицы Model)

ALTER TABLE Model ALTER COLUMN swept volume SET CHECK ; swept volume>>0 ; ERROR "Значение рабочего объема не должно быть ; отрицательным" ALTER TABLE Model ALTER COLUMN quantity drum SET CHECK ; quantity drum >>= 1 ; ERROR "Количество цилиндров должно быть больше или равно 1"

* Создание таблицы Firm

CREATE TABLE Firm (key firm i, name firm c(20), ; key country i)

* Установка заголовков (для таблицы Firm)

? DBSETPROP (Firm.key firm, field, caption, ; Уникальный ключ фирмы)

? DBSETPROP (Firm.name firm, field, caption, ;

Наименование фирмы) ? DBSETPROP (Firm.key country, field, caption, ; Уникальный ключ страны)

* Создание первичного ключа (для таблицы Firm) ALTER TABLE Firm ADD PRIMARY KEY key firm TAG key firm

* Создание таблицы Automobile Passenger Car

CREATE TABLE Automobile Passenger Car (key auto i, ; key model i, date issue d, cost n(10,2))

* Установка заголовков

* (для таблицы Automobile Passenger Car)

? DBSETPROP (Automobile Passenger Car.key auto, ; field, caption, Уникальный ключ автомобиля)

* Создание первичного ключа

* (для таблицы Automobile Passenger Car)

ALTER TABLE Automobile Passenger Car ADD PRIMARY KEY ; key auto TAG key auto *Создание постоянных отношений ALTER TABLE Automobile Passenger Car ;

ADD FOREIGN KEY key model TAG key model REFERENCES Model

ALTER TABLE Model ;

ADD FOREIGN KEY key firm TAG key firm REFERENCES Firm

ALTER TABLE Model ;

ADD FOREIGN KEY key fuel oil TAG key fiuel REFERENCES ; Fuel Oil

6.2. Access

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

В этом параграфе мы рассмотрим визуальные методы создания баз данных в MS Access.

Основой любой системы обработки систематизированных данных являются таблицы. Казалось бы, вслед за этим может последовать вопрос: а почему бы не использовать Excel, в котором таблицы и создавать не надо, они уже давно созданы. Авторам известен случай, когда директор одного из заводов, страшный поклонник Excel, требовал от специалистов по информационному обеспечению построить автоматизированную систему управления документооборотом на основе Microsoft Excel. Критерием приема на работу на этом заводе программиста, да и любого другого специалиста, было наличие твердых и уверенных познаний электронных таблиц известного производителя программных продуктов. К сожалению, до конца проследить за этой историей не удалось, возможно, что-нибудь получилось. Да и почему нет - в конце концов, живем в свободной рыночной стране, если сказали, что это АСУ, значит, это АСУ, и не рассказывайте нам сказки про связи, сущности и уж тем более про ODBC.

В Access можно сконструировать 90 % приложения из данных вам "кубиков", которые здесь



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 [ 53 ] 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146