You are on page 1of 445

c o n v e r t e d to P D F b y H u p B a H 9 I

А. Горев, С. Макашарипов, Р. Ахаян. Э ф ф е к т и в н а я р а б о т а с С У Б Д

Часть 1. Что надо знать для создания системы обработки
данных

Глава 1. Постановка задачи и разработка бизнес-правил
1.1. Некоторые определения
1.2. Описание, постановка задачи и разработка бизнес-правил

Глава 2. О сновы теории проектирования баз данны х
2.1. Информационная модель данных
Последовательность создания информационной модели
Взаимосвязи в модели
Типы моделей данных
2.2. Проектирование базы данных
Этап 1. Определение сущностей
Этап 2. Определение взаимосвязей между сущностями
Этап 3. Задание первичных и альтернативных ключей, определение атрибутов сущностей
Этап 4. Приведение модели к требуемому уровню нормальной формы
Этап 5. Физическое описание модели
2.3. Словарь данных
2.4. Администрирование базы данных

Глава 3. О бзор возм ож ностей и особенностей различны х СУБД
3.1. Средства быстрой разработки приложений
3.2. Visual FoxPro
Project Manager
Database Designer
Form Designer
Visual Class Designer
Q u ery / View Designer
Connection Designer
Report/Label Designer
Menu Designer
Вспомогательные средства разработчика
3.3. Access
Запросы
Формы
Отчеты
Макросы
Система защиты
3.4. Visual Basic
3.5. MS SQ L Server
3.6. Руководство для покупателя

Глава 4. О сновы язы ка програм м ирования
4.1. Что такое язык программирования
4.2. Как написать программу
4.3. "Горячая десятка"

converted to PDF by H u pB aH 9 I

4 .4 . Ещ е н е с ко л ь ко на в я зч и в ы х советов

Глава 5. О бъектно-ориентированное програм м ирование
5.1. Объектная модель и ее свойства
5.2. Объекты и их свойства
Объекты для работы с данными
Объекты для управления работой приложения
Объекты для оформления интерфейса пользователя
Объекты-контейнеры
Невизуальные объекты
Объекты O LE
5.3. Управление событиями
5.4. Использование методов

Часть 2. Проектирование системы обработки данных

Глава 6. Создание базы данны х
6.1. Visual FoxPro
Создание и модернизация структуры базы данных
Использование словаря данных
Создание и модернизация структуры таблиц
6.2. Access
6.3. Visual Basic
6.4. MS SQ L Server
Планирование процесса наращивания

Глава 7. Средства работы с данны ми
7.1. Организация ввода данных, их поиска и редактирования
Работа с данными в Visual FoxPro
Работа с данными в Microsoft Access
7.2. Создание S Q L-запросов
Запросы выборки
Запросы добавления
Запросы обновления
Запросы удаления
7.3. Изменение структуры данных с помощью SQL
7.4. Запросы и локальные представления в Microsoft Visual FoxPro
7.5. Запросы в Microsoft Access
Запрос добавления
Запрос - Создание таблицы
Запрос удаления
Запрос обновления
Перекрестный запрос
7.6. Работа с данными в локальной сети
Visual FoxPro
Несколько советов по увеличению производительности при работе в сети в приложениях
MicroxPro
Microsoft Access

Глава 8. И спользование технологии клиент-сервер
8.1. Работа с внешними данными с помощью технологии ODBC
Команды Transact-SQL

converted to PDF by H u pB aH 9 I

8.2.

8.3.
8.4.
8.5.
8.6.

Создание представлений
Создание триггеров
Использование Visual FoxPro для разработки клиентского приложения
Синхронный и асинхронный процессы
Создание внешних представлений
Использование Access и Visual Basic для разработки клиентского приложения
Использование O DBC API для доступа к внешним данным
Remote Data Objects
Внешнее управление сервером с помощью SQL-DM O

Часть 3. Разработка пользовательской программы

Глава 9. Разработка пользовательского интерф ейса
9.1. Инструментарий разработчика
9.2. Конструируем форму
Создание формы "Прием заказов" на Visual FoxPro
Создание формы "Прием заказов" на Access
9.3. Разработка управляющего меню
Разработка меню в Visual FoxPro
Разработка меню в Access

Глава 10. И спользование готовы х ком понентов в прилож ении
10.1. Основные преимущества модульного проектирования прикладных программ
10.2. Как правильно использовать OLE 2.0
Возможности OLE 2.0
Использование OLE Automation
Управление объектами Excel
Управление объектами W ord for Windows
10.3. Использование OLE Autom ation для передачи данных
Построение графиков с помощью MS Graph 5.0
Построение графиков с помощью MS Excel 7.0
Построение отчета в W ord for Windows
Запись информации в Schedule+
10.4. Применяем ActiveX
Иерархический список
Календарь

Глава 11. Подготовка отчетны х данны х
11.1. Создание отчетов в Visual FoxPro
Управление режимом печати
11.2. Создание отчетов в Access

Глава 12. Подготовка и отладка пользовательского прилож ения
12.1. Общие принципы отладки приложения
12.2. Инструментальные средства отладки
Отладка программы в Visual FoxPro
Отладка программы в Access
Обработка ошибок процессора баз данных в Access
Отладка программы в Visual Basic
12.3. Подготовка приложения для распространения

converted to PDF by H u pB aH 9 I

П рилож ение 1. Д ополнительны е возм ож ности новой версии
Visual FoxPro 5.0
Визуальные средства проектирования
Поставка программного пакета
Требования к установке
Project Manager
Работа с кодом программы
Создание базы данных
Работа с данными
Расширение возможностей технологии клиент-сервер
Построение пользовательского интерфейса
Расширение функций OLE
Отладка приложения

П рилож ение 2. В заим озам еняем ость команд и ф ункций Visual
FoxPro и Visual Basic

Глава 1
Постановка задачи и разработка бизнесправил
1.1. Некоторые определения
1.2. Описание, постановка задачи и разработка бизнес-правил
Создать хорошее приложение для обработки данных непросто. Это непросто, даже если вы
создаете программу "для внутреннего использования", то есть для себя или своих коллег.
Создание коммерческого приложения труднее в несколько раз, почему это так, вы поймете после
прочтения этой книги. Для начала скажем, что если вы пишете приложение для себя или других
пользователей и начали работу с создания файлов и заполнения их данными, считайте, что
первая ошибка уже совершена. Опыт показывает, что пока у вас нет четкого и подробного
представления о будущем проекте, СУБД - система управления базами данных - вам не нужна.

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









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

converted to PDF by H u pB aH 9 I





хранимые процедуры;
триггеры;
правила;
ссылочная целостность;
нормализация отношений;

словарь данных.

Каждой цивилизации приходится иметь дело с обработкой информации. С развитием
экономики и ростом численности населения возрастает и объем взаимосвязанных данных,
необходимых для решения коммерческих и административных задач. Взаимосвязанные данные
называют информационной системой. Такая система в первую очередь призвана облегчить труд
человека, но для этого она должна как можно лучше соответствовать очень сложной модели
реального мира.
Ядром информационной системы являются хранимые в ней данные. На любом предприятии
данные различных отделов, как правило, пересекаются, то есть используются в нескольких
подразделениях или вообще являются общими. Например, для целей управления часто нужна
информация по всему предприятию. Заказ комплектующих невозможен без наличия информации
о запасах. Хранящиеся в информационной системе данные должны быть легко доступны в том
виде, в каком они нужны для конкретной производственной деятельности предприятия. При этом
не имеет существенного значения способ хранения данных. Сегодня на предприятии мы можем
встретить систему обработки данных традиционного типа, в которой служащий вручную
помещает данные в скоросшиватель, и рядом с ней - современную систему с применением самой
быстродействующей ЭВМ, сложнейшего оборудования и программного обеспечения. Несмотря на
поразительную несхожесть, обе эти системы обязаны предоставлять достоверную информацию в
определенное время, определенному лицу, в определенном месте и с ограниченными затратами.
Чтобы понять процесс построения информационной системы, необходимо знать ряд терминов,
которые применяются при описании и представлении данных.

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

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

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

Объект может быть реальным (например, человек, какой-либо предмет или населенный пункт)
и абстрактным (например, событие, счет покупателя или изучаемый студентами курс). Так, в
области продажи автомобилей примерами объектов могут служить МОДЕЛЬ АВТОМ ОБИЛЯ,
КЛИЕНТ и СЧЕТ. На товарном складе - это ПОСТАВЩ ИК, ТОВАР, ОТПРАВЛЕНИЕ и т. д. Каждый
объект обладает определенным набором свойств, которые запоминаются в информационной
системе. При обработке данных часто приходится иметь дело с совокупностью однородных
объектов, например таких, как служащие, и записывать информацию об одних и тех же
свойствах для каждого из них.

converted to PDF by HupBaH9I

Классом объектов называют совокупность объектов, обладающих одинаковым набором
свойств.

Таким образом, для объектов одного класса набор свойств будет одинаков, хотя значения этих
свойств для каждого объекта, конечно, могут быть разными. Например, класс объектов МОДЕЛЬ
АВТОМОБИЛЯ будет иметь одинаковый набор свойств, описывающих характеристики
автомобилей, и каждая модель будет иметь различные значения этих характеристик.
Объекты и их свойства являются понятиями реального мира. В мире информации,
существующем в представлении программиста, говорят об атрибутах объектов.

А тр и б у т - это информационное отображение свойств объекта. Каждый объект характеризуется
рядом основных атрибутов.

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

Реальный мио

Информация

Сохраняемые
данны е

Объект

Свойства

-► Атрибуты

t

Значение
агтрибута

Свойства

Г

Значение

элемента
данных

Рис. 1 .1 . Три области представления данных
Т аб л и ц а - это некоторая регулярная структура, состоящая из конечного набора однотипных
записей. В некоторых источниках таблица называется отношением.

Мы постараемся избегать последнего термина, так как с развитием реляционной теории
"отношением" наряду с термином "связь" часто стали называть связи между таблицами. Каждая
запись одной таблицы состоит из конечного (и одинакового!) числа полей, причем конкретное
поле каждой записи одной таблицы может содержать данные только одного типа.

З н ач е н и е д а н н ы х представляет собой действительные данные, содержащиеся в каждом
элементе данных.

Элемент данных "НАИМЕНОВАНИЕ МОДЕЛИ" может принимать такие значения, как "Voyager'96
3.8 Grand", "Continental 4.6" или "Crown Victoria 4.6". В зависимости от того, как элементы
данных описывают объект, их значения могут быть количественными, качественными или
описательными.
Информацию о некоторой предметной области можно представить с помощью нескольких
объектов, каждый из которых описывается несколькими элементами данных. Принимаемые
элементами данных значения называются данными. Единичный набор принимаемых элементами
данных значений называется экземпляром объекта. Объекты связываются между собой
определенным образом. Соответствующая модель объектов с составляющими их элементами

converted to PDF by HupBaH9I

данных и взаимосвязями называется ко н ц еп туальн о й м оделью . Концептуальная модель дает
общее представление о потоке данных в предметной области.
Некоторые элементы данных обладают важным для построения информационной модели
свойством. Если известно значение, которое принимает такой элемент данных объекта, мы можем
идентифицировать значения, которые принимают другие элементы данных этого же объекта.
Например, зная уникальный номер модели автомобиля - 7, мы можем определить, что это
"Voyager'96 3.8 Grand" и что рабочий объем двигателя у данной модели "3778".

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

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

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

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

А л ьте р н а ти в н ы й клю ч - это атрибут (или группа атрибутов), несовпадающий с первичным
ключом и уникально идентифицирующий экземпляр объекта.

Например, для объекта "служащий", который имеет атрибуты "ИДЕНТИФИКАТОР СЛУЖАЩЕГО",
"ФАМИЛИЯ", "ИМЯ" и "ОТЧЕСТВО", группа атрибутов "ФАМИЛИЯ", "ИМЯ", "ОТЧЕСТВО" может
являться альтернативным ключом по отношению к атрибуту "ИДЕНТИФИКАТОР СЛУЖАЩЕГО" (в
предположении, что на предприятии не работают полные тезки).

З а п и с ь д а н н ы х - это совокупность значений связанных элементов данных.

На рис. 1.2 такими элементами данных являются уникальный ключ и наименование модели,
рабочий объем, количество цилиндров и мощность двигателя. Например, одна из записей - "7
Voyager'96 3.8 Grand 3778 6 164,0". Эта строка представляет собой значения, которые
принимают элементы данных объекта МОДЕЛЬ АВТОМОБИЛЯ (MODEL). Такие строки формируют
записи данных. Записи хранятся на некотором носителе, в качестве которого может выступать
человеческий мозг, лист бумаги, память ЭВМ, внешнее запоминающее устройство и т. д.
| н Model
ш в е
| Уникальный шич модели! Наименование модели | Рабочий объем |кчв см|! Мощность |п с||| *
зоо
!
13S1
Т Н51.<
2 1161.9
j
19391
90.0.
28GJ0
3 740UD
3902[
3382L
1
4 8*00*0
Ж Ь 0'
5 МЗЭ.и
|
3201 Г
321,0
193,0
6iGMCJnimv4.3
}
4300 г
Уодап
'f
IS
Si
and
i
Э77в
164.0
J
7
8 ZX 20
\
1998
150,0 _
16Ш
9l5toatt3.G
I
2972
10 34?Sptf«3.4
1
3*05
заад!

----- — ----- .----------- 1____.----- —

Рис. 1 .2 . Записи данных объекта MODEL
Тип д а н н ы х характеризует вид хранящихся данных.

converted to PDF by HupBaH9I

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

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

Понятие домена более специфично для баз данных, хотя и имеет определенные аналогии с
подтипами в некоторых языках программирования. В самом общем виде домен определяется
заданием некоторого базового типа данных, к которому относятся элементы домена, и
произвольного логического выражения, применяемого к элементу типа данных, который
"забраковывает" недопустимые значения. Если вычисление этого логического выражения дает
результат "истина", то элемент данных является элементом домена. Например, домен
"НАИМЕНОВАНИЕ" в нашем примере (рис. 1.3) определен на базовом типе строк символов, но в
число его значений могут входить только те строки, которые могут изображать имя (в частности,
очевидно, что такие строки не должны начинаться с какого-нибудь специфичного символа типа
знака подчеркивания или тире). В упрощенном виде понятие домена может характеризоваться
как потенциальное множество допустимых значений одного типа. Например, значением атрибута
"ПОЛ" может быть только либо "мужской", либо "женский". Следует отметить также
семантическую нагрузку понятия домена: данные считаются сравнимыми только в том случае,
когда они относятся к одному домену. В нашем примере значения доменов "КЛЮЧ МОДЕЛИ" и
"РАБОЧИЙ ОБЪЕМ" относятся к типу целых чисел, но не являются сравнимыми.
ТИПЬ ДА1II1ЫХ

______ А ______
лыс чи^ла

Стэсжи Символа}

Да 1ьги


y 'T lQ M F H h l

Клндч модэлы

jL

Наименование

..тс-имрс-ь

ПЕРВИЧНЫЙ

А ТР И Б У Т Ы

КЛЮЧ
Чапе rujJi
П

O T I IOLUEIII-1E

3

M O flFnh

ч
1C

*. I1
2У. 2 С

■LiwejL irmld

177 ООО

'in r
1Ййй

1■
■Я П

34S SpiAM 3.4

I

CusL

JSS ООО

ЗАПИСИ

4illik

з+:5

5э ООО

Рис. 1 .3 . Иерархия понятий в таблице МОДЕЛЬ
П р едставлен и е - это сохраняемый в базе данных именованный запрос на выборку данных (из
одной или нескольких таблиц).

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

С вязь - это функциональная зависимость между сущностями.

а также помогает программисту автоматизировать операции. кроме неспецифической. реализация ссылочной целостности может выполняться как приложением. если экземпляр дочерней сущности идентифицируется иначе. эта связь записывается как 1:n.это приложение (программа). объединяющее запросы и процедурную логику (операторы присваивания. Триггер является мощным инструментом контроля за изменением данных в БД. неспецифическая связь). Правила могут ассоциироваться с полем или записью и. если экземпляр дочерней сущности идентифицируется (однозначно определяется) через ее связь с родительской сущностью.это вызов определенной процедуры или функции. допустимость пустых (null) значений. соответственно. которые должны выполняться в этом случае. Обратите внимание на исключительную важность в этом определении слова "автоматически". Связь называется идентифицирующей. записываемые в хранимых процедурах. при этом входят в первичный ключ дочерней сущности. д . . составляющие первичный ключ родительской сущности. В отличие от ограничений. Х р ан и м ы е процедуры .это предварительно определенное действие или последовательность действий. Обычно действие . не идентифицирующая. программы. срабатывать при изменении данных в конкретном поле или записи таблицы. связаны с обработкой данных. Поскольку связи содержатся "внутри" реляционной модели. автоматически осуществляемых при выполнении операций обновления. мощность связи (cordiality). Триггер выполняется после проверки правил обновления данных. полная/неполная категория. Для любой связи. которые являются лишь средством контроля относительно простых условий корректности ввода данных. логического ветвления и т. так и самой СУБД (с помощью механизмов декларативной ссылочной целостности и триггеров). чем через связь с родительской сущностью. Атрибуты. Связь называется не идентифицирующей. составляющие первичный ключ родительской сущности.converted to PDF by HupBaH9I Если между некоторыми сущностями существует связь. правила позволяют проверять и поддерживать сколь угодно сложные соотношения между элементами данных в БД. Т р и гге р ы . Мощность связи представляет собой отношение количества экземпляров родительской сущности к соответствующему количеству экземпляров дочерней сущности. то факты из одной сущности ссылаются или некоторым образом связаны с фактами из другой сущности.) и хранящееся в базе данных. Связи могу быть представлены пятью основными характеристиками: • • • • • тип связи (идентифицирующая. Хранимые процедуры позволяют содержать вместе с базой данных достаточно сложные программы. при этом входят в состав не ключевых атрибутов дочерней сущности. добавления или удаления данных. Как правило. родительская сущность. Поддержание непротиворечивости функциональных зависимостей между сущностями называется ссылочной целостностью. Дочерняя сущность при идентифицирующей связи всегда является зависимой. который может взаимодействовать с другими уровнями для получения запросов или обновления данных. Атрибуты. П равила позволяют вызывать выполнение заданных действий при изменении или добавлении данных в базу данных (БД) и тем самым контролировать истинность помещаемых в нее данных. дочерняя (зависимая) сущность. Нельзя использовать правила при удалении данных. выполняющие большой объем работы без передачи данных по сети и взаимодействия с клиентом. Тем самым база данных может представлять собой функционально самостоятельный уровень приложения.

В следующей главе мы будем подробно говорить о словаре данных и рассмотрим практический пример его использования. . Могут использоваться следующие варианты обработки этих событий: • • • • • отсутствие проверки. добавление записи только с отрицательным значением). Теория нормализации основана на том. требуемая для реализации ограничений. Пользовательские программы. составляющих их элементах данных. ни приложение не могут активизировать триггер. обладает лучшей переносимостью в архитектуру клиент-сервер за счет меньшего объема требуемых модификаций. Н орм ализация отнош ений . проверка допустимости.это обеспечение соответствия значения внешнего ключа экземпляра дочерней сущности значениям первичного ключа в родительской сущности. когда пользователь или приложение выполняют с БД определенные действия. их источниках. значениях. Если для работы с этой же БД вы решите создать новое приложение. С ловар ь д а н н ы х . которое будет характеризовать возникновение ситуации. чем все остальные наборы таблиц. использующие данные из этой БД. События чаще всего связаны с изменением состояния БД (например.converted to PDF by HupBaH9I Ни пользователь. с помощью которых реализуется логика. модификации и удалении данных. установка пустого (NULL) значения или заданного значения по умолчанию. триггеры и там будут отрабатывать заданные ограничения. требующей проверки ограничений. В процессе нормализации элементы данных группируются в таблицы. Предусмотренное действие выполняется за счет выполнения процедуры или последовательности процедур. При необходимости триггеры можно изменять централизованно непосредственно в БД. Для каждой связи на логическом уровне могут быть заданы требования по обработке операций добавления. Триггер включает в себя следующие компоненты: • • • Ограничения.это процесс построения оптимальной структуры таблиц и связей в реляционной БД. представляющие объекты и их взаимосвязи. для реализации которых собственно и создается триггер. Событие. что определенный набор таблиц обладает лучшими свойствами при включении. изменяющих данные. каскадное выполнение операции обновления или удаления данных сразу в нескольких связанных таблицах. Ссылочная целостность может контролироваться при всех операциях. использовании и форматах представления. он выполняется автоматически. С сы ло чн ая ц ело стн о сть . обновления или удаления данных для родительской и дочерней сущности. взаимосвязях между объектами. с помощью которых могут быть представлены те же данные. Система обработки данных.это централизованное хранилище сведений об объектах. Использование триггеров при проектировании БД позволяет получить при разработке приложения следующие преимущества: • • • Триггеры всегда выполняются при совершении соответствующих действий. запрет операции. Разработчик продумывает использование триггеров при проектировании БД и может больше не вспоминать о них при разработке приложения для доступа к данным. использующая триггеры. добавление записи в какую-либо таблицу). но могут учитываться и дополнительные условия (например. не потребуют модернизации.

В этом параграфе мы попробуем уяснить. Каталог распространяется на рынке потенциальных покупателей. но значимые моменты будущего приложения. в большой фирме такую службу назвали бы отделом маркетинга. внимательно выслушав заказчика. следят за их оплатой и наконец вручают клиенту поступивший автомобиль. при очередном обсуждении с заказчиком возможностей новой системы. Процесс продажи проистекает следующим образом. Покупатель производит заказ на покупку автомобиля. когда и почему. в процессе работы неоднократно уточняя те или иные мелкие. Более того. после чего задача в корне меняется. отправляют счета. При анализе бизнес-процесса фирмы полезно ответить на 6 вопросов: что. В максимально простом виде схема бизнес-процесса фирмы "Фронтон" представлена на рис. 1 . Фирма "Фронтон" заключила юридические соглашения о поставке автомобилей с рядом заводов-изготовителей легковых автомобилей и крупных дистрибьюторов. Представитель фирмы выписывает счет на выбранную модель автомобиля и одновременно с этим отправляет запрос о приобретении данного автомобиля на завод-изготовитель (фирме поставщику). знает чего хочет. чего хочет. Некая фирма "Фронтон" (название придумали большие любители технологии клиент-сервер. После оплаты по соответствующему счету фирма "Фронтон" подтверждает запрос о приобретении и обязуется в течение четырехнедельного периода предоставить покупку соответствующему покупателю. и следующий визит заставляет нас начать всю работу заново. Специалисты. требующие существенного расширения функциональности будущей программы. постановка задачи и разработка бизнесправил Занимаясь разработкой автоматизированных систем на протяжении длительного времени.4. входящие в эту службу. Но это не самый плохой вариант. поэтому его надо читать на зарубежный манер: вдохните и скажите "фронт". РЫНОК КЛИЕНТ ФИ РМ Л «ФРОН ТОН » Разработка каталога Оформление заказа Ри с. что ваш заказчик действительно нуждается в данной программе. работает служба оформления заказов. что в 77 случаях из 100 заказчик сам не знает. На основании исследований рынка потенциальных покупателей и предложений автоиндустрии служба или отдельный специалист разрабатывает каталог предлагаемых к продаже автомобилей.converted to PDF by HupBaH9I 1. Иной раз уже через несколько часов после прощального рукопожатия заказчик полностью переосмысливает свои цели. то это будет признанием того. в таких случаях очень часто. Упрощенная схема бизнес-процесса . Уверяем вас. принимают заказ. попросить его описать задачу в письменном виде. а самое главное. пользуясь предоставленным ему фирмой каталогом легковых автомобилей. кто. С клиентом. решившим приобрести автомобиль. и в 99 из 100 постановку задачи приходится воспринимать на слух.4 . 1. Именно по этой причине мы рекомендуем вам. Служба внутренней поддержки обеспечивает распределение работы по исполнителям и решает возникающие проблемы. где. как. например. как должно выглядеть описание и постановка задачи. мы открываем для себя все новые и новые горизонты предстоящей работы. уточняют комплектацию выбранного автомобиля. ограничения доступа к данным. сделайте задержку дыхания и на выдохе произнесите "он") занимается продажей легковых автомобилей на заказ.2. на основании чего самостоятельно сформулировать постановку задачи. если результат окажется положительным. Описание. мы можем отметить.

Ответы на второй вопрос: "Как это делается?" позволяют получить список основных бизнеспроцессов. как правило. придется учитывать проблемы синхронизации данных. каталог. Ведь в случае. происходящих в фирме. Можно централизовать всю обработку данных. решение бухгалтерских задач. клиенты (покупатели). Упрощенная организационная структура фирмы "Фронтон" представлена на рис. В рассматриваемом примере допустим. которые выполняются вне территории фирмы торговыми агентами. 1. когда вы ему сообщите. реклама. что не можете взять у него несколько десятков тысяч долларов и продать приглянувшуюся машину. Работа с данными в этом случае упрощается. Вопрос: "Где происходят данные процессы?" больше относится к проблемам телекоммуникаций и организации совместной работы персонала. так как оборвалась связь с центральным офисом. выявляются наиболее важные для данного бизнеса или производственного процесса компоненты. пользуясь возможностями телекоммуникаций.5. рассылка каталога. Рис. Важно получить и ответ на вопрос: "Когда выполняется то или иное действие?" Это прояснит периодичность осуществляемых бизнес-процессов и позволит правильно расставить акценты в . но каково будет удивление клиента. большого объема операций. оформление счетов и накладных. поставщики. и филиалы будут выполнять свои операции. 1. автомобили. Для нашего примера в такой список можно включить следующие пункты: • • • • • • • • составление каталога.converted to PDF by HupBaH9I При ответе на первый вопрос: "Что лежит в основе бизнеса данной фирмы?". продажи. заказы. При наличии филиалов весьма непростой проблемой является оптимальный выбор системы распределения данных. анализ рынка.5. а организация совместного использования данных основана на возможностях локальной сети и сервера БД. Ответ на вопрос: "Кто выполняет эти процессы?" даст организационная структура фирмы. что все операции выполняются в пределах одного здания. например. управление работой персонала. В нашем случае это будут: • • • • • • сотрудники.

converted to PDF by HupBaH9I будущей прикладной программе. Оплата ожидается 3 недели.удобство" для клиентов. Ц ель работы д и л е р а : Продажа легковых автомобилей на заказ по каталогу.диаграмма "Сущность-связь"). подготовка сведений о приобретаемых автомобилях. Ответы на шесть перечисленных вопросов позволяют подойти к главному в постановке задачи . Бизнес-задачи фирмы "Фронтон" определим так: • • • • достижение наилучшего соотношения "затраты . 1 . Диаграмма взаимосвязей между бизнес-компонентами и бизнес-процессами Максимально формализованное описание задачи в нашем примере будет выглядеть следующим образом. которое начинается с ее общего обзора и затем уточняется. получение приемлемой прибыли. В простейшем виде такая модель может быть отображена в виде взаимосвязей между бизнес-компонентами и бизнес-процессами. анализ продаж.ежемесячно. . Ведение каталога автомобилей. В нашем случае примем такую временную последовательность выполняемых процессов: • • • обновление каталога . ERдиаграммы хорошо вписываются в методологию структурного анализа и проектирования информационных систем. годовой отчет . Отправка заказов поставщику автомобилей.ежегодно к 20 февраля. ведение справочника клиентов. Прием заказов у клиентов (покупателей) на поставку автомобилей. подведение итогов продаж . давая возможность получить различную степень детализации объекта с различным числом уровней. Б и зн е с-п р ави ла: • • Сведения о клиентах хранятся 10 лет. заказ уничтожается. если ее не происходит. обеспечение условий для успешной деятельности персонала.6. Н аим енование зад ач и : Автоматизация управления работой дилера по продаже легковых автомобилей "AUTO STORE". 1. Учет валютного курса. Рис. предлагаемых на продажу. Работа с клиентами (маркетинг): реклама новых автомобилей.раз в год и внесение поправок в экстренных случаях.построении информационной модели предприятия. Такие методологии обеспечивают строгое и наглядное описание проектируемой системы. В практике проектирования информационных систем такие схемы получили название E R -диаграм м (Entity-relationship diagram (ERD) . как это показано на рис. Последний вопрос: "Почему эти действия выполняются?" позволяет определить мотивацию производственной деятельности фирмы. повышение доходов при автоматизации обработки данных.6 . Ф ун кц и и д и л е р а : • • • • • • • Заключение договоров на поставку автомобилей. Ведение расчетов за проданные автомобили (выписка накладных).

ширина. примечание для записи заметок по работе с клиентом. анализ продаж. фамилия. наименование клиента . количество дверей. наименование страны. дата продажи. П еречень п е ч а тн ы х отчетов: • • • • • номенклатура предлагаемых к продаже автомобилей. количество мест. номинальная мощность двигателя. наименование типа кузова. телефон клиента. список заказов. П еречень вводимой инф о рм ации: • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • наименование модели продаваемого автомобиля. наименование производителя автомобиля. л . см 3.с . мм. наименование шин. л/100 км. Просрочка доставки автомобиля клиенту оплачивается фирмой "Фронтон" из расчета 0. рабочий объем двигателя. мм. Т реб ован ия к програм м е: Программа должна работать под управлением операционных систем Windows 95 или Windows NT. расход топлива при городском цикле.converted to PDF by HupBaH9I • • • • • Подтверждение запроса о приобретении автомобиля отправляется фирме-поставщику после прихода денег. признак юридического лица клиента . максимальный крутящий момент. в которой производится автомобиль. фамилия. счет на покупку. с. возвращается вся сумма оплаты и пеня. наименование используемого автомобилем топлива. л/100 км. время разгона автомобиля до 100 км/ч. сумма продажи. расход топлива при скорости 90 км/ч. адрес клиента. данная величина должна регулироваться. факс клиента. км/ч. Срок поставки 4 недели после прихода денег. Тр еб о ван ия к оснащ ению о ф и са ф и рм ы ком пью терной те хн и к о й : . Если автомобиль не поставлен в течение 2 месяцев. НФм. номер счета . стоимость автомобиля. имя и отчество клиента. л/100 км. длина.1% в день. данная величина должна регулироваться. пометка об оплате. высота. список клиентов. максимальная скорость автомобиля. имя и отчество продавца. расход топлива при скорости 120 км/ч. мм. дата выпуска автомобиля.. При отказе от поставленного автомобиля с покупателя удерживается 9% суммы оплаты по счету. количество цилиндров в двигателе.

Физическое описание модели 2. вы на правильном пути. и снизит вероятность ее переделки в дальнейшем. логической и физической моделями данных. Требования отдельных пользователей интегрируются в едином "обобщенном представлении". Необходимо потратить еще немного усилий для приведения полученной от заказчика информации к наиболее подходящему виду. Информационная модель данных Последовательность создания информационной модели Взаимосвязи в модели Типы моделей данных 2. Локальная сеть. В этом параграфе мы познакомимся: • • • с общими принципами разработки информационной модели. Сетевой лазерный или струйный принтер. определение атрибутов сущностей Этап 4. поставленную перед вами заказчиком. что наконец-то настала пора воплощать задуманное в "материализованном" виде. Определение взаимосвязей между сущностями Этап 3. 2. Это может несколько повысить трудоемкость работы. как было описано в предыдущей главе.1. Информационная модель данных При проектировании системы обработки данных именно данные и интересуют нас в первую очередь. Последовательность создания информационной модели Процесс создания информационной модели начинается с определения концептуальных требований ряда пользователей (рис. с различными видами взаимосвязей между элементами модели. требуемой для разрабатываемой системы. Но это не означает. Администрирование базы данных Если вам удалось осмыслить задачу. примерно так. Концептуальные требования могут определяться и для некоторых задач (приложений).converted to PDF by HupBaH9I • • • • Для пользователей: ПЭВМ не ниже Pentium 100/16/420 с операционной системой Windows 95 или Windows NT Workstation и пакетом программ MS Office. Глава 2 Основы теории проектирования баз данных 2. Причем больше всего нас интересует организация данных. Сервер не ниже Pentium 166/32/1000 с операционной системой Windows NT Server и MS SQL Server 6. Приведение модели к требуемому уровню нормальной формы Этап 5.2. 2. Определение сущностей Этап 2.4. Концептуальная модель представляет объекты и их взаимосвязи без указания способов их физического хранения. Проектирование базы данных Этап 1.3. Система автоматизированной обработки данных основывается на использовании определенной модели данных или информационной модели. Словарь данных 2.х.1).1. с отличиями между концептуальной. которые в ближайшее время реализовывать не планируется. Последнее называют концептуальной моделью. Модель данных отражает взаимосвязи между объектами. Помочь понять организацию данных призвана информационная модель. . Задание первичных и альтернативных ключей. однако поможет наиболее полно учесть все нюансы функциональности.

Степень независимости данных определяется тщательностью проектирования базы данных. используемые как в уже разработанных прикладных программах. При проектировании концептуальной модели все усилия разработчика должны быть направлены в основном на структуризацию данных и выявление взаимосвязей между ними без рассмотрения особенностей реализации и вопросов эффективности обработки. Возможно. Проектирование концептуальной модели основано на анализе решаемых на этом предприятии задач по обработке данных. в которой будут храниться данные. Внешние модели никак не связаны с типом физической памяти. Физическая модель. С другой стороны. называется логической моделью. Это потребует изменения концептуальной модели. относительно стабильны. так и в тех. Например. Здесь имеются в виду данные. лента или какой-либо другой носитель информации. Логическая модель отображается в физическую память. 2. Концептуальная модель транслируется затем в модель данных. Всесторонний анализ объектов предметной области и их взаимосвязей минимизирует влияние изменения требований к данным в одной программе на другие программы. в то время как концептуальные требования отражают представления. Поэтому при замене СУБД она также может измениться. Версия концептуальной модели. Это . Внешняя модель соответствует представлениям. С точки зрения прикладного программирования независимость данных определяется не техникой программирования. моделью предметной области. а его дисциплиной. по существу.второй уровень независимости данных. концептуальная модель является. Уровни независимости данных показаны на рис. иерархической или сетевой. называется внутренней моделью системы. При проектировании БД нам потребуется различать взаимосвязи между объектами. В этом и состоит всеобъемлющая независимость данных. рекомендуется не определять константы (постоянные значения данных) в программе. то вносимые в нее изменения не должны оказывать влияния на существующие внешние модели. если концептуальная модель способна учитывать расширение требований к системе в будущем. что построение логической модели обусловлено требованиями используемой СУБД. Логическая модель данных может быть реляционной. Лучшее решение состоит в передаче программе значений в качестве параметров. которые только будут реализованы. для того чтобы при любом изменении системы избежать перекомпиляции приложения. что отраженные в концептуальной модели взаимосвязи между объектами окажутся впоследствии нереализуемыми средствами выбранной СУБД. как объекты и их взаимосвязи. Но в большинстве предметных областей такие основные данные. которая может быть обеспечена конкретной СУБД. между атрибутами одного объекта и между атрибутами различных объектов. такую. методы доступа и технику индексирования. определяющая размещение данных. . Логическая модель отражает логические связи между элементами данных вне зависимости от их содержания и среде хранения. совместимую с выбранной СУБД.converted to PDF by HupBaH9I Таким образом. нельзя предусмотреть все возможные варианты использования и изменения базы данных. Концептуальная модель включает описания объектов и их взаимосвязей. логической и физической) состоит в способах представления взаимосвязей между объектами. представляющих интерес в рассматриваемой предметной области и выявляемых в результате анализа данных. Это положение отражает первый уровень независимости данных. которые пользователи первоначально желали иметь и которые легли в основу разработки концептуальной модели. Основное различие между указанными выше тремя типами моделей данных (концептуальной. Конечно. Меняются только информационные требования. отражающие их представления о предметной области. как диск. Пользователям выделяются подмножества этой логической модели. Важно помнить. Взаимосвязи в модели Взаимосвязь выражает отображение или связь между двумя множествами данных. называемые внешними моделями (в некоторых источниках их также называют подсхемами). "один ко многим" и "многие ко многим". Различают взаимосвязи типа "один к одному". и с методами доступа к этим данным. то есть способы использования данных для получения информации. Все актуальные требования предметной области и адекватные им "скрытые" требования на стадии проектирования должны найти свое отражение в концептуальной модели.1. которые пользователи получают на основе логической модели.

На рис. Взаимосвязь "один ко многим" можно обозначить с помощью одинарной стрелки в направлении к "одному" и двойной стрелки в направлении ко "многим". обозначаемая одинарными стрелками. 2. он имеет уникальный идентификационный номер (уникальный ключ клиента). ни в другом объекте не может существовать записи. в определенный момент времени один клиент может сделать только один заказ.МОДЕЛЬ АВТОМОБИЛЯ.6.converted to PDF by HupBaH9I В рассматриваемой задаче по автоматизации управления работой дилера по продаже легковых автомобилей. Взаимосвязь между данными при отношении "один к одному" В заи м о св язь "один ко м ногим " (м е ж д у двум я тип ам и о б ъ екто в) В определенный момент времени один клиент может стать обладателем нескольких моделей автомобилей. факс. "НАИМЕНОВАНИЕ КЛИЕНТА". д. Его атрибутами являются "НОМЕР ЗАКАЗА". а в дочернем хранятся уникальные ключи для доступа к записям справочника. в которой каждая запись в одном объекте будет однозначно указывать на запись в другом объекте. 2. Третий рассматриваемый объект . не связанной с какой-либо записью в другом объекте.ЗАКАЗ. Если же клиент производит заказ повторно. имя.2. Ни в одном. И четвертый рассматриваемый объект . осуществляется регистрация только данного заказа. Его атрибутами являются "УНИКАЛЬНЫЙ КЛЮЧ ПРОДАВЦА". Объект КЛИЕНТ УНИКАЛЬНЫЙ КЛЮЧ НАИМЕНОВАНИЕ КПИЕ1ITA -----. Следующий представляющий для нас интерес объект . Взаимосвязь "один ко многим" очень распространена при разработке реляционных баз данных.2. В нашем примере в качестве такого справочника можно представить объект КЛИЕНТ. сколько раз данный клиент производил заказы. В качестве родительского объекта часто выступает справочник. хранящимися в объектах КЛИЕНТ и ЗАКАЗ. При обращении к записи для определенного клиента нам доступен список всех . отчество. телефон. В заи м о св язь "один к одном у" (м е ж д у двум я тип ам и о б ъ екто в) Мысленно вернемся к временам планово-распределительной экономики. фамилию. если клиент производит заказ на покупку автомобиля впервые. В этом случае одной записи данных первого объекта (его часто называют родительским или основным) будет соответствовать несколько записей второго объекта (дочернего или подчиненного). д. осуществляется первичная регистрация его данных и сведений о сделанном заказе. "ФАМИЛИЯ" и "ОТЧЕСТВО". признак юридического лица и примечание. Информация о каждом клиенте включает наименование клиента.> 1 Хитрая лиса [—► 2 Злой БОЛИ Объект ЗАКАЗ НОМЕР ЗАКАЗА КЛЮЧ КЛИЕНТА ------------------------- > 34 2 ------------------------- > 56 1 Рис. Этот объект имеет атрибуты "УНИКАЛЬНЫЙ КЛЮЧ МОДЕЛИ". при этом несколько клиентов не могут являться обладателями одного автомобиля. в котором хранятся сведения о всех клиентах. 2. атрибутами объекта КЛИЕНТ являются "УНИКАЛЬНЫЙ КЛЮЧ КЛИЕНТА". как это показано на рис. Допустим.3 . Вне зависимости от того. Между данными. "ИМЯ ПРОДАВЦА". как это показано на рис. будет существовать взаимосвязь. В этом случае между объектами КЛИЕНТ и ЗАКАЗ устанавливается взаимосвязь "один к одному". "НАИМЕНОВАНИЕ МОДЕЛИ" и т. адрес. "КЛЮЧ КЛИЕНТА" и "КЛЮЧ МОДЕЛИ". Таким образом.а.3 приведен пример такой взаимосвязи между данными. "АДРЕС КЛИЕНТА" и т.ПРОДАВЕЦ. 2 .

Между объектами КЛИЕНТ и ПРОДАВЕЦ существует взаимосвязь "многие ко многим". Обратите внимание. 2. то мы их не увидим. Такая взаимосвязь обозначается двойными стрелками. не сможем ввести в объект ПРОДАВЕЦ уникальный ключ для каждого продавца. рис. 2. Однако в объекте ПРОДАВЕЦ в этом случае нам придется завести несколько записей для каждого продавца. которые он сделал и сведения о которых хранятся в объекте МОДЕЛЬ АВТОМОБИЛЯ. каждый клиент вполне может быть обслужен различными продавцами.2.converted to PDF by HupBaH9I покупок. 2. В этом случае говорят. по которой в этом случае будут взаимосвязаны данные. Это не допустимо. При просмотре данных в объекте КЛИЕНТ мы сможем узнать. что для потерянных записей сведений о клиенте мы не получим. С другой стороны. купившем данный автомобиль (см. так как неизбежно один продавец будет обслуживать нескольких клиентов. 2. Каждая строчка будет соответствовать каждому обслуживанию продавцом клиента.4. то в объекте КЛИЕНТ мы сможем получить данные о клиенте. какие продавцы обслуживали определенного клиента. как это показано на рис. В заи м о св язь "м н огие ко м ногим " (м е ж д у двум я типам и объ екто в) В рассматриваемом примере каждый продавец может обслуживать нескольких клиентов. В случае. для которых нет соответствующих записей в объекте КЛИЕНТ. Взаимосвязь между данными при отношении "один ко многим" Если мы будем просматривать записи объекта МОДЕЛЬ АВТОМОБИЛЯ.4).5 приведена схема. . 2 . и в дальнейшем вы узнаете. и в этом случае у нас появится несколько записей для одного и того же продавца.4 . а) б) Рис. что объект содержит потерянные (одинокие) записи. приобретая автомобили в различное время. как избегать подобных ситуаций. При таком подходе мы столкнемся с серьезными проблемами. как это показано на рис.в. если в дочернем объекте будут какие-то записи. Например. На рис.

converted to PDF by HupBaH9I Объект КЛИЕ1 IT УНИКАЛЬНЫЙ КЛЮЧ НАИМЬНОЬА-ИЬ КЛИЕНТА 1 Хитэсзя пиот 2 Злом вал < О бъ ект П Р О Д А В Е Ц > ключ ИМЯ ПРОДАВ1 [А ПРОДАВЦА КЛЮЧ КЛИЕНТА 1 Кэрина 1 1 Карина 2 9 Лена 1 2 Лена 1 Рис.6. как это показано на рис.5 . Промежуточный объект будет содержать идентификаторы связанных объектов. 2. . 2 . Взаимосвязь между данными при отношении "многие ко многим" Согласно теории реляционных баз данных для хранения взаимосвязи "многие ко многим" требуются три объекта: по одному для каждой сущности и один для хранения связей между ними (промежуточный объект).

Здесь также различают взаимосвязи типа "один к одному". . Если наряду с номером клиента в базе данных хранится и другой его уникальный идентификатор (например. то между такими двумя уникальными идентификаторами существует взаимосвязь "один к одному". Это означает. Клиентов с одинаковыми именами может быть много. В заи м о св язь "м н огие ко м ногим " (м е ж д у двум я а тр и б утам и ) Несколько клиентов с одинаковыми именами могли быть обслужены несколькими продавцами. Несколько продавцов с одинаковыми именами могли полу-чить заказы от нескольких клиентов. Взаимосвязи между объектами являются частью концептуальной модели и должны отображаться в базе данных.converted to PDF by HupBaH9I Объект КЛИЕНТ УНИКАЛЬНЫЙ КЛЮЧ ► НАИМЕНОВАНИЕ КЛИЕНТА 1 Хитрая лиса 2 Злой волк Промежуточный объект КЛЮЧ КЛИЕНТА КЛЮЧ ПРОДАВЦА 1 -I 1 2 2 1 2 1 Объект ПРОДАВЕЦ УНИКАЛЬНЫ М ИМЯ ПРО ДАВЦ А КЛЮЧ ПРОДАВЦА 1 Карина 2 Лена Рис. В заи м о св язь "один ко м ногим " (м е ж д у двум я атр и б утам и ) Имя клиента и его номер существуют совместно.6 . что ключ (номер) клиента является его уникальным идентификатором. На рис. 2 . Каждому клиенту присваивается уникальный номер. Взаимосвязь "один ко многим" обозначается одинарной стрелкой в направлении к "одному" и двойной стрелкой в направлении ко "многим" (рис.а эта взаимосвязь обозначается одинарными стрелками. Наряду с взаимосвязями между объектами существуют взаимосвязи между атрибутами объекта.б).7 . то есть он не изменяется и при последующих поступлениях заказов от данного клиента.7 . номер паспорта). 2 . 2 . что данному номеру клиента соответствует только одно имя. "один ко многим" и "многие ко многим". В заи м о св язь "один к одном у" (м е ж д у двум я атр и б утам и ) Мы предполагаем. но все они имеют различные номера.

/ . находящиеся на низших уровнях иерархии. В начале 70-х годов была предложена реляционная модель данных.термином "член набора"). третьем и т. В то же время для каждого экземпляра главного объекта может быть несколько экземпляров подчиненных типов объектов. В реляционной модели данных объекты и взаимосвязи между ними представляются с помощью таблиц. которые единственным образом идентифицируют каждую строку в таблице. Наивысший в иерархии узел называется корневым (это главный тип объекта). 2 . взаимосвязи между объектами напоминают взаимосвязи в генеалогическом дереве за единственным исключением: для каждого порожденного (подчиненного) типа объекта может быть только один исходный (главный) тип объекта.8 узлы и ветви образуют иерархическую древовидную структуру. Благодаря своей простоте и естественности представления реляционная модель получила наибольшее распространение в СУБД для персональных компьютеров. и в роли члена набора.8). Взаимосвязи также рассматриваются в качестве объектов.8 .в). 2.9. подчиненными (рис. описывающих объект.у \ '\ V У Уровень 3 /" 'Л Г \ г Рис. Схема сетевой модели приведена на рис. д. Каждая таблица представляет один объект и состоит из строк и столбцов.поле или комбинацию полей. Любой объект может быть и главным и подчиненным (в сетевой модели главный объект обозначается термином "владелец набора". а остальные. 2. уровнях Уровень 1 V. Корневой узел находится на первом уровне. Зависимые узлы (подчиненные типы объектов) находятся на втором. что каждый объект может участвовать в любом числе взаимосвязей. В реляционной базе данных каждая таблица должна иметь первичный ключ (ключевой элемент) . Это означает. для данного главного типа объекта существует несколько подчиненных типов объекта. Эти три модели различаются в основном способами представления взаимосвязей между объектами. Узел является совокупностью атрибутов. . то есть один тип объекта является главным. Все рассматриваемые в книге средства разработки пользовательских приложений поддерживают именно реляционную модель данных. Типы моделей данных Иерархическая и сетевая модели данных стали применяться в системах управления базами данных в начале 60-х годов. как это показано на рис. На рис. В сетевой модели данных понятия главного и подчиненных объектов несколько расширены. Мы обозначаем эту взаимосвязь двойными стрелками (рис. 2.converted to PDF by HupBaH9I Между атрибутами "имя клиента" и "имя продавца" существует взаимосвязь "многие ко многим". 2.10. 2. Между главным и подчиненными объектами устанавливается взаимосвязь "один ко многим". Один и тот же объект может одновременно выступать и в роли владельца. Таким образом. Иными словами. Иерархическая модель данных строится по принципу иерархии типов объектов.7. а подчиненный .

. Получаемая информация должна по структуре и содержанию соответствовать решаемым задачам. Загруженные в базу данных корректные данные должны оставаться корректными. База данных должна легко расширяться при реорганизации и расширении предметной области. Этапы проектирования базы данных с учетом рассмотренных выше аспектов представлены на рис. В основу проектирования БД должны быть положены представления конечных пользователей конкретной организации . у I Рис.концептуальные требования к системе. В этом параграфе мы изучим: • • • методику проектирования базы данных на основе последовательного построения информационной модели. Доступ к данным. также предоставляет конечный пользователь. При рассмотрении требований конечных пользователей необходимо принимать во внимание следующее: • • • • • • • • База данных должна удовлетворять актуальным информационным потребностям организации. Именно конечный пользователь в своей работе принимает решения с учетом получаемой в результате доступа к базе данных информации. От оперативности и качества этой информации будет зависеть эффективность работы организации.9 . в которое организация помещает все используемые ею данные и из которого различные пользователи могут их получать. 2. используя различные приложения. 2 . Данные. База данных должна легко изменяться при изменении программной и аппаратной среды. Данные до включения в базу данных должны проверяться на достоверность. то есть отвечать заданным требованиям производительности. 2.converted to PDF by HupBaH9I r H Ч \ ) V у / \ ч. Поэтому чаще всего под базой данных понимают любой набор хранящихся в компьютере взаимосвязанных данных.11.2. хотя на практике это решение по различным причинам труднодостижимо. А что это такое? Существует очень простое понятие базы данных как большого по объему хранилища. помещаемые в базу данных. Такая единая база данных представляется идеальным вариантом. Проектирование базы данных Все тонкости построения информационной модели преследуют одну-единственную цель получить хорошую базу данных. должны иметь только лица с соответствующими полномочиями. размещаемым в базе данных. основные требования к реализации физической модели. База данных должна удовлетворять выявленным и вновь возникающим требованиям конечных пользователей. принципы нормализации данных. База данных должна обеспечивать получение требуемых данных за приемлемое время.

На самом деле. в связи с изменением алгоритмов расчета или исходных величин. получим. Этап 1. Задание первичных и альтернативных ключей. определение атрибутов сущностей Для каждой сущности определим атрибуты. один заказ принадлежит только одному клиенту и поэтому на рис. Коммерческие системы управления базами данных поддерживают одну из известных моделей данных или некоторую их комбинацию. 6. 2. как правило. ПРОДАВЕЦ.2. для примера связи "один к одному". Этап 3. 2 . МОДЕЛЬ. Рис.1 2 . которые мы будем хранить в БД. 5. Полученная после этого информационная модель представлена на рис. СЧЕТ. 2. ЗАКАЗ. Необходимо отметить что на рис. Однако анализируя данную взаимосвязь более широко. Почти что все популярные системы для персональных компьютеров поддерживают реляционную модель данных. Отображение концептуальной модели данных на реляционную модель производится относительно просто. может быть достаточно легко подсчитано в момент вывода информации. 3. Определение сущностей Исходя из задачи. При этом необходимо учитывать тот факт. 2. описанной в первой главе. которые должны обеспечить необходимую независимость данных и выполнение эксплуатационных требований (пожеланий пользователей). данными в предыдущем параграфе. что при разработке концептуальной модели использовался реляционный подход. АВТОМОБИЛЬ. 2. некоторые расчетные показатели приходится записывать в БД. какая модель данных наиболее подходит для отображения конкретной концептуальной модели предметной области. что при переходе от логической к физической модели данных может произойти усечение числа объектов. значительное число данных. Определение взаимосвязей между сущностями Определим для включенных в модель сущностей взаимосвязи в соответствии с рекомендациями. 7. В то же время. чтобы гарантированно обеспечить . КЛИЕНТ. С другой стороны. 4. При разработке логической модели базы данных прежде всего необходимо решить. что один клиент в разное время может производить несколько заказов.converted to PDF by HupBaH9I В результате анализа поставленной заказчиком задачи и обработки требований конечных пользователей составляется концептуальная модель. Рассмотрим этапы проектирования базы данных.а взаимосвязь между объектами КЛИЕНТ и ЗАКАЗ рассматривается в определенный момент времени. Простота отображения связана с тем. ПРОДАЖА. выделим следующие сущности: 1. которое отражает представление пользователя в удобном для него табличном формате. Этап 2. Каждый прямоугольник концептуальной модели отображается в одно отношение.12. необходимых пользователю.12 между сущностями КЛИЕНТ и ЗАКАЗ установлена взаимосвязь "один ко многим".

Атрибуты. Т аб л и ц а 2 . 2. и в любом случае оно потребует тщательного изучения работы предприятия и анализа концептуальной модели. которые обязательно следует хранить в БД.1. Рис. Атрибуты и первичные ключи сущностей информационной модели С ущ н о сть П ервичны й А тр и буты клю ч МОДЕЛЬ Уникальный ключ Уникальный ключ модели модели Наименование модели Наименование фирмы Наименование страны Рабочий объем двигателя Количество цилиндров Мощность Крутящий момент Наименование топлива Максимальная скорость . Выбор показателей.13. приведены в табл.1 . 2.converted to PDF by HupBaH9I фиксацию их значений. 2 . Информационная модель после третьего этапа проектирования приведена на рис. Нечасто можно найти однозначное решение этой проблемы. достаточно сложен.1 3 . включаемые в состав БД для рассматриваемой модели.

converted to PDF by HupBaH9I Время разгона до 100 км/ч Наименование шин Наименование кузова Количество дверей Количество мест Длина Ширина Высота Расход топлива при 90 км/ч Расход топлива при 120 км/ч Расход топлива при городском цикле АВТОМОБИЛЬ Уникальный ключ Уникальный ключ автомобиля автомобиля Уникальный ключ модели Дата выпуска Стоимость КЛИЕНТ Уникальный ключ Уникальный ключ клиента клиента Наименование клиента Адрес Телефон Факс Фамилия Имя Отчество Признак юридического лица Примечание ПРОДАЖА Счет Счет Дата продажи Сумма СЧЕТ Номер записи Номер записи Счет Уникальный ключ клиента Уникальный ключ автомобиля Дата выписки Пометка об оплате Сумма ЗАКАЗ Уникальный ключ Уникальный ключ заказа заказа Уникальный ключ клиента Уникальный ключ модели Уникальный ключ продавца .

Если ключи состоят более чем из одного атрибута.14. Нормализация информационной модели выполняется в несколько этапов. Отношение задано во второй нормальной форме. заданное в первой нормальной форме. что определенный набор таблиц обладает лучшими свойствами при включении. являются первой нормальной формой реляционной модели данных. модификации и удалении данных. то для нескольких автомобилей одной модели пришлось бы . чтобы они не были стерты). то есть записанной на каком-либо носителе. отношение. Отношение задано в третьей нормальной форме. Преобразование в третью нормальную форму происходит за счет разделения исходного отношения на два. Первый этап нормализации заключается в образовании двумерной таблицы. В процессе приведения модели ко второй нормальной форме в основном исключаются аномалии дублирования данных. представленные в виде двумерной таблицы. то это отношение задано во второй нормальной форме. Данные. 2. полностью зависит от любого возможного ключа этого отношения. Введение нормализации отношений при разработке информационной модели обеспечивает минимальный объем физической. В этом случае будут наблюдаться аномалии включения. представляющие объекты и их взаимосвязи. Например. так как в этом случае все атрибуты. полностью зависят от возможных ключей. если оно является отношением в первой нормальной форме и каждый атрибут. в которых все имеющиеся атрибуты будут иметь полную функциональную зависимость от ключа этой таблицы. если оно задано во второй нормальной форме и каждый атрибут этого отношения. если все данные о моделях автомобилей и самих поступающих автомобилях хранятся в одном отношении. 2. содержащей все необходимые атрибуты информационной модели.converted to PDF by HupBaH9I ПРОДАВЕЦ Уникальный ключ Уникальный ключ продавца продавца Фамилия Имя Отчество Этап 4. чем все остальные наборы таблиц. B и C три атрибута одного отношения и C зависит от B. Если все возможные ключи отношения содержат по одному атрибуту. что впрямую отражается на качестве функционирования информационной системы.14.6. с помощью которых могут быть представлены те же данные. Приведение отношений ко второй нормальной форме заключается в обеспечении полной функциональной зависимости всех атрибутов от ключа за счет разбиения таблицы на несколько. может не быть отношением во второй нормальной форме.а. что C транзитивно зависит от A. как это показано на рис. а B от A. то говорят. Транзитивная зависимость выявляет дублирование данных в одном отношении. В процессе нормализации элементы данных группируются в таблицы. не являющиеся первичными. и ее максимальное быстродействие. не являющийся первичным атрибутом в этом отношении. так как при выполнении этих действий нам придется уделить внимание данным (вводить или заботиться о том. БД. Приведение модели к требуемому уровню нормальной формы Приведение модели к требуемому уровню нормальной формы является основой построения реляционной БД. и в выделении ключевых атрибутов. Если A. Например. обновления и удаления данных. Очевидно. не являющийся первичным. не транзитивно зависит от каждого возможного ключа этого отношения. может наблюдаться такая парадоксальная ситуация. что полученная весьма внушительная таблица будет содержать очень разнородную информацию. Теория нормализации основана на том. При включении в каталог продаж новой модели автомобиля нам сразу придется указать купившего ее клиента. как это схематично показано на рис. которые не имеют к текущим действиям никакого отношения.

очаровательная девушка Карина. вышла замуж. С учетом выше изложенного в нашей модели необходимо видоизменить список атрибутов сущности МОДЕЛЬ и добавить такие новые сущности. п . Исключайте избыточные данные . в каждой из которых повторяется идентификатор отношения. в котором будут храниться данные об автомобилях. Это также будет способствовать повышению быстродействия вашей системы. которые в десяти упоминаниях напишут это имя абсолютно одинаково. как ТОПЛИВО. Везде.если атрибуты не вносят свою лепту в описание ключа. если из одного отношения выделить отношение. где возможно использование идентификаторов вместо описания. Существуют и более высокие формы нормализации. К необходимости введения в модель искусственных атрибутов мы пришли в процессе нормализации. то есть естественный атрибут отношения не обладает свойством уникальности. Т аб л и ц а 2 . Для того чтобы не использовать во всех таблицах длинный естественный атрибут объекта.15). то для их отображения создается несколько таблиц. Давайте сформулируем основные правила. которым нужно следовать при проектировании базы данных: Исключайте повторяющиеся группы . ФИРМА.converted to PDF by HupBaH9I многократно указывать тип кузова. 2. переместите атрибут в отдельную таблицу.если атрибут зависит только от части составного ключа.2. Дублирование исчезает. в котором будут храниться данные о моделях. а в списке заказов использовать только присвоенные им уникальные идентификаторы. В этом случае технические характеристики зависят от модели автомобиля и при наличии нескольких автомобилей одной модели будут дублироваться. Помимо теоретических указаний в этом правиле есть и чисто практический смысл. что найдутся считанные люди. Выполнение этого правила автоматически приведет ко второй нормальной форме. Представьте. КУЗОВ. то это может вызвать очень большие сложности при эксплуатации системы. Исключайте столбцы. переместите их в отдельную таблицу. Представьте. но авторы не встречались с необходимостью их применения за достаточно длительную историю создания систем обработки данных и поэтому сочли возможным уберечь читателя от потока теории. Бьемся об заклад. которые в виде кодов участвуют в отношениях вместо естественных атрибутов (вид топлива. ШИНЫ. марка шин и т. которые не зависят от ключа . фамилия). Если естественный атрибут может изменяться во времени (например. Например. В основном изменения в модели связаны с введением искусственных атрибутов. В этом случае решить проблему помогает уникальный табельный номер. Ну кто-то где-нибудь да напишет "Хитрый лис". В общем случае мы рекомендуем использовать вместо естественных атрибутов коды в следующих случаях: В предметной области может наблюдаться синомия.2 . что в вашем списке заказов вы указываете имена ваших клиентов. что ваш лучший продавец. Клиент "Хитрая лиса" достаточно активен и часто делает у вас заказы. включаемые в измененные или добавленные в модель сущности. приведены в табл. которые привязаны к ее девичьей фамилии? Использование неизменяемого кода (табельного номера) позволит избежать этих сложностей. среди сотрудников фирмы могут быть однофамильцы или даже полные тезки. и отношение. Если отношение участвует во многих связях. Поэтому гораздо лучше вести список своих клиентов в отдельной таблице.для каждого набора связанных атрибутов создайте отдельную таблицу и снабдите ее первичным ключом. количество дверей и другие технические характеристики. Что будет с данными. Атрибуты. Это правило помогает избежать потери одних данных при удалении каких-то других. Атрибуты и первичные ключи измененных или добавленных сущностей информационной модели С ущ н о сть П ервичны й А тр и буты клю ч МОДЕЛЬ Уникальный ключ Уникальный ключ модели модели Наименование модели Уникальный ключ фирмы Наименование страны Рабочий объем двигателя Количество цилиндров Мощность . СТРАНА (рис. выносите в отдельную таблицу список идентификаторов с пояснениями к ним. можно применять более короткий код. а для СУБД это уже другой клиент.). 2.

3 cм3 . Физическое описание модели На этом этапе мы должны составить проекты таблиц.3. Назначения имен таблиц и их атрибутов отражены в табл. Т аб л и ц а 2 .converted to PDF by HupBaH9I Крутящий момент Уникальный ключ топлива Максимальная скорость Время разгона до 100 км/ч Уникальный ключ шин Уникальный ключ кузова Количество дверей Количество мест Длина Ширина Высота Расход топлива при 90 км/ч Расход топлива при 120 км/ч Расход топлива при городском цикле ТОПЛИВО Уникальный ключ Уникальный ключ топлива топлива Наименование топлива ШИНЫ Уникальный ключ Уникальный ключ шин шин Наименование шин КУЗОВ Уникальный ключ Уникальный ключ кузова кузова Наименование кузова ФИРМА Уникальный ключ Уникальный ключ фирмы фирмы Наименование фирмы Уникальный ключ страны СТРАНА Уникальный ключ Уникальный ключ страны страны Наименование страны Этап 5.3 . которые будут в дальнейшем реализовываться в конкретной СУБД. Проект таблиц для физической модели Model (М о д е ль) + 1 № п /п Н аим енование П римечание поля 1 Key_model Уникальный ключ модели 2 Name_model Наименование модели 3 Key_firm Уникальный ключ фирмы 4 Swept_volume Рабочий объем. 2.

мм Высота .. с. Крутящий момент Уникальный ключ топлива Максимальная скорость. мм Ширина.converted to PDF by HupBaH9I 5 Quantity_drum 6 7 8 Capacity Torgue Key_fuel_oil 9 Top_speed 10 Starting 11 Key_tyre 12 Key_body 13 Quantity_door 14 15 16 17 18 Quantity_sead Length Width Height Expense_90 19 Expense_120 20 Expense_town F irm (Ф и р м а ) № п /п 1 2 3 C oun try (С тр а н а ) № п /п 1 2 F u e l_o il (Т о п л и в о ) № п /п 1 2 Количество цилиндров Мощность. л. л/100 км + 2 Н аим енование Примечание поля Key_firm Уникальный ключ фирмы Name_firm Наименование фирмы Key_country Уникальный ключ страны + 3 Н аим енование Примечание поля Key_country Уникальный ключ страны Name_country Наименование страны + 4 Н аим енование Примечание поля Key_fuel_oil Уникальный ключ топлива Name_fuel_oil Наименование топлива . с Уникальный ключ шин Уникальный ключ кузова Количество дверей Количество мест Длина. л/100 км Расход топлива при городском цикле. км/ч Время разгона до 100 км/ч . мм Расход топлива при 90 км/ч . л/100 км Расход топлива при 120 км/ч..

ГГ Cost Стоимость. $ + 8 Н аим енование Примечание поля Key_custome Уникальный ключ клиента Name_customer Наименование клиента Address Адрес Tel Телефон Fax Факс Last_name Фамилия First_name Имя Patronymic Отчество Juridical Признак юридического лица Comment Примечание + 9 Н аим енование Примечание поля Account Счет Date_sale Дата продажи в формате .converted to PDF by HupBaH9I T y re (Ш и н ы ) № п /п 1 2 Body (К у з о в ) № п /п 1 2 A uto m o bile p a sse n g e r car (А в то м о б и ль) № п /п 1 2 3 4 C u sto m er ( К л и е н т) № п /п 1 2 3 4 5 6 7 8 9 10 S a le (П р о д а ж а ) № п /п 1 2 + 5 Н аим енование Примечание поля Key_tyre Уникальный ключ шин Name_tyre Наименование шин + 6 Н аим енование Примечание поля Key_body Уникальный ключ кузова Name_body Наименование кузова + 7 Н аим енование Примечание поля Key_auto Уникальный ключ автомобиля Key_model Уникальный ключ модели Date_issue Дата выпуска в формате ДД.ММ..

Это называется обеспечением целостности базы данных. хранящейся в БД.ГГ Сумма. чтобы книга была написана литературным языком и соответствовала неким нормам.converted to PDF by HupBaH9I 3 A cco u n t (С ч е т) № п /п 1 2 3 4 5 6 7 O rd e r_ (З а к а з ) № п /п 1 2 3 4 S a le sm a n (П р о д ав ец ) № п /п 1 2 3 4 ДД. Мы не хотим ничего слышать о программных . направленных на поддержание правильности данных в базе в любой момент времени. Мы приравниваем компьютер к книге из издательства с самой известной маркой. При общении человека с компьютером наблюдается некий стойкий феномен. Обеспечением целостности базы данных называется система мер. $ + 11 Н аим енование П римечание поля Key_order Уникальный ключ заказа Key_customer Уникальный ключ клиента Key_model Уникальный ключ модели Key_salman Уникальный ключ продавца + 12 Н аим енование П римечание поля Key_salman Уникальный ключ продавца Last_name Фамилия First_name Имя Patronymic Отчество На этапе физического проектирования мы должны задуматься о такой серьезной проблеме.ММ. $ Sum _ + 10 Н аим енование Примечание поля Number_record Номер записи Account_ Счет Key_customer Уникальный ключ клиента Key_auto Уникальный ключ автомобиля Date_write Дата выписки в формате ДД. Мы привыкли доверять достоверности данных.ММ. Мы априори верим всем данным. Удивительно было бы при чтении детектива встретить ссылки на научные источники в конце страницы. которые выдает нам это славное устройство. как обеспечение безошибочности и точности информации. Они же стараются сделать так. При подготовке книги помещаемые в нее данные проверяют несколько редакторов. помещаемых в печатных изданиях. с которыми читатели подходят к книгам различного жанра.ГГ Selled Пометка об оплате Sum _ Сумма.

Ограничения целостности . Диапазон допустимых значений может быть ограничен с двух сторон (закрытый диапазон). называемых ограничениями целостности. При подготовке книги затраты на ее редактирование составляют незначительную часть от общих затрат на ее выпуск в свет. размахивающего листком с распечаткой и неустанно повторяющего как молитву фразу: "Это я рассчитал на компьютере!" Мы встречали. если его можно ограничить. В системах обработки данных наоборот. В СУБД целостность данных обеспечивается набором специальных предложений. Например. Считается. Если же трезво взглянуть на проблему. а может с какой-то одной: верхней или нижней (открытый диапазон). и не раз. почему он не заделал дыру в корпусе корабля: "Ее никто не увидит. п. кабриолет и т. пока не приведут к тяжелым последствиям.converted to PDF by HupBaH9I ошибках.ГГ позволит пользователю ввести только шесть чисел. что вероятность совершения одной и той же ошибки в этом случае будет крайне мала и простое сравнение результатов ввода различных операторов поможет получить безошибочные данные. д. Естественно появляется соблазн избежать дорогостоящей верификации данных. Вы встречали человека. как правильно использовать возможности словаря данных при проектировании и эксплуатации БД. Выбор типа поля Date в формате ДД. Словарь данных Управленческим инструментарием разработки при проектировании базы данных является словарь данных (СД). а вторая . объясняя. Недопустимость пустого поля позволяет избежать появления в БД "ничейных" записей. Вряд ли будет удобно в справочнике клиентов иметь несколько записей для одного и того же лица. Задание диапазона значений. При этом первая пара цифр не сможет превысить в лучшем случае значения 31. Ограничения целостности могут относиться к разным объектам БД: атрибутам (полям). Например. используется для числовых полей. Как конкретно реализуется в каждой из рассматриваемых СУБД ограничение целостности мы увидим на примере создания БД в шестой главе. мощность двигателя серийного легкового автомобиля вряд ли может быть ниже 30 л.3. сбоях и неправильном вводе данных. Проверка на уникальность значения какого-то поля позволяет избежать записейдубликатов. В этом параграфе мы познакомимся с тем. Для полей могут использоваться следующие виды ограничений: • • • • • Тип и формат поля автоматически допускают ввод только данных определенного типа. Ошибки в данных неприятны тем. таблицам или связям между ними. ситуация начинает выглядеть совершенно иначе. Затраты на проверку и поддержание достоверности данных могут составлять значительную часть от общих эксплуатационных затрат. в транспортных предприятиях для контроля правильности ввода данных с путевой документации практикуется параллельный ввод одних и тех же данных несколькими операторами. что они остаются незамеченными до тех пор. для указания типа кузова мы можем ограничить фантазию пользователя только общепринятыми названиями: Седан. Для реализации ограничений целостности.это набор определенных правил. она же под водой". связям между ними и т. 2. Достаточно убедительный довод.12. Ее расширение происходит по мере разработки и интеграции используемых прикладных . в СУБД используются триггеры. записям. которые устанавливают допустимость данных и связей между ними. отношениям. Задание списка значений позволяет избежать излишнего разнообразия данных. как правило. Например. Ограничения целостности в большинстве случаев определяются особенностями предметной области. чтобы заранее воспользоваться предоставляемыми СУБД мерами для блокирования появления возможных ошибок в разрабатываемой базе данных. в которых пропущены какие-либо обязательные атрибуты.ММ. с. если только вы не позаботитесь обнаружить эти ошибки раньше. Как сказал один рабочий судоверфи другому. имеющих отношение к записи. Внедрение базы данных на любом предприятии занимает довольно продолжительное время.

которые используют базу данных. Этот процесс включает несколько итераций и связан с необходимостью разрешения конфликтных ситуаций. В процессе эксплуатации вводятся новые элементы данных. в которой хранится информация о базе данных. централизация управления элементами данных с целью упрощения проектирования базы данных и ее расширения. чтобы они правильно понимали. иначе может случиться так. Прежде всего остановимся на вопросах использования СД при проектировании системы обработки данных. Отдельные подразделения подчас переоценивают свою роль на предприятии. которое позволяет при проектировании. . Поиск решений проблем такого рода является прерогативой администратора БД. внутренней и внешних моделях данных. Если вам не по душе слушать крики: "Судью на мыло!". При этом обе стороны должны трактовать используемые термины однозначно. способах использования и о структуре данных. которые использовались при проектировании базы данных. чтобы все. Накопление информации в словаре данных целесообразно начинать уже на самой ранней стадии проектирования. могут быть изменены. что представляют собой данные. осуществление простого и эффективного управления элементами данных при вводе в систему новых элементов или изменении описания существующих. какого рода информацию они хотят получить из системы. Так как база данных обслуживает множество пользователей. недвусмысленными и согласованными. что приводит при разработке информационной системы к конфликтам. корреспондирующиеся базы данных и перекрестные ссылки между группами элементов данных и базами данных. На первом этапе проектирования базы данных необходимо собрать сведения о предметной области. добиться однозначного толкования различными подразделениями назначения источников и соглашений по присвоению имен. какие данные будут входными. Эти описания или определения должны быть точными. Поэтому второе важное назначение словаря данных обеспечить эффективное взаимодействие между различными категориями разработчиков и пользователей. определение степени влияния изменений в элементах данных на всю базу данны х.converted to PDF by HupBaH9I программ. в нем фиксируются сведения о тех прикладных программах. На ранней стадии проектирования прежде всего готовятся описания элементов данных на естественном языке. Кроме того. Словарь данных призван помогать пользователю в выполнении следующих функций: • • • • • совместное использование данных с другими пользователями. Одно из главных назначений словаря данных состоит в документировании данных. совсем не просто сформулировать приемлемое для всех одно описание разделяемого элемента.в упакованном. какой должна быть система. а по мере развития проекта осуществлять централизованное накопление информации о концептуальной. и имеются сведения о кодах защиты информации и разграничении доступа. Словарь данных содержит информацию об источниках. На этой стадии разработки текстовых описаний данных проектировщик абстрагируется от способа их физического представления в базе данных. кто имеет отношение к базе данных. Это часто создает конфликтные ситуации. уменьшение избыточности и противоречивости данны х. Идеальный СД содержит также сведения и о других категориях данных. чем технические вопросы применения базы данных. Словарь данных можно рассматривать как "метабазу данных". символьном или каком-либо другом виде. Преимущества использования СД заключаются в эффективном накоплении. форматах и взаимосвязях между данными. пользовались автоматизированным словарем данных. например "номер счета". Словарь данных является как раз тем средством. если три подразделения используют одни и те же данные по-разному. Разработчику в таких случаях придется выступать в роли арбитра. таких. то для обеспечения эффективного сбора и накопления информации о данных желательно. "остаток" или "процент" в банковской системе. их описания. В частности. разрешить которые гораздо сложнее. Проектировщик базы данных рассматривает различные характеристики данных. определении и управлении суммарным ресурсом данных предметной области. В процессе работы разработчики выясняют у пользователей. что разработанная система не будет удовлетворять требованиям пользователей. как группы элементов данных. ему не следует определять. как хранить данные . Например. эксплуатации и развитии базы данных поддерживать и контролировать информацию о данных. вводя имена элементов данных. сведения о характере использования и распределении ответственности. логической. сформулировать приемлемые для всех пользователей описания элементов данных и выявить синонимы. При сборе информации о данных следует установить правила присвоения имен элементам. а те. крайне необходимо. в том числе о назначении.

Поэтому важно. В этом случае в словарь данных может быть введена информация обо всех местах физического хранения данных.как к локальной. "остаток на счете на конец вчерашнего дня". Для успешного применения словаря данных при разработке системы следует централизовать накопление информации в этом . план реализации словаря зависит от особенностей предметной области. . На самом деле существует гораздо больше различных полей "остаток".converted to PDF by HupBaH9I Рассмотрим следующий пример. Чтобы учесть все возможные ограничения. В то же время не следует думать. Модификация типов данных может производиться только после того. Они могут встречаться. два важнейших назначения словаря данных состоят в централизованном ведении и управлении данными как ресурсом на всех этапах проектирования. Гораздо проще организовать и управлять разработкой с помощью автоматизированного словаря данных. В случае применения "ручного" или не интегрированного словаря в нем время от времени может происходить нарушение непротиворечивости информации по отношению к фактическому состоянию системы. безопасности и доступа. то доступ к нему надо также разграничить. Если словарь данных применяется для разграничения доступа к базе данных. Однако неавтоматизированный словарь данных не может обеспечить получение по-разному отсортированных списков элементов данных. словарь данных. Внедрение словаря данных должно быть хорошо продумано по времени и объему. В отношении хранимой в словаре информации должен быть реализован режим секретности. какой именно остаток имеется в виду: "остаток на счете на начало дня". что существуют готовые решения. если пользователь обладает соответствующими полномочиями. необходимо постоянно поддерживать его копию. Обновление самих данных допускается лишь после проверки их корректности средствами СУБД. СУБД и база данных образуют замкнутый контур. За сохранность словаря данных как жизненно важной части системы с базой данных полностью отвечает администрация базы данных. реализации и эксплуатации системы. каким образом удовлетворить запрос пользователя: обратиться к локальной базе данных или. За ввод данных в словарь ответственность несет администратор БД. что словарь данных можно вести "вручную на бумаге". которая может использоваться для восстановления словаря после возникновения отказа всей системы или в случае непреднамеренного разрушения его рабочей версии. "Остаток на сберегательной книжке" увеличивается сразу после того. а также ограничения секретности.едином . но если вклад сделан с помощью чека (вдруг вы разрабатываете систему обработки данных для использования на ужасном Западе). как клиент делает вклад. Как и другие планируемые действия в системе обработки данных. во входных и выходных форматах. На ранней стадии проектирования выявляются далеко не все связи между данными. Один и тот же элемент может неодинаково использоваться в различных приложениях. так и к внешним. а другие . В банковской системе одним из центральных элементов данных является "остаток". Впоследствии обнаруживается. которыми пользуются разработчики. соединенных линиями связи.источнике. Словарь данных может использоваться для централизованного накопления информации обо всех элементах данных и для обеспечения эффективного взаимодействия между всеми участниками проекта. В идеальном случае интерфейс между СУБД и словарем данных должен обеспечивать доступ системы словаря к справочникам СУБД. которые подходят для всех без исключения предприятий. то "фактический остаток" увеличится только после оплаты чека. передать запрос на внешнюю ПЭВМ. Однако в главной таблице счетов соответствующей системы в записи по одному счету может храниться до двадцати пяти полей. чтобы и пользователь и разработчик представляли себе. Поскольку словарь данных является центральным звеном системы. Таким образом. Процесс проектирования же становится в таком случае трудно управляемым. необходимо приложить значительные усилия. так как неверный шаг здесь может привести к неудаче всего проекта системы обработки данных. Одни рабочие станции в сети могут обращаться только к локальной базе данных. что данные применяются в разнообразных приложениях. как это будет зарегистрировано в словаре данных. например. В идеале словарь данных должен быть неотъемлемой составной частью всей системы обработки данных. Таким образом. Следует строго ограничить круг лиц. Существует мнение. а также в обеспечении эффективного взаимодействия между всеми участниками проекта. Каков остаток на данном счете? Для большинства неспециалистов ответ очевиден. в которых хранится информация о ее текущем состоянии. В случае распределенной базы данных вся она или ее отдельные части могут размещаться на удаленных друг от друга вычислительных машинах. в именах которых присутствует термин "остаток". связанных между собой. из которого программисты смогут копировать описания структур данных и включать их в свои программы на всех этапах проектирования. С помощью этой информации словарь данных может "решить". В настоящей книге словари данных рассматриваются в контексте совместного использования с СУБД. "фактический остаток" или "остаток на сберегательной книжке". которым разрешено модифицировать словарь данных. и всякий раз рассматриваются в различных контекстах.

Только при этих условиях могут быть использованы все преимущества использования словаря данных. в области централизованного накопления информации. На прилагаемой к книге дискете вы найдете пример словаря данных для рассматриваемой в качестве примера системы обработки данных AUTO STORE. но и создание интегрированной базы данных всей предметной области может оказаться преждевременным. редактировать имена индексов. изменять их тип. Пароль соответствует имени пользователя. Скорее всего эксплуатируемые с использованием СУБД прикладные программы имеют большое значение для предприятия и.converted to PDF by HupBaH9I Подчас не только реализация всеобъемлющего словаря данных. она должна быть развивающейся. где будет отражаться структура БД Auto_Store. Данная программа позволяет создавать ту же БД Auto_Store на MS SQL Server.16. то это самый подходящий случай для внедрения словаря данных. разрядность. Права доступа каждого из пользователей можно просмотреть. Словарь данных может применяться в прикладной системе средних размеров. точнее. Вход в программу . не слишком тесно взаимодействующей с другими системами. Рис. что можно узнать из подсказки. В этой же программе после построения СД вы сможете проектировать словарь данных. Вход в программу. И наконец. заголовок поля. пока в этом направлении не будут достигнуты определенные успехи. а также при подготовке и распространении документации. Т р ад и ц и о н ная п р и клад н ая си стем а. Если предполагается расширить круг прикладных программ. значение по умолчанию. Обратите внимание на уровень доступа. текст сообщения. После запуска программы на экране появится форма. Однако при разработке новых прикладных систем эта работа выполняется впервые.1 6 . а также регистрировать пользователей на MS SQL Server и предоставлять определенные права доступа к БД Auto_Store или. и документирование новых приложений неизбежно. комментарий для поля. их всего пять. и до тех пор. Если предприятие планирует расширить круг используемых прикладных программ. кроме того. Н овы е п р и кла д н ы е програм м ы . Программисты не всегда хорошо относятся к необходимости документирования уже существующих прикладных программ. находящегося на панели инструментов (рис. трансформировать имена таблиц и наглядно анализировать связи между таблицами. Н еско лько при лож ений для обработки д а н н ы х . со временем претерпевают определенные изменения. 2. устанавливать значение NULL.17). Выбор пользователей производится из списка. При успешном наборе пароля откроется доступ к кнопке "Вход". права доступа к полям таблиц базы данных. а именно: редактировать имена полей таблиц. выбрав пункт "Права" из главного пункта меню "Разработка и проектирование". его установку производить не следует. 2 . В качестве первого приложения словаря данных можно избрать один из следующих вариантов. показанная на рис. Ведение словаря данных предполагает обучение пользователей. С помощью этой программы вы сможете создать базу данных и словарь данных. правила проверки. то внедрение системы словаря данных позволит использовать его возможности по обеспечению взаимодействия между пользователями. система должна решать важные для предприятия задачи. Для дальнейшей работы с программой необходимо ввести пароль. изменять их тип. 2. Кроме того.

19 изображена форма в момент построения словаря данных. Панель инструментов для выбора пользователя С оздан ие б азы д а н н ы х . Выбираем пункт "Построение Словаря Данных" из главного пункта меню "Создание и построение" и в открывшейся форме щелкаем по кнопке "Старт". . Не забудьте щелкнуть по кнопке "Финиш" по завершении создания базы. 2. 2 . Аналогично строится словарь данных. Выбираем пункт "Создание Базы Данных" из главного пункта меню "Создание и построение" и в открывшейся форме щелкаем по кнопке "Старт". 2. Рис. После выполнения описанной процедуры предоставится возможность построения словаря данных. На рис.1 7 . 2. На рис. П остроение словаря д а н н ы х.18 изображена форма в момент создания базы данных. Здесь все очень просто.18. После щелчка по кнопке "Финиш" можно начинать проектирование словаря данных.converted to PDF by HupBaH9I ■ _1 мё Ьлена *1 Карина I ш нав i d L±J ж ^ 3 Иона И[id Рубвн Рис.

.21)..> IfL-y^Mlinin Илу_пгн1п| Г... i L_ " Рис. если перед этим заголовок имел вид русского эквивалента наименования таблицы.. если заголовок имел вид наименования таблицы. Двойной щелчок левой кнопки мыши по заголовку таблицы позволяет переименовать заголовок таблицы (рис..1 9 С ло вар ь д а н н ы х . 2.. изменяет наименование заголовка русским эквивалентом наименования таблицы. s8 ^ " П С трана 3 -J i. „ .. -h ■ ины 1 k hey lyre namejyre ... наоборот. 2 . • • • Щелчком левой кнопки мыши по заголовку таблицы активизируется список полей данной таблицы. _ . предусматривающая следующие действия: С ш ц » Дш п т Продавец key_cu51Qmer mnns_cuitDme_ sdfress fci^tustameh _J hey_ssnm<i Ij£-1^narrit ktyjnadel Iirs1_rams k*y_£)rdef . 2..... iisy_fi|(n na^nejiim fcfy^Ounlrf " к«у_Шт Key_1uel_Dil ■ : ■ Продажа |к с о и Я _ ШЯФ_Еа1в 1 ^ ТОПЛИВФ [ шшЛмн i j p . 2 . и.2 0 . indexes.. Щелчок правой кнопки мыши по заголовку таблицы приводит к замене наименования заголовка на физическое наименование таблицы. .converted to PDF by HupBaH9I Ри с. v^y_model nafrie_mudel _ * * „„и.20 показана форма словаря данных. На рис.| : -4 5® ■“ “ п" d M fj n « w n Фирма S k d J nama_?uE]_inl — indeji&S — ara huv iud j S Sut key «Jo Кузов I Ш нгу body n-a!ria_body __ I — indeses-..

что после просмотра данного примера у вас появится желание создать собственный словарь данных и включить туда целый ряд дополнительных возможностей. • • Щелчок левой кнопки мыши по списку полей таблицы активизирует список полей данной таблицы. Поэтому при эксплуатации БД крайне необходим учет различных требований и наличие алгоритма разрешения конфликтов. Администрирование базы данных С базой данных. Двойной щелчок левой кнопки мыши по списку полей таблицы вызывает Конструктор таблицы на вкладке поля (рис.23). для каждого поля таблицы включить определение класса.2 1 .converted to PDF by HupBaH9I 51 I . например. jif Проектировщик таблицы Е | Таблиц® [Model Ивд&кс ы Поля Наименование * Null Тип Ширина Десят. 2. Эти пользователи в организации могут выполнять совершенно различные функции.22). 2 . иметь различные представления об используемых данных.М Переименование Наименование: Примечание: |A u to m o b ile _p asse n g e r_ca r Применить А втом обиль Отменить Рис. 2.2 2 . • • • Щелчок левой кнопки мыши по имени индекса под списком полей таблицы активизирует индекс данной таблицы.4. обеспечивающего работу с данными. keym odel Fnteger 4 0 n a m e jn o d e l C h aracter 20 a кеуП тт Integer 4 0 swnpt volum e N um eric 1 l*d a quantity _drum N um eric 2 Q Правило проверки: Текст со зпщений- swept_vo1ume>1 A I менип О тен и ть 1-лЛИТЬ Комментарий для поля: З н ач е н и е рабочс J Значение по умолчанию: 1 Заголовок поля: Рабочи й объем ( Рис. Щелчок левой кнопки мыши по связи между таблицами позволяет выделить данную связь. . но пользоваться ими одновременно. взаимодействуют несколько пользователей. 2. Двойной щелчок левой кнопки мыши по имени индекса под списком полей таблицы вызывает Конструктор таблицы на вкладке индексов (рис. как правило. Мы думаем. 2 .

Оно зависит прежде всего от степени значимости базы данных для жизнедеятельности данного предприятия. при проектировании базы данных необходимо добиваться ее максимальной гибкости или максимальной независимости данных. связанных с администрированием БД. АБД должен координировать действия по сбору сведений. Администрирование базы данных предполагает обслуживание пользователей базы данных. Хотя от АБД и требуется техническая компетентность. а АБД . Поэтому решение проблем. Администратором базы данных (АБД) называется лицо. Это не соответствует целям администрирования. Как мы уже отмечали. В соответствии с этой функцией на определенных лиц возлагается ответственность за сохранность такого важного ресурса. которые должны быть скоординированы с функцией администрирования базы данных. нужно ввести долгосрочную функцию администрирования. чем техническими. Переход при обработке информации на технологию баз данных и расширение существующей базы данных связаны со значительными финансовыми затратами. В большинстве случаев СУБД покупается в виде программного пакета. Следовательно. Уровень АБД в иерархии организации должен быть достаточно высоким. Это требует разработки процедур обеспечения непротиворечивости данных. ответственное за выполнение функции администрирования базы данных. Вторым фактором является уровень сложности обработки данных и организации коммерческой деятельности.ресурсы. как работает предприятие и как оно использует данные. чтобы он мог определять структуру данных и право доступа к ним и нести за это ответственность. а также по обеспечению защиты данных. Одной из целей создания базы данных является обеспечение информацией пользователей. которые называются данными. АБД чаще всего назначается из числа прикладных программистов отдела обработки данных. Однако это часто означает. а администрирование БД является прерогативой предприятия. он утрачивает с ними контакт. растет день ото дня. как данные. Но появилась потребность в управлении коллективным использованием данных. Во многих организациях по странной традиции АБД рассматривают только как квалифицированного технического специалиста. АБД обеспечивает обобщенное представление о предметной области в виде концептуальной модели. Ревизор защищает ресурсы предприятия. С появлением баз данных необходимость в индивидуальном хранении и использовании информации отпала. Каждый пользователь блокирует свои данные. часто начинается с установления общих принципов эксплуатации СУБД. что предопределяет необходимость тщательного планирования и управления этим процессом. проектированию и эксплуатации базы данных. хотя между СУБД и администрированием БД имеется различие. и параллельно с этим усложняются обрабатывающие эти данные прикладные программы. Кроме того. которое необходимо обеспечить на самых ранних стадиях разработки.не "обладатель" базы данных. Характерное для многопользовательской среды использование хранящихся в компьютере данных заключается в "захватывании" файла данных. направленную на координацию и выполнение всех этапов проектирования. В противном случае АБД не сможет эффективно выполнять свои функции. Можно провести аналогию между АБД и ревизором предприятия. которая представляет модель данных предприятия. часто совмещающего функции программиста. АБД . количество данных. а также умение общаться с людьми и подчинять альтернативы стандартным процедурам. Так как в случае использования базы данных прикладной программист "устраняется" от непосредственного управления данными. однако его положение на предприятии может быть различным. так и текущие информационные требования предметной области. что ни один из этих пользователей не испытывает чувства ответственности и об общих интересах заботится в . помещаемых в базу. Правильная реализация функций администрирования БД существенно улучшает контроль и управление ресурсами данных предметной области. которые называются деньгами. реализации и ведения интегрированной базы данных. не допуская остальных к их использованию. что не всегда оправдано.converted to PDF by HupBaH9I Иными словами. а ее "хранитель". и чувство ответственности за них. АБД обязан хорошо представлять себе. Это вынуждает других пользователей накапливать те же самые данные. В результате расширяется спектр функций администрирования. Это одна из его главных задач. работающих в различных функциональных областях предприятия. АБД обязан учитывать как перспективные. С этой точки зрения функции АБД являются скорее управляющими. а следовательно. С усложнением предметной области неизбежно усложняется процесс формирования информации и принятия решений. В этом параграфе мы познакомимся с задачами и функциями администрирования БД. не менее важным является понимание им предметной области. Принципы работы АБД и его функции определяются подходом к данным как к ресурсам организации. Все это требует наличия централизованного управления на каждом этапе жизненного цикла системы с базой данных. Весьма заманчиво наделить АБД широкими полномочиями.

Таким образом. Выступая в роли посредника между отделами. третьих ободрить. Это означает. Неизбежным результатом такого отношения является превращение АБД в координатора. АБД приходится убеждать некоторые отделы. и это иногда существенно усложняет работу АБД. присвоение различных имен. АБД идет по пути решения технических проблем. но и настроить их враждебно против всего проекта разработки базы данных в целом. установление взаимосвязей между элементами данных. связанных с использованием СУБД. функции АБД не может исполнять человек. Сбор всей этой информации из различных источников и необходимость ликвидации возникающих между отделами трений требуют. Во многих случаях. которым приходится обращаться к базе данных. ознакомлены с ними и несут ответственность за выполнение стандартов. а также знать позицию руководства. то есть прежде всего вопросов. Идея "разделения" может не только вызвать противодействие со стороны некоторых отделов. Как уже отмечалось. Это означает. Очевидно. восстановивший за время работы против себя многих сотрудников. если необходимо. либо контролировать доступ к легко искажаемой информации. удалять пользователей. чтобы различные специалисты пришли к соглашению относительно объектов предметной области. выпуск текстового описания элементов данных. сотрудники служб эксплуатации и сопровождения системы должны понимать процедуры. назначать существующим пользователям имена. обладать определенным стажем работы и хорошо разбираться в обстановке на данном предприятии. а затем и логической модели базы данных предметной области. а кого-то. и принудить. На рис. что АБД должен уметь пользоваться своей властью и влиянием. Реализация руководящих материалов может быть успешной только в том случае. чем текущим проблемам. что АБД необходимо установить эффективную взаимосвязь со всеми группами сотрудников. Для выполнения функций АБД необходимо хорошо представлять себе состояние дел предприятия и перспективы его развития. чтобы АБД обладал еще и дипломатическими способностями. назначать привилегии доступа относительно каждого уровня доступа. контролирующих обновление данных. что база данных предусматривает объединение данных без учета функциональных границ. то есть распределении функций между персоналом. Первая важная задача АБД состоит в устранении противоречий между различными направлениями деятельности организации при создании концептуальной. Однако оно существует. выделение отделов или пользователей. чтобы это соглашение было "правильным". когда все сотрудники.converted to PDF by HupBaH9I последнюю очередь. При выдвижении кандидатуры на пост А б д следует руководствоваться теми же критериями. пароли. уровни доступа. соответствующие описанным функциям.25 изображены формы.24 и 2. . чтобы они "передали" свою собственность в общее пользование. других уговорить. Кроме определения данных и прав доступа к ним от АБД может потребоваться разработка процедур и руководств по ведению данных. 2. заметим. он должен добиваться не только того. их непротиворечивость). которые будут использоваться для обращения к элементам одного и того же типа. но и того. определение путей применения элементов данных в целях управления и планирования. На начальной стадии разработки базы данных АБД следует сконцентрировать внимание на следующих проблемах: • • • • • определение элементов данных и объектов предметной области. что она позволяет: добавлять. устанавливаемых АБД. имеющие отношение к базе данных. Возвращаясь к рассмотренной в конце предыдущего параграфа программе Auto_Store. Выполнение этой обязанности осложняется еще и тем. что и при назначении на посты других управляющих. требуемые для решения стоящих перед ними задач. Прикладные программисты. ответственных за обеспечение точности данных (например. поскольку рассмотрению долговременных потребностей предприятия АБД обязан уделять не меньшее (если не большее) внимание. понятие "единоличного владения" данными неприменимо к базе данных. к вопросу выбора АБД администрация предприятия должна подходить чрезвычайно серьезно. организуя базу данных. АБД должен одних убедить.

.2 4 . 2 . Кроме того.л Г ш ы тД О а г л а й т а ir ь.26. они разбрелись на цепью день Вечером | :дин из них еернупс* без H s n q jrw * сгибаясь лмЭ тяжестью I гчпм.и-з КА pir!& Гя. О-ЁБИуиз Г Insert 'O ^ R o r f y [7 Update ^^Aulomoliili? passRntjer г&г Ф Ш Gusto me г 4 ф 1Ш 1^1е ФйЭЛссочп! 5 cG:p^Ш0г(1 ег_ Г Delete ^ IH lS a le s n ia n Рис. 2. „J Уроаемь доступа. 1 гии?“ . 2. с помощью этой программы можно регистрировать пользователей для обращения к серверу. как это показано на рис.converted to PDF by HupBaH9I _U*J Ga тимннст poumh 11VЛ Пэрсль _of|in name Группа Log ii pas I Кч1рн1нл Laginjev? in a PilHT HJTCUJfl Пенэ Login_lev3 tuv3 РИет_дгонр t при л Епенз Login_lev4 Invi РНяг_дгонр Ира И[»а LoginlevS lov^ РИег_дгвнр Pjfien Руиеи Lo g injevl Iowl Pile r_g roup КЭрннэ ►Пени I Группа двыятелей отправилась охотиться на оленей I Разбт илкь по двое.25. и мйлч п. ^11 Рис. Ш| Лраи Уровень д о ступ а 1 О ЕЛ К о d e l 4> № u i Ф О Н Country ■3>PFuel_oil > 2 3 F Sale cl.

Средства быстрой разработки приложений 3. как показал наш опыт общения с большим числом программистов. Поэтому мы решили включить в эту главу материалы и на эту тему. В этой главе мы обсудим сильные и слабые стороны рассматриваемых в книге средств разработки. MS SQL Server 3. Руководство для покупателя После того как в предыдущих двух главах мы обсудили важнейшие вопросы теории построения баз данных.converted to PDF by HupBaH9I Рис.4. .3. Кроме того. как мы надеемся.1. что. Visual Basic 3. Для начинающих программистов мы предусмотрели небольшой обзор каждого продукта. даже самые опытные из них часто слабо представляют себе комплектацию коммерческих средств разработки и возможности предлагаемого вспомогательного инструментария. Access Запросы Формы Отчеты Макросы Система защиты 3. Visual FoxPro Project Manager Database Designer Form Designer Visual Class Designer Query / View Designer Connection Designer Report/Label Designer Menu Designer Вспомогательные средства разработчика 3.2.6. 2 . пора посмотреть на те средства. существенно сократит сроки его освоения.2 6 .5. с помощью которых программист воплощает свои идеи в жизнь. Форма для соединения с SQL Server Глава 3 Обзор возможностей и особенностей различных СУБД 3.

Средства разработки Microsoft отлично интегрированы между собой. 3. Здесь же заложена возможность применения компонентной технологии создания приложений. . не зависящие от источника данных. позволяющая разрабатывать многоуровневые приложения. как телевизор и другую привычную нам бытовую технику. облегчающие труд программиста. В этом параграфе мы изучим основные черты рассматриваемых в книге средств создания приложений для обработки данных и попытаемся их сравнить. позволяющая разрабатывать приложения неограниченной сложности и обеспечивать потребности целого предприятия в обработке данных. Visual Basic. в которых заложены идеи RAD. складывающего его из кубиков. в англоязычной компьютерной литературе имеет очень лаконичную аббревиатуру .converted to PDF by HupBaH9I 3. и поэтому всегда можно использовать наиболее эффективный в конкретной ситуации пакет программ. SQL Server. Visual C++ и Visual FoxPro. Почти каждый месяц появляются новые версии этих продуктов той или иной фирмы . предоставляющие возможность заменить написание программного кода рисованием пользовательского интерфейса и заданием необходимой функциональности диалоговыми средствами. Эта идея и воплощается в современных версиях пакетов программ для создания систем автоматизации обработки данных. Программами Microsoft пользуются десятки миллионов человек во всем мире.производителя программного обеспечения.дать нам много разных кубиков. каждый компонент которого может быть использован при разработке больших проектов масштаба предприятия.1. Задача программиста взять нужный кубик и поставить его в нужное место. так и в качестве интегрированного набора. Единственный путь. где о них не помышляли еще год назад. В мире уже используются десятки миллионов персональных компьютеров и их число постоянно растет. Это основная идея RAD! Перечень современных средств разработки систем автоматизации обработки данных. Ни один строитель не построит дом быстрее малыша. которые отвечают требованиям RAD. позволяющее очень эффективно использовать модульный принцип составления программ. которые могут быть использованы для создания пользовательского приложения по обработке данных: Access. которые можно реализовать с помощью рассматриваемых программ. уводящий от необходимости превратить все трудоспособное человечество в программистов. Визуальные средства разработки. незыблемые атрибуты цивилизации.RAD (Rapid Application Development) и все чаще встречается на страницах специализированных изданий. казалось бы. В этой книге мы расскажем. поддерживают все современные протоколы обмена данными. Естественная реакция компьютерной индустрии на информационные потребности быстроразвивающегося общества. Эта компания в настоящий момент предлагает пять пакетов программ. "Почему Microsoft?" .самая крупная и на данный момент наиболее удачливая фирма-производитель программного обеспечения. Сравнение средств разработки Microsoft Н азвани е О сновны е Основное . причем этап революционный. весьма обширен. Задача современного средства разработки . Они включают все новые и новые возможности. развития информационных технологий. С этой точки зрения характеристика всех пяти продуктов приведена в табл. Поддержка стандартных протоколов обмена данными между приложениями. Авторы все вместе и каждый по отдельности дали на это несколько ответов: • • • • Microsoft .для решения конкретной поставленной задачи. Компьютеры применяются в тех областях. А увеличение числа и расширение сферы применения компьютеров ведет к увеличению потребности в программном обеспечении. А сейчас попробуем очертить сферу применения средств разработки Microsoft.спросит пытливый читатель. как создать систему автоматизации обработки данных с помощью средств разработки Корпорации Microsoft.1 . Эти средства могут быть использованы как по отдельности . Можно выделить следующие отличительные черты таких средств разработки: • • • • Наличие объектно-ориентированного языка программирования. Компьютеры начинают вытеснять даже такие. Средства быстрой разработки приложений Фраза. В последующих главах на конкретных примерах мы покажем наиболее эффективные решения. вынесенная в заголовок этого параграфа. Что это такое? Это очередной этап.1. Т аб л и ц а 3 .резкое повышение эффективности средств разработки программ. Лично я знаю и умею использовать только средства разработки Microsoft. Возможность создания приложений клиент-сервер.

Наибольшая скорость работы приложения. даже для краткого рассказа потребует книги более объемной. Возможность создания компонентов OLE. Создание компонентов приложения для выполнения критичных по скорости процессов или обеспечения функциональности. Создание приложений средней мощности. 3. Высокая скорость обработки данных.1 средства разработки за исключением пакета Visual C++. подтверждающие наше утверждение о возможности их совместного использования для разработки пользовательских . Разработка компонентов OLE. Хранение больших массивов данных. Возможность использования непрофессиональным программистом. не связанных с большой интенсивностью обработки данных. Высокая производительность Visual Basic Универсальность. который. Windows 95 .. Многоплатформенность назначение Создание отчетов произвольной формы на основании различных данных.converted to PDF by HupBaH9I продукта преимущества Access Простота освоения. Интеграция объектно­ ориентированного языка программирования с Xbase и SQL. не достижимой в других средствах разработки. Создание приложений масштаба предприятия.). Создание приложений для интеграции компонентов Microsoft Office. Имеет мощные средства подготовки отчетов из БД различных форматов Высокая степень SQL­ Server защиты данных. Неограниченная функциональность Visual FoxPro Высокий уровень объектной модели. Рассмотрим теперь более подробно перечисленные в табл. Мощные средства работы с данными. требующих соблюдения режима секретности или при не допустимости их потери. чем лежащая перед вами. Создание приложений для работы на различных платформах (Windows 3 . Невысокие требования к мощности ПЭВМ Visual C+ + Универсальность. Какие общие черты имеют рассматриваемые средства разработки.x . Хранение данных.. Macintosh и т. являясь инструментом профессионала. Разработка не коммерческих приложений. д .

мы можем использовать функциональные возможности различных пакетов программ для выполнения с данными специфических операций. RDAO. или . Помимо этого. Целое положительное число от 0 до 255. 3. месяц и год. при совместном использовании различных средств разработки приложений нас больше всего будут интересовать данные. Используется для хранения изображений. Мы можем легко разрабатывать приложения. Lo g ical. для вывода в виде сложного графика с использованием Мастера подготовки графиков Excel. C u rre n cy. доступных в рассматриваемых средствах разработки.converted to PDF by HupBaH9I приложений различного уровня сложности? Во-первых такие новые технологии. Конечно. файлов и т.2 приведен перечень типов данных. n Text varchar(n) Count Нет dbLong Нет Currency Y dbCurrency money Date D Нет Нет DateTime T dbDate datetime Logical L dbBoolean bit (Yes/No) Numeric N Нет float n d Тип данных Integer Integer Double Float Нет I B F General G (OLE Object) Memo M Single Нет Character C (binary) Memo M (binary) • • • • • • • • n n d - text real Нет - - n - Нет - - dbInteger dbLong dbDouble smallint int float float dbLongBinary image dbMemo dbSingle Нет Нет Занимаемый объем до 1.T. DAO. D ate Tim e. Булево выражение для .2 Гбайт 1 байт 4 байта 4 8 8 8 1 байта байт байт байт байт от 1 до 20 байтов 2 байта 4 байта 8 байт от 1 до 20 байтов 4 байта 4 байта 4 байта 1 байт на символ 4 байта B in a ry Im a g e . В табл. ActiveX и пр. который автоматически наращивает свое значение при добавлении записи. . Count. как OLE.. C h a ra cte r. хранящихся в формате Access. B y te . Денежное выражение для числовой величины. Счетчик. D ate.. д. написанном на Visual FoxPro. за счет OLE Automation. ODBC. Выражение для даты может содержать день. Эти технологии закладывают возможность использования в одном приложении данных. Любые данные в двоичном виде. В этой книге мы постарались обратить на них самое пристальное ваше внимание. Символьное выражение может содержать любые символы (до 254 для одного поля). день. данных. Выводит число с четырьмя десятичными разрядами и установленным обозначением используемой денежной единицы. независимые от данных.F. месяц и год. Начальное значение 1. что для этого типа данных задание конкретных величин не требуется. Т аб л и ц а 3 . Выражение дата и время может содержать время. которые они поддерживают.2 . Прочерки в двух предпоследних колонках таблицы обозначают. хранящихся в различных форматах. Классическим примером такой возможности является подготовка в приложении. Типы данных Visual Access и MS SQL Длина Число FoxPro Visual Basic Server десятичных разрядов Binary Нет dbLongBinary bynary(n) n Image байт Byte Нет dbByte tinyint 1 Character C dbText char(n).

. которая позволяет легко сделать то. как правило. Целое число в диапазоне от -32. Double. Это совершенно новая программа. Поле примечаний для ссылки на блок данных. Visual FoxPro Visual FoxPro . In te g e r (d b In te g e r). То же. что в предыдущих версиях давалось с величайшим трудом или было просто недоступно.401298E-45 до 3. Главное окно Visual FoxPro приведено на рис.не просто следующая версия одной из наиболее быстрых СУБД для персональных компьютеров.94065645841247E-324 до 1. о чем мы уже говорили ранее.402823E38 до 1. что числовое выражение. обеспечивающие возможность создания пользовательского приложения. В зависимости от назначения средства разработки.402823E38.767.2. 3 . от состава которых. Можно хранить значения от 4. средства разработчика. Функциональная схема интерфейса СУБД 3. зависят функциональные возможности и мощность разрабатываемых программ.768 до +32. имеют сходный функциональный состав. C h a ra cte r (b in a ry ). Числа с плавающей точкой двойной точности. Числовое выражение может содержать целые или дробные числа со знаком.3. — М астера Рис. Целое число.назовем их пользовательскими средствами.79769313486232E308. Число с плавающей точкой одинарной точности. Memo. в Access пользовательские средства развиты значительно сильнее.converted to PDF by HupBaH9I • • • • • • • • • • N um eric. 3. Можно хранить отрицательные числа от -3. S in g le .1 . как правило. Отражающая такой подход функциональная схема интерфейса СУБД представлена на рис. где они рассматриваются как вспомогательные функции. Поле примечаний для ссылки на блок данных. 3. Можно хранить числа от -2147483647 до 2147483646. Flo at. не подвергаемых трансляции в другую кодовую страницу. Символьное выражение. Оставлено для совместимости. и дополнительные средства. Поле для ссылки на объект OLE. Memo (b in a ry ). Например. состав различных средств в конкретной СУБД может значительно отличаться. в который входят диалоговые средства для работы с данными .1. не подвергаемое трансляции в другую кодовую страницу. Все СУБД. чем в Visual Basic. G e n e ral.401298E-45 и положительные числа от 1. In te g e r (d b Lo n g ).

4. Тип создаваемого файла можно выбрать из появляющегося диалогового окна. Дадим краткую характеристику основным командам меню. 3 .converted to PDF by HupBaH9I Плавное ыаию Стандартная панель инструментов ■MirmFftFVlliinlI№1Ко £Ув gdl ilffisi FgrniBi la d s ■tel* Йсдтап ^tfndaw а И к М Ш Ж Ь Ы Ш ] ! --- 1 в [и 1 ш ш И И Н И И Н Я Н Н Н Л пТк] d ggCammfiiiil 1 d d_J Стэтус-строкэ дли вывода 11 *П Окно Command оперативной информации Рис. Меню File включает основные функции для работы с файлами: • N ew . . напоминая интерфейс иных программ Microsoft.3 . Интерфейс Visual FoxPro отвечает представлениям о современной графической среде. Основная работа с данными в Visual FoxPro выполняется с помощью различных инструментальных средств. 3. поэтому команды меню часто имеют вспомогательный характер и их состав гибко меняется в зависимости от того. представленного на рис. какое средство активно в данный момент. делает работу интуитивно понятной.создает новый файл.

E xp o rt .сохраняет активный файл с другим именем. сделанные в активном файле с момента последнего сохранения.копирует из буфера обмена хранящиеся там данные в место расположения курсора. закрываются все открытые окна. Im p o rt .converted to PDF by HupBaH9I Bbltijfj runs издаваемо'о файла или коучснэнта И Ч.позволяет экспортировать данные из Visual FoxPro в другие форматы. этикетку. программу.удаляет и записывает в буфер обмена выделенный фрагмент или элементы управления.позволяет отправить электронную почту при наличие на компьютере соответствующих средств.отменяет последнее выполненное действие.закрывает Visual FoxPro.4 . 3 .сохраняет изменения.позволяет импортировать данные в таблицу Visual FoxPro. P a ste S p e cial . • • • • • • • • • • • • Open . • • • • • • • Undo .позволяет просмотреть на экране результат выполнения отчета или этикетки. сделанные в активном файле.удаляет выделенный фрагмент или элементы управления. отчет. . File Tvpe Проект -f* l-Yojg:-: Создаьие файла База данных Таблице Запрос Соед!' чение 11радставлен 1'а Внешнее представление it ГЭрП/1 I Отчгт Эти/етка Прогремма Юикз: Текстовый юайл Мэню -С Ualito^^e М!=!•■ ■ ■“lie Г ТаЫе ~ С Qllgiy -С Гл п п р ггг B=ildии Мастера -с jdtiw (*■Не ro te Vi ev/ Vv^ad -С | Dim -С Перэи Г I алп! -С Ргосгот f Class . Если вы удерживаете клавишу S h ift. P rin t P re v ie w .связывает или встраивает из буфера обмена хранящиеся там OLEобъекты в место расположения курсора. C le a r .закрывает активное окно.Г Tod Fib -Г' kt CariLtl Нэ1р O tm ci 13 В ы э о п СП РЕ э ™ Рис. д. Redo . P a ste . а также облегчает работу с элементами управления и объектами в формах.открывает существующий файл. C ut .отменяет все изменения.восстанавливает последнее отмененное действие. Send .выводит на печать или в файл текстовый файл. отчетах и т. S a v e . P rin t .записывает в буфер обмена выделенный фрагмент или элементы управления. Page Setup .вызывает диалоговое окно для установки параметров страницы отчета или этикетки. S a v e A s . Copy . содержимое окна Com m and или буфера обмена (Clipboard). E x it . C lose . Меню Ed it позволяет выполнять редактирование программного кода или любого другого текста. R e v e rt .

Rem ove In d e n t . C la ss B ro w se r .устанавливает один межстрочный интервал для отображаемого в активном окне текста. C le a r .выводит на экран диалоговое окно для установки параметров конфигурации среды разработки.уменьшает размер отображаемого в активном окне текста. Find . связанные с выполнением программ: • • • • • • • • Do . оставляя возможным продолжение ее работы командой R esum e.выводит диалоговое окно поиска фрагмента текста. Susp en d .выводит на экран окно для визуального отображения выполняемого программного кода . и выводить на экран данные. R ep lace . при просмотре содержимого поля типа General).устанавливает полуторный межстрочный интервал для отображаемого в активном окне текста. которая выводит диалоговое окно для выбора размещаемых на экране панелей инструментов. Hide .позволяет сдвинуть влево линию или несколько линий текста на один интервал табуляции в окне редактора или окне Command. Меню T o o ls позволяет выполнить различные вспомогательные действия: • • • • • • • W iz a rd s . .заканчивает выполнение R esu m e .компилирует программу в псевдокод. и позволяет изменять внешний вид отображаемых данных с помощью следующих команд: • • • • • • • • Font .выводит диалоговое окно со списком объектов. R educe Font .выводит диалоговое окно поиска фрагмента текста и его замены на другой фрагмент. S in g le Sp ace .стирает содержимое активного окна. Debug W in d o w . на которой она была приостановлена командой Susp en d . Меню W in d o w содержит команды управления окнами: A rra n g e A ll . In s e r t O b ject . Меню Pro g ram содержит команды. Меню Fo rm at появляется всегда. которые можно встроить в активную форму или редактируемое поле типа General.converted to PDF by HupBaH9I • • • • • • • S e le c t A ll . При отсутствии на экране каких-либо средств разработки в этом меню доступна только одна команда . когда на экране есть активное окно.позволяет сдвинуть вправо линию или несколько линий текста на один интервал табуляции в окне редактора или окне Command. чтобы каждое было видимо. поддерживаемых активным объектом (например. M acros .располагает все открытые окна на экране так. T ra c e W in d o w .устанавливает двойной межстрочный интервал для отображаемого в активном окне текста. C an cel .T o o lb a rs. O b ject .запускает программу проверки правописания для содержимого текстового файла или поля примечаний (можно использовать для проверки правильности написания команд). например панелей инструментов. Com pile .выделяет весь текст или элементы управления в активном окне. E n larg e Font .запускает один из имеющихся Мастеров.позволяет присвоить клавиатурной комбинации выполнение какого-либо действия или набора действий.выводит диалоговое окно для редактирования или удаления связи с активным объектом Меню V ie w позволяет управлять появлением на экране вспомогательных средств. L in k s .продолжает выполнение программы со строки.выводит на экран утилиту работы с классами.выводит список действий. Double Sp ace .запускает программу на выполнение. Go To Line .выводит диалоговое окно изменения шрифта и его характеристик. 1 / S p ace .приостанавливает выполнение программы без выгрузки ее из памяти.выводит на экран окно для отображения текущих значений в процессе выполнения программы.выполняет быстрый переход на указанный номер строки в текстовом файле. O p tio ns . S p ellin g .увеличивает размер отображаемого в активном окне текста.скрывает активное окно. In d e n t .

возможность обновления данных на сервере через редактирование курсоров. обработка событий является непростой задачей. устанавливаемые между полями отдельных таблиц. видеть результат их работы. добавление или удаление данных и правила проверки целостности данных в БД. . традиционный Xbase язык в Visual FoxPro 3. 2. Таблица сохранила расширение файла DBF и имеет прямую совместимость со "старыми" DBF-файлами. так как позволяет немедленно выполнять почти что все команды Visual FoxPro и. Поддержка правой кнопки мыши позволяет избежать долгих путешествий по системе меню и значительно облегчает изучение новых возможностей СУБД. появился переключатель в виде анимационной пиктограммы (push pin).0. классы и подклассы. Com m and W in d o w . Основная единица хранения данных . которые будут определять реакцию системы на вносимые изменения. к которым может обращаться пользователь. 4. движения мыши. Visual FoxPro 3. что облегчает взаимодействие с другим программным обеспечением в среде Windows. Обеспечение полной интеграции Visual FoxPro 3. Среди рассматриваемых средств разработки это окно является уникальным. Отличительные черты Visual FoxPro можно описать следующим образом: 1. Разработчики систем автоматизации обработки данных кроме мощного набора визуальных средств проектирования могут использовать широкие возможности по интеграции систем хранения данных и доступа к серверам данных с помощью технологии ODBC. которое моделирует обработку события системой. которые часто используются в работе на полосе заголовка. которые позволяют быстро получить необходимую информацию о работе с Visual FoxPro. Обеспечение возможности быстрой разработки прикладной программы базируется на включении средств. Файлы баз данных имеют расширение DBC и при открытии автоматически поддерживают все перечисленные установки для входящих в нее таблиц. При необходимости можно иметь и таблицы. объекты могут быть созданы с помощью визуальных средств и многократно использоваться в любое время. как это и было раньше в DBF-файле. встроенный механизм обеспечения транзакций. позволяющие пользователю формировать компоненты своего проекта (объекты). так что по умолчанию система раньше. в столбцах и строках которой хранятся данные. Кроме того.0 в семейство прикладных программ Microsoft.выполняет переход к следующему открытому окну.делает активным или открывает диалоговое окно View. 5. весьма велико. свободные таблицы. V ie w W in d o w . следовательно. в которой можно описать все связи. В Visual FoxPro система организации данных наиболее близка к теоретическим основам реляционной модели и позволяет более естественно выполнять операции реляционной алгебры. и. В Windows число событий. Совместимость с ранее разработанным программным обеспечением в среде FoxPro. 3. обрабатывает объектные события. Обеспечение мощного набора инструментальных средств для программиста. Меню Help содержит команды. В связи с этим. Основные новшества . которые допускают перетаскивание объектов). Обеспечение полного набора средств для управления событиями. которые позволяют повысить скорость работы программиста. В первую очередь это средства объектно-ориентированного программирования. Единый интерфейс с наиболее популярными прикладными программами Microsoft делает работу в интерактивном режиме интуитивно понятной.это расширение встроенного языка SQL.0 значительно расширен. правила проверки.делает активным или открывает окно Command. позволяющий легко включить режим. соответственно. Помимо оставшейся возможности загрузки внешних функций посредством команды S E T L IB R A R Y появилась возможность обращения к функциям динамических DLL библиотек Windows посредством команды D EC LA RE.converted to PDF by HupBaH9I • • • C ircle . Таблицы объединяются в базу данных. основанных на функционировании Windows событий (например. которое содержит основной инструментарий для работы с данными.это таблица. программист теперь имеет полный доступ к набору стандартных. Кроме того. Наличие словаря данных делает более быстрой разработку структуры баз данных и облегчает ее дальнейшую эксплуатацию и поддержку. которые затем могут многократно использоваться. возможность обращения к серверу на том диалекте SQL. чем пользователи. который поддерживает сервер. Visual FoxPro обеспечивает полную поддержку OLE 2.0 имеет истинно управляемую событиями модель. Просто выберите курсором объект и нажмите правую кнопку мыши! На некоторых диалоговых окнах. Традиционно в Xbase от программиста требовалось написать собственный драйвер для обработки необходимого набора событий или положиться на READ-состояние ожидания. что позволяет создавать истинные объекты. при котором это окно будет всегда расположено на переднем плане. не входящие в БД.

Имеются процедуры БД для описания сложных условий правил проверки. Поддерживаются постоянные связи между таблицами. база данных в Visual FoxPro . Окно Browse Этот способ визуализации данных очень удобен. Допускается использование длинных имен полей. открывается отдельное окно. Маркер текущей записи __ Кнопка выаоаэ системного меню M&-D0S Z . так и в качестве заголовков для колонок в объекте Grid. Гг*" : з5' 'ii HcwB_p4. Просмотр данных в виде Edit позволяет работать сразу со всеми данными в одной записи. которые могут содержать такие типы значений. 3 . Каждому полю и таблице можно давать комментарии. .2 2 MS-DOS S 22 F iu il i .5 . Это облегчает задачу представления неизвестных данных и взаимодействие с MS Access и базами данных SQL. 3.1_p4c. ■■j П Л '| r Маркер деления окна на части Рис.22 Rur L agrafe iotn £-. Ijj'jc. Основным средством редактирования данных в оболочке FoxPro являются полноэкранные средства Browse и Edit (Change)."fci V /iro o s it ■V/orl. Предусмотрены правила проверки для полей и записей при изменении и вводе новых данных. К П П F.6. 3. ' _ _ _ \Vmcpt4iJj.это основной элемент организации данных. Browse позволяет редактировать данные в наиболее привычном для пользователя виде . Таким образом. размещенными в БД. которые могут использоваться как в окне Browse.4 V !№_t' V/lHOW г j. Поддерживаются локальные и внешние просмотры.или j ff ■'Л-’пгк^Т-Jlf.r rfv- i 'J Tis" I 3. как правило. который.Jdur ч ■"-/rnL i_. Для просмотра или редактирования данных в таблице достаточно открыть нужную таблицу и в меню View выбрать команду Browse. так как позволяет просматривать сразу несколько записей.y d e МЙПГЯ n ^ R u :: H IP MS-DOS 6.0 1Э odt-k 115' I Whc3wt3. а Edit .табличном. Вид открывающегося при этом окна Browse показан на рис.jp.5. Можно использовать соединения для связи с внешними источниками данных.з. но.' I i.в виде колонки полей. как это видно на рис. даже раскрытом на весь экран. открытой в какой-либо рабочей области.11 r iv №li i -■ . Введены значения по умолчанию для полей.5. выполняет функции словаря данных за счет поддержки следующих функциональных возможностей: • • • • • • • • • • • Допускаются длинные имена таблиц. Для просмотра данных из таблицы.r. c.V K'U iC' 2lT" -L I i 5Г. П J1 W n c w t k'j'tnti ст-Jp-'. редко когда все поля таблицы помещаются одновременно в окне. помимо формирования структуры представления информации. 3. Lp_3fste _ _ _ . Для полей помимо идентификаторов можно использовать заголовки. Л "Ta s " ’ a Hii.'D-i l~t hi Hr . Имеются триггеры для поддержания целостности данных." 1 i-drl-or far fi_3.converted to PDF by HupBaH9I Visual FoxPro обеспечивает поддержку значений NULL и выполнение операций с этими данными в соответствии со стандартом ANSI.

Append R eco rd s .1.: . 3 .id Код изготовителя С 0-051. Учтите. если вы ввели в нее хотя бы один символ. R ep lace Field . ММ Код проддкта Код изготовителя O46-0E5W1OO 201 GO Иллявниа п-акйта vltusl [li'j. Bottom .вызывает стандартное диалоговое окно Windows.-. Используйте возможности. Next . позволяющее указать записи. Для ввода и редактирования данных могут использоваться приемы. так как он позволяет избежать появления в таблице большого числа ненужных пустых записей. 3.выводит диалоговое окно. Опция Locate позволяет найти требуемую запись по ее содержимому.выводит диалоговое окно. выбрав одну из следующих опций: Top . На этих же рисунках даны необходимые пояснения по управлению окном просмотра с помощью мыши. R e call R eco rd s . Previous . меняется только вид представления информации. Append N ew Record . Font . предлагаемые в меню Edit. в которых необходимо убрать пометку для удаления.'-'011 Стпниостъ _ HE _ 20130 Название п акета К'асго AssBmbler Е 1 В ни носителя Г.ш ниммг. что при достижении курсором последнего символа в поле при вводе данных Visual FoxPro по умолчанию подает звуковой сигнал и переводит курсор в следующее поле. Окна Browse или Edit являются мощными средствами просмотра и редактирования данных. если текущая запись уже помечена для удаления. При этом работа с данными не прерывается.на запись с указанным номером. Переключаться между этими двумя видами просмотра данных можно с помощью соответствующих команд в меню View.6 . Обратите внимание. позволяющее установить характеристики для таблицы. позволяющее указать записи. которое позволяет выбрать удобный шрифт и подобрать его характеристики. Нажатие на клавишу T ab или E n te r приводит к перемещению курсора в следующее поле. Record# .выводит на экран диалоговое окно.на предыдущую после текущей. указав соответствующее выражение для поиска. Go to Record . Что предлагают нам команды этого меню? • • • • • • • • • • P ro p e rtie s . которые необходимо пометить для удаления. Дополнительные возможности для достижения наивысшего удобства работы заложены в меню Table.п 1. Rem ove D eleted Record . D elete R eco rd s .на последнюю.на первую запись.запускает команду PA CK для физического удаления помеченных для этого записей.6. 5" "Li.позволяет быстро перейти к нужной записи. только если вы не используете какой-либо индекс. при котором новая запись будет автоматически добавляться после ввода данных в текущую.позволяет указать записи.5 и 3. данные в которых нужно заменить на указанное значение. если в таблице описаны заголовки для полей. открытой в данной рабочей области.добавляет в таблицу одну новую запись. как видно на рис.на следующую после текущей запись.converted to PDF by HupBaH9I Код проддкта ZlJl 22 Код изготовителя 250-0ЕЛл-'100 H-аэаанне пакета hsrtran bwer s :. что данные в окне просмотра располагаются в порядке их номеров. . Добавленная запись будет сохранена. а для возврата в предыдущее удобно использовать сочетание клавиш S h ift + T ab . что. Togg le D eletion M ark . обычно применяемые при работе с данными в программах для Windows.позволяет перейти в режим добавления записей.0 f:i DOG Ciirdare m\ И М аркер отм етки на уд а л е н и е Рис.1 R k l П1м:и1 каи Л П" _J39„00 Код npuuiF.помечает для удаления текущую запись или убирает эту отметку. они используются в качестве идентификаторов. Мы настоятельно рекомендуем добавлять данные в таблицу именно этим методом. Не забудьте.

При этом вы изменяете ширину колонки. чем длина поля в таблице. Это очень удобно при работе с таблицами.i ^ 211 Add ел i i ч !ij.8 .D Код продукта Н а з в а н и е п а к е т а Fortran Power Station 1.T d s C '.позволяет синхронизировать перемещение по записям таблицы независимо от того.Р'ияч52?-' VAido^fOfWcikgiKHjes 5.'ii i ■ '■ 3 1 pjc "I'oet 5 iз Г5.0 Pro for Windows Visual Basic 3.1 В ид н о си тел я 9.0 Pro Н а з в а н и е п а к е т а iMacro Assembler 6. что позволяет видеть данные сразу из всех полей нужной записи.позволяет переместить текущую колонку в окне. _ MS-DOS 6 22 R li? MLR TPltEj 15" mu 5. 3. R e siz e P a rtitio n s .7 .00 Код iqnuiyKTa К од и з го т о в и т е л я 046-095AV100 I 20160 Н а з в а н и е п а к е т а Visual Basic 1. 3 .0 Вид н о с и т е л я 3. При достижении нужной ширины колонки необходимо нажать клавишу Enter.2 5 t Upf ■ ■■ 1КИ|2.1^ Г н ' б .0 for DOS Standard Visual Basic 1.1 l5bctftj&Kk. C hange P a rtitio n s .8.00 К од пр од у кт а | Macro Assembler 6.1 _ l Fortran Power Station 1. а не длину поля в таблице. данные будут прокручиваться при перемещении курсора внутри колонки.25' itniwi ” MS-DflE Ё ? j R us Llpiyatp t e n f " T Г рэск — 1— iCItajiS’ :W4S25" Windows J . Для больших таблиц можно рекомендовать организовать окно так. Название попета Windows NT Server 3. как это показано на рис.0 Fortran 5.7.позволяет в случае необходимости привести индексы в соответствие данным в таблице.0 Pro for Windows L С Visual C++ 1.оо.дает возможность изменить ширину колонки в окне для вывода данных из текущего поля.д| Инд ми д я д я [С ш н и п сп . R ebuild In d e x e s .0 w ijp^ 10224115'' Ш 1 a m f " j '' ' " ■_ I H— — f— .5 Upgrade jd MS Source Profiler 1. При отмене этой триггерной команды в каждой части окна просмотра записи будут перемещаться независимо. которые имеют большое количество полей.обеспечивает переход из одной части окна в другую без использования мышки. Разбиение окна позволяет оставить на экране какое-либо поле или поля при горизонтальном прокручивании данных. . l ~ "irl??cj W «jotf jsjti 96.0 for DOS Pro Visual Basic 1. Мы можем установить различные виды просмотра данных в отдельных частях окна. Пример разбиения окна Browse приведен на рис. Комбинирование двух видов представление данных в одном окне • • • L in k P a rtitio n s . Ik lJ ft - >| MS-DOS 6?? MS-[JQ5e 22 Hits Update нрцц|щт.4-4. В левой части окна просмотр данных установлен в стиле Browse и сюда помещена колонка с ключевыми данными для быстрого поиска нужных данных.5" С то и м о сть 109.| ii i __ ■I 1 ^ j i ■. Для этого достаточно перейти в нужную часть окна и в меню View выбрать соответствующую команду. в какой части окна мы перемещаем записи.позволяет изменить размеры частей окна просмотра или разбить это окно на две части.converted to PDF by HupBaH9I S iz e Field . 3. Если ширина колонки меньше.00^ sexo7 SSuOfr ч ^ Тч" Ш r Маркер изменения Активная часть окна размеров частей окна Рис.0 for DOS Stai T Vi?l i*al P.5" С той ко сть _ 499. 3 .0 for DOS Pro Upgratf Visual Basic 3. Move Field .. Правая часть окна организована в стиле Edit. -J— " i0i№ cxoj _ 2s" ~ 6 2S‘ зэ'.1 5 ^ rn| Ж Рис. если этого не было сделано ранее.1 20122 Ко я и зго то в и те ля250-051АУ100 ■ 20130 Код и з г о т о в и т е л я 016-051AV611________________ Visual Basic 1.

класс .3. отличные от свойства его класса. на основании которого он создан. 3. Visual FoxPro 3. Главное преимущество для разработчика здесь заключается в том. Основные типы файлов Visual FoxPro приведены в табл. Если нам нужен объект.компонентов прикладной программы. Классы и объекты . Т аб л и ц а 3 . происходящими при работе программы. более подробная информация по этому вопросу приведена в пятой главе.0 дает возможность пользователям создавать объекты как с помощью визуальных средств. однако новые расширения языка дают пользователям мощность и гибкость объектно-ориентированного программирования. Для описаний действий. то есть процедуры и функции. Вместо того чтобы ломать голову над программой. достаточно два раза щелкнуть мышкой в нужной ячейке окна или переместить туда курсор и нажать клавиши C trl + PgDn. Эти свойства объект получает из соответствующего класса. Класс содержит информацию о том. Для каждого класса список событий может меняться как в сторону расширения. имеющий свойства.два фундаментальных понятия объектно-ориентированного программирования. программист может и должен думать о создании объектов . так и сужения. расположенными в полях примечаний. EXE создаваемая на основе файла-приложения APP Файлы макрокоманд FKY Отчет FRX Поля примечаний отчета FRT Программа PRG FXP Этикетка LBX Поля примечаний этикетки LBT Поля примечаний меню MNT Меню MNX Сгенерированная MPR MPX программа меню . Типы основных файлов в Visual FoxPro Тип ф а й л а Расш и р ен и е Расш ир ен ие ф айла ф а й л а после ком пиляции Пользовательское APP приложение. разработанная в СУБД FoxPro.0 продолжает поддерживать стандартное процедурное программирование Xbase. начиная с первой строки кода. Visual FoxPro 3. что привязанные к событию методы выполняются автоматически и у нас даже есть возможность принудительно вызвать какое-то событие.3 . и при желании мы можем не обращать внимания ни на какую "объектность".converted to PDF by HupBaH9I Для работы с данными. Другими словами. мы должны создать подкласс с измененными свойствами и уже его использовать для создания объекта. используются методы. объявленные внутри класса и непосредственно с ним связанные. как объект должен выглядеть и вести себя. что предопределяет всю логику и методику разработки прикладной программы. включающее в себя отдельные программные файлы База данных DBC Поля примечаний в БД DCT Индексный файл БД DCX Таблица DBF Индекс IDX Составной индекс CDX Поля примечаний таблицы FPT Текстовый файл с ERR сообщениями об ошибках компиляции Выполняемая программа. может иметь достаточно сложную структуру и включать значительное количество файлов различного типа. выполняемых объектом.это прообраз объекта. так и программно на основании базовых классов Для описания объекта используется набор свойств. Прикладная программа. Методы легко координируются с событиями.

Project Manager Это центральный узел разработки прикладной программы. соответствующих Мастеров. одно из главных преимуществ Visual FoxPro 3. которая прежде всего и выражается в проектировании прикладных программ с помощью визуальных средств.это совокупность файлов. . информация о которых сохраняется в едином файле с расширением PJX.9. В Visual FoxPro компанией Microsoft был расширен набор инструментальных средств для визуальной разработки. Дадим краткую характеристику визуальных средств проектирования. данных. документов и объектов FoxPro.0. включенных в версию 3. Проект . Возможности и структура Project Manager приведены на рис. в частности. Как было упомянуто выше. используемый для организации и управления файлами в проектах.converted to PDF by HupBaH9I Файл элементов управления ActiveX Проект Поля примечаний проекта Сгенерированный файл запроса Форма Поля примечаний формы Текстовые файлы Визуальная библиотека классов Поля примечаний визуальной библиотеки классов Файл конфигурации Visual FoxPro - OCX PJX PJT QPR QPX SCX SCT TXT VCX - VCT - FPW - К радости разработчика большинство перечисленных файлов легко создается с помощью визуальных средств и. 3.0 .увеличившаяся производительность разработчика. В процессе совершенствования FoxPro одним из ключевых моментов являлось постепенное развитие визуальных методов разработки пользовательских программ.

‘ iUUr-^_ 11000 All Э D o cirre n le н а __________ f:=I DnCUnDII<C № Ctecc UbisriDC 0- О аяавг Coda | E OliH- | £ Нел-.. 3.9 . включаемых в этот пункт. звкрьтме ЕД аг№ табп^ц. Возможности и структура Project Manager Структурные единицы в Project Manager организованы в иерархической структуре просмотра. Coda МП1fy S' tH Other Bui d.lFsft. если в проекте имеется одна или более единиц.'jT-ilRflHyin ау и свертывг н ия оздо р ло и я проекта Пг^р|г:йние п эл ь зо ва гельсиои программ ы Удаление элемента мэ гроекта 3anytk и-пелнзеийга эгем * 1-та прсекта (преграмиы фаэмы н т. Очень удобно свернуть Project Manager к виду. д. и пользователи при желании могут перетаскивать файлы из одного проекта в другой. то есть реализуется так называемый "эффект отрывания закладки". предверите.. M±. похожему на панель инструментов. как это видно из рис. При этом не теряется возможность работы с нужными данными в нужном месте экрана. связанным с проектом.). можно раскрыть список и увидеть его содержание.converted to PDF by HupBaH9I /1^МКНИ1Ь SJIUMtHI lipUztt. A Drraipliofi =nr ЗнДЧЛК p^. без необходимости обращения к другим элементам интерфейса Visual FoxPro.10. Знак "+" появляется перед пунктом.lid Включи_ь с проект y iv e суи^Стсующий олзыемт С^^цать новый элем ентКниша iitfpeKJitHtHiiH ыиинимили^инйнный или numbii? di/щ Выбсю раздела е Me-ietK&oe проекта : wr.пьныи гросмотр отчета — дейсш ие ai j w к и ш к и ^йьиои! л иыОранни и плем енia i i J L e n i a Рис. 3 . перемещая его к верхней или нижней части экрана. Несколько проектов можно открыть одновременно. Нажимая знак "+". Это дает возможность очень быстро и легко обращаться ко всем файлам. которую пользователь может расширять или сокращать.. .

Form Designer Независимо от сложности прикладных программ для автоматизации обработки информации. можно также осуществлять быстрый доступ к свойствам размещенного в форме объекта. таблицы и их связи. соединения. Три панели инструментов значительно облегчают работу. C помощью панели инструментов Layout легко выравнивать объекты. основываясь на связях.наиболее часто используемый инструмент в разработке прикладной программы. Используя окно Properties с закладками. при проектировании формы разработчики могут сохранять группу объектов как класс прямо из Form Designer. Сложные формы управления данными могут быть созданы путем перетаскивания полей и элементов управления на поверхность проекта формы из окна Data Environment Designer. 3 . Visual FoxPro 3. связи между таблицами создаются автоматически.converted to PDF by HupBaH9I P r a ja ii M anager в свернутом окне Кнопка д л я сохр ан ен и я видим ости иена {« за кладки* проекта) I I Рис. Контейнер Базы данных в Visual FoxPro 3. содержащиеся в базе данных. и позволяет визуальными средствами создать Контейнер Базы данных. активизируются так же. созданных в Database Designer. Data Environment Designer визуально представляет используемые в форме таблицы и отношения между ними и по принципу работы похож на Database Designer. которые были созданы для этой базы данных. что если несколько таблиц используется для форм и отчетов. Таким образом. просмотры и связи. панель инструментов Form Controls позволяет быстро разместить в форме элементы управления. Например. процедуры БД. Когда связи установлены внутри Контейнера Базы данных.1 0 . они постоянны во всей прикладной программе. как все просмотры. локальных или внешних просмотров и соединений.0 сделал простым связывание объектов и данных с помощью Data Environment Designer. Database Designer Database Designer отображает все таблицы. оно сохраняется в Контейнере Базы данных. Когда пользователь создает соединение с внутренними данными. Если пользователь открывает Контейнер Базы данных.0 . Form Designer . почти все они требуют использования экранных форм.это архив для всех связанных таблиц. Visual Class Designer . Это означает. панель инструментов Color Palette дает возможность изменения цвета элементов формы и элементов управления. Form Designer тесно интегрирован с объектной моделью Visual FoxPro.

4 приведен список Мастеров. Существенное достоинство Visual Class Designer заключается в том. просмотр хранится в файле БД. основная "головная боль" разработчика при написании прикладной программы. Работа над подготовкой структуры данных облегчена за счет использования в отчете такого вспомогательного средства. Новые объектно-ориентированные расширения языка в Visual FoxPro дают программистам возможность создавать классы путем написания соответствующего кода. Как только свойство или метод определены. В табл. они появляются в списке окна Propeties. переменные. Query / View Designer Запросы позволяют просматривать данные из полей одной или нескольких таблиц. верхние и нижние колонтитулы страниц и групп данных и заключительный раздел для суммирования данных по всему отчету. Вспомогательные средства разработчика Забота о пользовательском интерфейсе . В отличие от запроса. отчеты и запросы. Ну а если вы решили разработать невизуальный класс. существенно расширяющие возможности обработки различных ситуаций. Visual Class Designer позволяет создавать свои собственные свойства и методы. При этом разрабатываемое меню может быть использовано вместо или в дополнение к основному. При желании после изменения данных в курсоре может произойти адекватное изменение данных и в исходных таблицах. Целый ряд таких библиотек вы найдете в профессиональной версии СУБД . экран. с помощью Connection Designer можно настроить соединение с требуемым источником данных посредством подключения соответствующего драйвера ODBC. Однако поверьте. возможность вывода полей с плавающей длиной и вертикальной растяжкой. которые помогают программистам создавать таблицы. отвечающих установленным критериям. При переходе в процессе печати от одной части отчета к другой могут вызываться пользовательские функции. Menu Designer Позволяет визуально разрабатывать меню в стиле главного меню Visual FoxPro с последующей генерацией исходного кода в программный файл с расширением MPR. в Visual FoxPro были добавлены многочисленные Мастера (W izards). лучше доверить эту работу Visual Class Designer.они имеют расширение VCX.converted to PDF by HupBaH9I Для эффективного использования новых методов объектно-ориентированного программирования приходится довольно часто заниматься созданием и изменением таких загадочных объектов. как обратиться к специфическому источнику данных. а также организовывать взаимодействие с другими прикладными программами Microsoft типа Word и Excel. Report/Label Designer Позволяет визуально создать отчет или этикетку. заголовок. как классы. итоги и подытоги. включенного в визуальную библиотеку.пожалуй. на график. В отчете может использоваться группировка данных. верной своим традициям заботы о разработчиках. Компанией Microsoft. что его интерфейс и методы работы сходны с Form Designer. курсор. Имеется режим предварительного просмотра. но при этом имеется возможность вывести результаты запроса только в курсор. расположенных на сервере. формы. View Designer имеет аналогичный интерфейс и также позволяет организовать просмотр с использованием языка SQL на основании одной или нескольких таблиц. 3. в отчет или этикетку. Как и в предыдущих версиях FoxPro. Connection Designer Для использования внешних данных (других форматов) или данных. как Environment Designer. что весьма облегчает работу с этим инструментом. устраивайтесь поудобнее за клавиатурой и начинайте пользоваться клавишей F1. Просмотр является составной частью базы данных и может выполняться для локальных таблиц или внешних данных с помощью технологии ODBC. можно создать SQLзапрос с помощью Query Designer (R Q BE) и сохранить его в виде кода SQL как отдельный файл с расширением QPR. таблицу. Результаты запроса могут быть выведены в окно Browse. Созданное соединение сохраняется как часть базы данных и содержит информацию относительно того. С его помощью можно быстро разработать собственный класс на основе базового класса Visual FoxPro или любого ранее разработанного класса. имеющихся в Visual FoxPro. .

4 . В то же время. которые могут быть Table помещены в форму или MS Excel Import Импортирование данных в формат Visual FoxPro FoxDoc Документирование прикладных программ Setup Создание инсталляционной программы для распространения прикладных программ Upsizing Перемещение файлов данных FoxPro в файлы SQL Server Все Мастера доступны из пункта меню Tools. размещение отдельных полей в рамках. Пользоваться Мастерами исключительно легко. где мы выбираем команду New. При построении формы с помощью Мастера формы мы можем выбрать один из пяти стилей ее оформления: • • • • • стандартный с выделением полей цветом. 3.на финише добавлена кнопка предварительного просмотра.converted to PDF by HupBaH9I Т аб л и ц а 3 . которая позволяет убедиться в правильном результате и при необходимости произвести изменения с меньшей потерей времени.11 в качестве примера приведено одно из диалоговых окон Мастера форм. а развитые возможности перетаскивания объектов (Drag and Drop) делают работу с данными быстрой и приятной. но пользоваться многими из них можно и работая в Project Manager или из других визуальных средств. и сделано это очень даже неплохо. Нововведение относительно версии 2. с выделением полей подчеркиванием. Таким образом. четко формулируют вопросы и задачи на каждой стадии работы. Мастера в Visual FoxPro М астер О писание Table Создание таблиц из заранее определенных наборов или отдельных полей Query Создание перекрестной таблицы (Cross Tab) Создание диаграмм или графиков на основе MS Graph Создание просмотров Создание запросов Создание просмотров для внешних данных Form Создание формы на основе данных из одной таблицы Создание формы "Один ко многим" Report Создание отчета с итогами и подытогами Создание отчета "Один ко многим" Создание отчета на основе данных из одной таблицы Label Создание почтовых этикеток или карточек Mail Создание документа Word для рассылки по адресам Merge Pivot Создание сводных таблиц. с выделением полей цветом и тенью (трехмерный эффект). . кнопками с пиктограммами или вообще без кнопок. рельефный. Возможно выбрать форму с текстовыми управляющими кнопками. результаты нашей работы в Мастерах всегда можно "отполировать" в соответствующем Конструкторе (Designer). На рис. работа с Конструкторами и Мастерами тесно увязана. Все они имеют единый интерфейс.6 .

2. не предназначенное для себя лично. 3. СУБД Access 7.Конструктор форм. бухгалтерский (с разграфленными таблицами). которые могут функционировать как OLE-серверы. ориентации расположения полей и ориентации расположения отчета на бумаге.Field Selection Which fields do you want in your fo rm ? 1. стили оформления отчетов или форм. когда не хватает функциональности визуальных средств. пожалуй. пользователи Access могут обратиться к созданию процедур и функций. Ее успех можно связывать с великолепной рекламной кампанией. . который позволяет создавать массивы. Для получения распечаток используются Конструкторы отчетов. Select a table or uiew. Эта тема прекрасно освещена в периодической компьютерной печати.исходя из собственного опыта авторы берутся утверждать.0.1 1 . можно изменить и набор элементов на соответствующем этапе работы. Автоматизация рутинных операций может быть выполнена с помощью макрокоманд. MS Access из всех рассматриваемых средств разработки имеет. представительский. Select the fields. свои типы данных. В новой версии Мастера являются более открытой для программиста структурой.1 Рис. в Access присутствует язык программирования Visual Basic for Application. организованной Microsoft. Вполне возможно. Мастер отчетов предлагает три стиля: • • • деловой. На тот случай.converted to PDF by HupBaH9I E l Form Wizard 3 Step 1 . изменяя в них данные. так и из кода процедур и функций можно выполнять макрокоманды. чем это было раньше.3. например.это самая популярная сегодня настольная система управления базами данных. вызывать DLL-функции. 3. Не будем сейчас вдаваться в подробности сравнения отдельных характеристик Access и его основных конкурентов. Имеется возможность выбора числа колонок. объекты доступа к данным и средство быстрого построения интерфейса . Мы можем вместо "штатного" запустить свой Мастер. 3 . D a ta b a se s / Tables: A va ila b le Fields: Key_m odel | AUTO_STORE j MODEL Ш Ш FIRM COUNTRY S elected Fields: □ 7]Name "I Swept_volume н — 3 model E Quant ity_drum \ Capacity C ancel j B ad. --------------. Access Microsoft Access . Select a database or the Free Tables item.1--- N ext I Finish 11-------1 --------------. что ни одно приложение. самый богатый набор визуальных средств. что это так. Тем не менее кодировать в Access приходится . так и квалифицированного пользователя. когда в этом появляется необходимость. рассчитанного как на начинающего. Так как значительная часть элементов Мастеров задается через соответствующие регистрирующие таблицы (файлы DBF). например Paradox for Windows или Lotus Approach. или включением его в богатое окружение продуктов семейства Microsoft Office. изменив системную переменную _ W IZ A R D . с помощью OLE Automation контролировать работу приложений. Но корень успеха скорее всего заключается в прекрасной реализации продукта. При этом как в макрокомандах можно использовать вызовы функций. Вы даже можете целиком создавать базы данных с помощью кодирования. Несмотря на свою ориентированность на конечного пользователя.0 для работы с данными использует процессор баз данных Microsoft Jet 3.

с которыми вы работали недавно. Достаточно выбрать ту базу данных. но и сохранением общего подхода. связанных по ключевым полям. установленной на одной рабочей станции. которое привлекает к нему многих пользователей.х. Отсюда осуществляется доступ ко всем объектам. принятого в построении интерфейса всех продуктов Microsoft для Windows. Как мы уже отмечали. которые предоставляет Access. что оно может выступать в роли OLE контролера и наоборот.тесная интеграция с Microsoft Office. СУБД Access имеет русифицированный интерфейс и частично переведенный на русский язык файл контекстной помощи. 3. 3.0 может выступать как в роли OLE контролера. которые они обрабатывают. которая необходима для создания вашего приложения. скопировав в буфер графический образ таблицы. Это значит. а именно: таблицам. При этом вы можете воспользоваться Мастером. так как его понимание облегчено не только русским языком. Excel. предназначен пакет Access Developer Toolkit. Главное качество Access. При этом можно добавить в базу данных только те таблицы.и к файлам многих других форматов.converted to PDF by HupBaH9I создать хотя бы без одной строчки кода невозможно. В отличие от других рассматриваемых средств разработки. Для коммерческого распространения приложений. Окно контейнера базы данных показано на рис. малознакомым с понятиями реляционных баз данных. что вы можете контролировать работу приложений Access из любого приложения. формам. которое предлагает создать новую базу или открыть ранее созданную. ресурсов Access вполне может хватить для обслуживания всего делопроизводства. Уже при запуске Access перед вами появляется диалоговое окно. если не уверены. То есть все пользователи могут обращаться к одной базе данных. Естественно. Paradox. Пользователям. которые необходимы. Мы опустим описание интерфейса Access. практическая работа в СУБД начинается с создания базы данных. Как правило. Наша книга посвящена построению систем обработки данных. объекты которой вас интересуют. Посредством драйверов ISAM можно получить доступ к файлам таблиц некоторых других форматов: DBASE. Теперь для создания базы данных можно использовать шаблоны. при условии. запросам. В табл. мы тут же получим в документе готовую таблицу с данными из БД. имеющихся в Access. Для того чтобы увидеть их список. Для того чтобы не возникали проблемы сохранности и доступа к данным. текстовым файлам. Access 7.5 приведен список Мастеров. открыв Microsoft Word и применив вставку из буфера. а посредством технологии ODBC . Access .12. В качестве альтернативы можно воспользоваться меню В став ка и выбрать в нем соответствующий объект. макросам. разработанных на Access. формами ввода и вывода. имеет смысл воспользоваться средствами защиты. FoxPro 2 . естественно. . как мы уже писали. отчетам. путем нажатия кнопки С о здать. . К примеру. При этом необходимо находиться в контейнере базы данных на той вкладке. Очевидно. вам необходимо перейти на вкладку Базы Данных. Этот процесс значительно различается на разных предприятиях и фирмах в зависимости от объема данных. Встроенный SQL позволяет максимально гибко работать с данными и значительно ускоряет доступ к внешним данным.это типичная настольная база данных. Если вы выберете опцию З а п у с к М астера. После этого вы получаете базу данных с таблицами. что сами правильно установите права и ограничения для пользователей. то попадете в окно С оздание. Access дает возможность разделять свои сложные по структуре таблицы на несколько. так и OLE сервера. В то же время на небольшом предприятии с количеством компьюторов не больше 10. в связке с Microsoft Office. которая не обязательно должна быть выделенным сервером. Вся работа с базой данных осуществляется через окно контейнера базы данных. модулям. большая часть объектов создается визуально. вместе с которым поставляются некоторые дополнения и несколько дополнительных объектов ActiveX. причина этого отрадного факта заключена в позиционировании этой СУБД на конечного пользователя. а в таблицах выбрать нужные вам поля. вдобавок имеется список баз данных. При создании многих объектов и элементов управления в Access предоставляется несколько возможностей реализации поставленной задачи.

Мастер форм с Создает форму с диаграммой. так и иных размеров. Мастера в СУБД Access 7. .1 2 . применяя только таблицы. в который выводятся отчета выбранные пользователем поля из таблицы или запросы. в которую включен сводной таблицей объект "страница Excel" со сводной Microsoft Excel таблицей. Мастер таблиц Создает таблицы из списка уже готовых. Мастер создания Позволяет создавать наклейки как наклеек стандартных. 3 . Мастер построения Создает подчиненную форму.. которые служат источником данных для формы. Мастер построения Создает кнопки в форме или отчете с кнопок выбранными вами свойствами и функциональностью. предоставляемые мастером. которая подчиненных форм может служить аналогом объектов Grid или Browse в других системах управления данными. Мастер форм со Создает форму. SQL списков выражений или заранее предопределенного набора значений.5 . возможен выбор необходимых таблиц и полей. которые можно изменить. с возможностями установки группировки и сортировки. Интересен только на начальном этапе использования таблиц. диаграммой отражающей данные для полей из таблиц и запросов. SQL выражений или предопределенного набора значений. Мастер построения Создает группу переключателей. Мастер простых Создает простую форму. хотя определенный круг задач можно решить. создаются формы и отчеты. выключателей. Мастер построения Создает комбинированные списки на комбинированных основе полей из таблиц и запросов. Контейнер базы данных в Access Т аб ли ц а 3 . групп которая может содержать множество кнопок.converted to PDF by HupBaH9I Autostore l база панны* □ Ё Н 1Ш1ТаВпицы | (§3 Запросы | 0 Формы | В Отчвты | А Макросы] ^ Открыть 5=5 £5 ft ■Account | Мапупи | Cuslomar Конструктор Создать Рис. Мастер построения Создает списки на основе полей из списков таблиц и запросов. Мастер создания Создает отчет.0 Мастер баз данных Создаются базы данных из определенного списка. в которую форм выводятся выбранные пользователем поля из таблицы или запросы. флажков.

13. чем сотни страниц документации. 3. Эти способы описаны в табл. хоть раз в жизни создававшего таблицы и понимающего. являющихся источником данных для отчета Дополнительно к перечисленным возможностям. с чего начинается работа с базой данных . После нажатия кнопки С о зд ать вам будет предоставлена возможность выбора одного из пяти вариантов действий. Способы создания таблиц в СУБД Access Способ О писание создания Режим Первоначально вам предоставляется таблица с таблицы тридцатью полями.. все созданные формы вы можете редактировать с помощью вспомогательных диалоговых окон.создание таблиц.499см Рабочий каталог: |c:\Sport Порядок сортировки базы данных: (Русский □К "™ Отмена 3 Применить Рис. куда необходимо ввести данные. В настоящий момент нас интересует вкладка с заголовком Общие (по-видимому. которая представлена на рис. Параметры Клавиатура | Модуль | Другие Режим таблицы | Таблицы/запросы | Формы/отчеты Общие | Правка/поиск.1 3 . Т аб л и ц а 3 . которые приведут к появлению в вашей базе новой или присоединенной таблицы. отличный от текущего рабочего. 3 .converted to PDF by HupBaH9I Мастер создания отчетов с диаграммой Позволяет выводить на печать диаграммы. 3. На этой странице в текстовое поле с заголовком Рабочий каталог внесите путь к той папке.499см Нижнее поле: 12. то указывайте полный путь для создаваемого файла. Если при программном способе создания баз данных вам необходим каталог. После выбора этого пункта на экран выводится диалоговое окно со множеством вкладок. внешний вид которых зависит от данных в таблице или запросе. В процессе изучения Access необходимо как можно чаще обращаться к команде П арам етры из меню С ервис. При первом знакомстве с Access такой способ создания баз данных поможет больше.499с Правое поле: 12. в которой вы собираетесь хранить ваши файлы. Трудно представить человека. После ее сохранения Access сам решает. имеются в виду параметры). Первое.499см Верхнее поле: 12. . какой тип данных присвоить каждому полю.6 . Вид ■Граннцы печатного поля Левое поле: 2.6.

как практически и все остальные меню. Возможно.1 5 ). Подробно работа с Конструктором таблиц описана в главе 6 .converted to PDF by HupBaH9I что такое типы данных.L1V1 и С Л ичкое пр има нениа Л А **. Формы. При работе с такими объектами. . конечно. Предварительного просмотра. Мастер Из предопределенного набора таблиц вы таблиц можете создать таблицу по своему вкусу. если его использование вызывает вопросы.инno' itn'iKi i Контакты Кпиенты1 С0ТруДники1 ToesptN? Образцы попей: ■ Pol :П:1К1 □1 Префикс П __1 Имя ОтчествоФамилия Сусрсрикс Прозвище Ти тул ^ Деловое применент ИмяО р Г О н и S5. □Эрезии таблиц -Гш-ч. запрос. не стесняйтесь. В появившемся диалоговом окне вам необходимо выбрать тип файла и имя импортируемого файла. который появляется на панели инструментов. Си здание таблиц Выберите оброзиы то. 3. если. Его несложно будет удалить позднее.гЧ 1 *ili'ijl1". соответствующей каждому объекту (рис. Как недостаток этого способа следует отметить невозможность создать таблицу с полями примечаний. выбирать типы данных для полей. то есть может использоваться несколькими приложениями. который пользуется данной возможностью. Для перехода из режима в режим используйте значок.1 4 . которое. все средства хороши для того. если это необходимо. в главе 8 . используйте их. Конструктор После выбора этой опции открывается таблиц Конструктор таблиц.. подробнее об ODBC см. 3 . чтобы побыстрее завершить проект (рис. SQL.I'r? | fjinro | Рис.Блиа дпа применения лри создании собственной тоБлицы Вы&ерите образен таБл иш * а з а т е м нужные образцы попей. что некоторые таблицы целиком подойдут для вашего приложения. но при таблицами этом таблица остается в своем формате. 3. Каждому объекту соответствует присущий ему режим.! IL-I ' о П ола но во й таблиц ы К □ Отмена | _ d Jd ji-L-n. в котором вам необходимо самостоятельно создавать поля. отчет. устанавливать свойства полей. Таблицы. форма. вы не модифицировали панели по-своему. Д обавьте поле. Импорт Позволяет импортировать данные из таблиц таблиц других приложений в базу данных. Новые таблицы теряют непосредственную связь с другими приложениями. вы легко можете переключаться между режимами Конструктора. динамически изменяется в зависимости от активного в текущий момент объекта. размеры полей и. Можно также воспользоваться меню В ид.14). как таблица. Тип ODBC позволяет импортировать данные практически любого формата. Связь с Очень похоже на предыдущий пункт. Допусксиется выбор полей из наскогьких таблиц.

авторы нашли очень полезными при работе с базами данных Access из других приложений.десятки миллионов. Затем откройте этот же запрос в режиме Конструктора. так как они обладают такой же функциональностью. Настоятельно советуем . насколько ускоряется работа при наличие индексов. Можно сказать. Обычно вам любезно предоставляют возможность посмотреть код полученного SQL-запроса в режиме только для чтения. используя сквозные запросы оттуда. что не каждая среда создания баз данных может предоставить вам такую возможность. 3. предварительно необходимо запросить у Администратора сети те же права. возможно. которые вы потратите на его освоение. любые изменения в одном из режимов приводят к изменениям в другом. находясь в любимой среде Access. Microsoft слишком занят глобальными проблемами завоевания Internet. возвращаться назад для корректировки сделанного. но наверняка пригодятся в дальнейшем. которая может побудить вас использовать их. Правда. А ведь эта возможность реализована далеко не в каждом пакете. служащие для обслуживания и конструировании объектов ввода и вывода имеют раскрывающийся список для перехода на режима в режим Рис.на рис. обновления. не понадобятся в первый день знакомства с Access. причем подчеркиваем. Другая причина.converted to PDF by HupBaH9I b M b M B J : I XlfrleM * [r* ? H И Ъ x)|Sl? ~ 3 rv IM Ш т Панели инструментов. О том. который называется Простой запрос. Именно здесь кроются резервы ускорения работы с данными. Причем таблицу можно создать в другой базе данных. которые имеются у него. Пять-десять минут. . В Access вам предоставляется возможность создавать самые разнообразные запросы выборки. Нетрудно поверить. Но кто о ней знает? Количество пользователей этого гипотетически прекрасного продукта исчерпывается первыми тысячами. Правда. 3. изменяющих данные в таблицах. Запросы Система построения запросов в Access не имеет себе равных среди СУБД массового использования. Опять же следует отметить. Вы можете совершить ее и сегодня. Запросы изменения структуры данных. вы легко можете переходить из одного режима в другой. показанный на рис. что они модифицируют исходные данные. При этом ничто не ограничивает вас по времени модернизации. что какая-нибудь третья фирма построила очень дружественный по интерфейсу и необыкновенно удачный продукт. Конструируя таблицу. Если вы мало знакомы с построением запросов. Обратим ваше внимание на перекрестный запрос. Также визуально вы можете построить запросы добавления.18. Пользователей Access и приложений. Это очень важно. Для построения запросов воспользуйтесь одним из уже известных вам способов создания новых объектов. предоставляем вам сделать выводы самостоятельно сразу же после прочтения этой книги и проведения соответствующих экспериментов. вы можете легко переходить в режим таблицы и.17 и Таблица . В появившемся диалоге Новый запрос будет предложено выбрать из способов построения запросов. и даже через год. и завтра. удаления. нежелание разбираться с синтаксисом объектов DAO. при обнаружении каких-то недостатков. в США на порядок больше. Как мы уже говорили. Режим Конструктора и SQL взаимосвязаны. и ему некогда обращать внимание оппонентов (и просто заклятых врагов) на такую мелочь. в Access можно создать визуально. Практически все типы запросов. в дальнейшем сэкономят недели работы. которые можно построить программно. что Access был одним из пионеров практического применения запросов. создания таблиц. Исключение составляют сквозные запросы (SQL pass-through).1 5 . на основе которых они построены. возможно. которые. а также изменять структуру существующих таблиц. Сквозные запросы делают вас поистине всесильным разработчиком. который легко позволяет строить запросы самому ленивому и мало-опытному пользователю. то вначале попробуйте использовать Мастер. запросы на изменение структуры данных (DDL) и запросы объединения. 3 . Для запросов доступны три режима: Конструктор. необходимыми для особо сложных случаев.обсуждение резкого замедления скорости работы с данными у Access при увеличении размеров таблиц. Вы можете контролировать работу любого сервера баз данных. например из Visual FoxPro или Excel. SQL . позволяющие вам создавать новые таблицы и индексы. построенных на его основе. Мы уже не будем говорить про развитую систему фильтров. 3. Не каждая система может предоставить возможность одним движением мыши перейти из Конструктора в режим Таблицы или Формы. так как у оппонентов Access любимая тема для разговоров .на рис.16. последние три Мастера строят запросы со специфическими характеристиками.

3. Как указывалось выше.22. которая запускает Мастер создания форм. так и называющуюся . При желании создать простейшую форму воспользуйтесь опцией автоформа. Формы После создания таблиц и запросов можно организовать ввод данных с помощью формы. как это видно на рис. как это показано на рис. что поможет вам быстрее освоить синтаксис SQL. После того как вы решите создать форму. которая напоминает им одну из рабочих книг.. Для создания автоформы воспользуйтесь раскрывающимся списком Новые объекты на панели инструментов. 3 . вы даете возможность пользователю вводить значения для отбора данных . тем легче будет в дальнейшем.21. Введите значение парам. ленточная и табличная. В О Мощность [ш Отмена \ Рис.перед ним после запуска запроса обязательно возникнет диалоговое окно с просьбой указать критерии отбора. который необходимо создать. Последняя совпадает с обычным табличным режимом вывода данных для таблицы. поля которой расположены в нужном порядке. что очень трудно сделать для таблиц. В дальнейшем. перед вами появится диалоговое окно Новая форма. Microsoft постарался. выведенными в виде таблицы.. если последние имеются для поля. При этом вы можете в полной мере проявить здесь свои способности к дизайнерскому искусству. Первый это запуск непосредственно команд SQL. Фильтры строятся с помощью запросов или установкой критериев. воспользовавшись кнопкой Создать на вкладке Формы. вы сможете использовать эту возможность для создания основы вашей формы с целью дальнейшего ее усовершенствования. по мере освоения пакета. Но часто бывает удобнее организовать данные в виде формы ввода. но следует отметить. когда видно только одну запись. Чем лучше вы освоите SQL.2 1 . что надо выбрать источник данных.20.Зап р о с. если таковые имеются. s£bl o i a ils il М ъ Ы м 1 Кнопка Новыи объект Рис. что на самом деле это не семь способов создания форм. чтобы вы не только пользовались запросами. в котором имеется целых семь опций. показанное на рис. Иногда пользователи предпочитают работать с данными. Но очень сложно построить запросы на все случаи жизни. 3. 3 . К примеру. Вы получаете форму с набором текстовых полей. Именно здесь можно выбрать тип запроса. в противном случае для вывода данных надо применять более сложные технологии. потому что вы легко можете устанавливать выводимые поля. При переходе в режим Таблицы вы увидите результаты вашего запроса. используются параметрические запросы. Когда вы создаете запрос с помощью Конструктора или окна SQL.это использование объектов доступа к данным.19. Запросы можно составлять программным путем. 3. по своим . 3. Как ни хороши были бы визуальные средства построения запросов. Для того чтобы хоть как-то облегчить эту задачу. фильтры . то загружается меню З ап р о с.1 9 . Это самый простой способ создания формы. перед которыми выводятся названия или заголовки полей. которое имеет команду. но это всетаки форма. которая показана на рис. Обращаем ваше внимание. то в списке доступных режимов создания будут присутствовать автоформы.converted to PDF by HupBaH9I как можно чаще переключаться в режим SQL. Можете выбрать любой способ. Если вы решите создавать новую форму. Второй способ .это одна из наиболее сильных сторон Access. причем трех типов: состоящая из колонок (ее вы можете построить предыдущим способом). иногда легче набрать несколько операторов вручную. При этом различаются два подхода. опция Простая форма. Создав параметрический запрос. но и активно осваивали их. либо используйте команду меню В с та в к а . Для этого необходимо создать переменную строкового типа и запустить ее с помощью макрокоманды RunSQL.

23.3.27. Основные этапы построения формы с помощью Мастера показаны на рис. | Далее > Готово . 3.2 3 . С оздание форм Выберите внешний вид Формы: (* В один столбец Отмена С Ленточный С Т абличный < Назад Рис. задать свой заголовок. но с предоставлением возможности выбрать из исходных таблиц нужные вам поля.converted to PDF by HupBaH9I возможностям раскладывается на три следующие за ними автоформы. Таблицы/Запросы: |Таблица: automobile passenger .| Доступные поля: Выбранные поля: key_auto 1 . Имеется возможность выбора полей из нескольких таблиц или запросов.j 1^ 1 kei)_model datejssue _ ^ l Отмена ^ Назад I Далее > I Готово Рис. 3 .--------. С оздание форм Выберите поля для Формы.24. выбрать один из стилей оформления. 3.

потом. попробовать опцию Простая .2 6 . ^ Изменение макета Формы. Новичкам рекомендуется начинать с автоформ. 3 .позволяют создавать достаточно специализированные по своим задачам формы и активно используют OLE технологии.2 7 .2 5 . 3 . Cjc}зданий' Формы. 3 .Сводная таблица и Диаграмма .converted to PDF by HupBaH9I С о з д а н и е ф о рм Выберите требуемый стиль. Готовая форма Последние опции . I- Вывести справку по работе с Формой. Дальнейшие действия: Открытие Формы для просмотра или ввода данных. Отмена | < Назад | Д'злее :? | ^ ^ £ otobo^ J Рис. Г лобус Ель Камень Облака Обычный Сумерки хкх П одпись Цвет 2 Узор Т кань Данные __________________ 1 Отмена Далее > < Назад Готово ■ Рис. осознав различия между различными видами форм и желая применить более высокие требования к выводу данных. Выбор названия формы и дальнейших действий по ее использованию В1 a uto m o b ile p a s s e n g e r с а г \шш кеу_ m odei date issu e 5 *■I Н U * l Всего: 8 ^ Рис. С оздание форм Задайте имя Формы: | automobile passenger саг 'Bcjrjpoaif.

а в некоторых случаях и целиком приложение. Формы и элементы управления можно создавать и модифицировать программно. 3. Помимо кнопок Мастера имеются для Групп. Эффективным способом работы является быстрый выбор полей с помощью Мастера создания форм. стиля форм и дальнейшее совершенствование форм с помощью Конструктора. а в режиме формы . организованные с помощью опций Диа­ грамма и Сводная таблица. Категории: Действия: . Для форм доступны три режима работы: Конструктор.одну и более. С оздание кнопок Выберите действие. которые будут вызываться при его наступлении. сколько можно уместить их на экран. Каждая категория содержит набор действий. можно создать с помощью Конструктора форм. поэтому не трудно организовать многостраничную форму. при ленточной . Режим вывода данных имеет три вида: ленточная форма. С помощью этого можно добиться значительной гибкости работы с формой. в зависимости от того. правда. То же относится и к панели инструментов. с помощью Построителя командных кнопок вы можете создать 28 различных кнопок. при этом можно указывать и созданные вами. Все новые формы будут создаваться на основе этой формы со всеми включенными в нее элементами управления и свойствами. Вам предоставляется большое количество встроенных объектов. которое необходимо выполнить при нажатии кнопки. какие объекты поместить внутрь контейнера группы. но есть объект Разделитель страниц и метод для перехода со страницы на страницу. Каждый объект имеет большой набор свойств и событий. комбинированных списков. функции которых простираются от перехода по записям до набора телефонного номера (рис. в качестве которого может использоваться любая заранее созданная форма. затрачиваемого на создание приложений.28).2 8 . причем число их разновидностей так велико.другая. В Access нет объекта типа страницы с закладками. простая форма и таблица. но занимает это намного больше времени. В режиме формы вы можете указать. Формы. что позволяет построить автоматизировано 90% . 3 . К примеру. которые вам доступны после выбора команды П арам етры из меню С ер ви с. для списков. Иногда бывает полезно представить данные. какое меню и панель инструментов должны загружаться. даже самому требовательному вкусу. При работе с формой загружается своя система меню. используемым в Visual FoxPro. причем вы сами можете решить. Но именно на этом этапе работы вы можете воспользоваться наибольшим количеством средств автоматизации. При работе с простой формой одновременно вы можете видеть данные только из одной записи. в режиме Конструктора . вы можете задать шаблон формы.converted to PDF by HupBaH9I форма. которые удовлетворят любому. которые можно считать в Access аналогом объекта Grid. Переходы по записям Обработка записей Работа с Формой Работа с отчетом Приложение Разное Отмена Назад I Первая запись Найти далее Предыдущая запись Поиск записи Последняя запись Следующая запись I Далее > I . подчиненных форм. Создание форм отнимает больше половины времени. эта функциональность может быть достигнута только после написания нескольких процедур. Событию можно присвоить макрокоманду или процедуру.одна. Форма и Таблица. Отчеты . Со многими объектами связаны Построители. Готово Рис. Используя установки.

Среди прочих мастеров отметим Мастер по созданию отчета с диаграммой и построитель почтовых наклеек. выполнимые в СУБД Access. требующее подробного изучения. Для построения более сложных макросов. которое состоит из двух частей (рис.29).Ил-н грл ■ мой фгуненге ншмлйР! Описание назначения и вида аргумента Рис. Перед печатью отчета его можно просмотреть в окне предварительного просмотра. Справа отображается пояснение для рода и типа требуемого аргумента. Еще один Автоотчет станет доступным при выборе кнопки Создать на вкладке Отчеты. требующих выполнения определенных условий для запуска отдельных макрокоманд. в зависимости от установленных параметров. Построитель почтовых наклеек по своему классу скорее можно отнести к средствам визуального проектирования. которой иначе можно добиться только путем кропотливого программирования. совершают разнообразные действия. Мастер отчетов позволяет.это мощное средство с разнообразными свойствами. ГЛпП с! H T W ? ос1 : квкпос Макрокоманд Ли шкрасдиини» Иий 1ЛПрГК"Л frill-. Очень часто аргумент можно выбрать из раскрывающегося списка. 3. Обычно этот метод используется для создания собственных Мастеров. В Access имеется около пятидесяти макрокоманд. Для построения сложных отчетов предназначен Конструктор отчетов. которые можно объединять в макросы.2 9 . имеющую от двух до четырех колонок. 3 . Как и многие другие объекты базы данных. доступный для создания с помощью меню или кнопки Новый объект на панели инструментов База данных. а не выводить все.ifcii Спим* содержит НЛРОШ г т ш g f id w M H 'i -v В jmchi . создает отчет. сгруппировать данные по какому-нибудь полю. Для каждой таблицы вы можете создать Автоотчет. данные в котором будут выведены в столбец. установить порядок сортировки. помимо выбора полей для отчета. Верхняя служит для ввода макрокоманд и представляет собой таблицу. После этого . отчеты можно создавать программно. имеющиеся в таблице или запросе. необходимо добавить колонку Условия.converted to PDF by HupBaH9I Отчеты наряду с формами создают представление о вашем приложении. выбрать макет отчета и его стиль. и создание их обычно требует кропотливого труда.. когда данные из всех полей будут выводиться в колонку. В зависимости от выбранной макрокоманды число аргументов динамически меняется. вам обязательно нужно загрузить окно Конструктора макросов. при этом вы можете установить интервал группировки.и Рв*11мсапных Рыбцито -fi'tf irr-. а с помощью параметров этим действиям можно придать гибкость. В нижней части окна Конструктора макросов вводятся аргументы макроса. Для того чтобы создать макрос. то воспользуйтесь Мастером отчетов. Это ленточный автоотчет. Если вы хотите выбрать поля для отчета. Компания Microsoft постаралась ваш труд облегчить. Макросы Макрокоманды. Построитель почтовых наклеек . При его запуске вместе с ним загружается панель инструментов с элементами управления. При этом Автоотчет. которые можно размещать в различных областях проектируемого отчета путем буксировки с помощью мыши. Напротив каждого аргумента имеется его описание.

присваивать права доступа ко всем объектам. то пользуйтесь услугами надстройки Security. Для того чтобы распространить действие условия на последующие строки. находящиеся в одной строке с условием. но все-таки более удобным средством является непосредственно Конструктор меню. 3. в том числе и модулям.. так и программным путем. Система защиты доступна как с помощью визуальных средств. Система защиты Access обладает лучшей встроенной системой защиты среди всех настольных приложений СУБД. которая поставляется вместе с Access Developer Toolkit. пользователей. достаточно ввести многоточие ( . это решает вопрос закрытия ваших процедур и функций от чужих глаз. которое может быть убрано или расположено независимо от других в любом месте экрана.converted to PDF by HupBaH9I макрокоманды. Visual Basic не имеет главного окна. Вы можете создавать группы. Система защиты доступна только при открытой базе данных.30. объединяющего все остальные элементы интерфейса разработчика. мы будем рассматривать его возможности только с точки зрения создания приложений по обработке данных. но.4.. Кстати.) в колонке условия напротив соответствующих макрокоманд. Каждому пользователю можно предоставить индивидуальный пароль. Если вы хотите защитить вашу базу данных даже от пользователя с именем Admin. как это показано на рис. то необходимость защиты становится очень актуальной для разработчиков. будут выполняться. С помощью Конструктора макросов можно создавать и меню. исходя из задачи данной книги. 3. . Каждый элемент Visual Basic имеет свое независимое окно. Так как для Access нет компилятора. В отличие от большинства пакетов программ. только если выражение условия будет истинным. Помимо этого вы можете закрыть вашу базу данных от просмотра внешними программами. Visual Basic Visual Basic является универсальным средством программирования.

сохранение файлов проекта с другим именем.сохранение файлов проекта.сохранение файла формы или программного модуля. S a v e P ro je c t . класса или ресурса.открытие существующего проекта. класса или ресурса. Интерфейс Visual Basic 4. 1 Font F tin tT tU ip S fb n M S Ssn e Serif T IL * F o r e C r 'a r B:hseDDDDDlia IqiglYl HelpGsfllexllD D ШП * M ftJDClDDDM i — -TrajlE|J04lH (с п я ) Га 1 зе JSft lin k M o * UnkTopii] Они о п рое кта Форма 1116 P ■Нчпе Ftjiml _^ J О кно свсй ств cfcopj.converted to PDF by HupBaH9I С т а н д а р т н а я п а н е л ь и н с тр у м е н то в Главное меню Координаты текущего объема Панель инструментов с элементами управления Главное окно ^uu hiljV ih iM l U tnjt J - F hi Edil VLtht JiiuuiL Rum TulJu Add-liiu HuI^j j ~fJ V F n n n l Farm IH | I ^LrfnpEdlHW 1 ■TO Fa]ae BackGohr B<TOOODODOFB< ЛррЕШ В П СЕ т jiii © в а ф М И Ш 3lpQoieols г« Я Н к. предназначенные для работы с файлами: • • • • • • • • • • • • N ew P ro je c t .создание (компиляция) из файлов проекта динамической библиотеки Windows в виде файла DLL. Опишем кратко назначение команд в главном меню Visual Basic.0 одновременно можно работать только с одним проектом. программного модуля. P rin t .вызов диалогового окна установки принтера.создание (компиляция) из файлов проекта исполняемого модуля в виде файла EXE.сохранение файла формы или программного модуля с другим именем. R em o ve F ile . . Open P ro je c t . M ake E X E File .удаление из проекта уже существующего файла формы. ? ■5 чч М * hoim 1 T ru e bntrolEkM jrmvMsda TnrB 13-C iip y P *n Drwijtyld D■j d NeJ 1 H reuM Jih Enabled FillCota Tn*e rillStylE. S a v e File . В Visual Basic 4. Add File .3 0 .печать файлов проекта.0 При запуске Visual Basic вы сразу попадаете в режим разработки и по умолчанию открывается новый проект с готовой к созданию формой. Если вы очень хотите работать сразу с несколькими проектами запустите еще одну копию Visual Basic. P rin t Setup .добавление в проект уже существующего файла формы.создание нового проекта. программного модуля. S a v e P ro je c t A s . S a v e File A s .i ы и п -t алетента управления Ри с. M ake O LE D L L File . Меню F ile является достаточно стандартным для всех средств разработки Microsoft и содержит команды. 3 .

которое она имеет в данный момент. A d d -In M anager .converted to PDF by HupBaH9I Меню Ed it содержит стандартные команды. Меню Run служит для выполнения программы: S ta rt .устанавливает курсор на строку. позволяющие редактировать содержимое формы и текст программы.копирует версию проекта из программы контроля версий и управления групповой разработкой проекта (MS Visual SourceSafe 4 .позволяет установить ссылку на внешние объекты.подключает к проекту дополнительные компоненты VBX и ActiveX. Типы основных файлов в Visual Basic . Ed it W atch . S ta rt W ith Full C om pile .обновляет версию проекта в программе контроля версий. Меню Insert предназначено для вставки в проект новых компонентов (процедуры.позволяет редактировать значение переменной во время выполнения программы. Undo C h e ck Out . типы которых приведены в табл. Две команды этого меню позволяют более эффективно работать с большими программами: • • • • • • • • • • • • • P ro ced u re D efin itio n . 3.позволяет вывести значение переменной. формы. S tep O ver . End . Поддерживается до четырех "возвратов".устанавливает строку в программном коде.устанавливает или снимает точку. Меню Help предназначено для вызова контекстной помощи и справочной информации о Visual Basic. S tep To C u rso r . M enu Ed ito r . C a lls .позволяет быстро переместиться к коду вызываемой процедуры.копирует выделенные файлы проекта из программы контроля версий в рабочую папку с атрибутом чтение/запись. которая будет выполняться следующей.7.выводит на экран диалоговое окно настройки параметров среды разработки. Меню A d d -In служит для расширения среды разработчика. S tep In to .представляет список всех незавершенных процедур.включение дополнительных средств разработчика.обеспечивает перемещение курсора в точку последнего изменения программного кода.показывает выполнение кода только данной процедуры.запускает программу на выполнение. R e s ta rt . В приложении Visual Basic могут присутствовать файлы.позволяет показать значение переменной в окне отладчика во время выполнения программы.0 ) в рабочую папку с атрибутом только для чтения. R e fe re n c e s . в которой выполнение программы прерывается.7 . Меню T o o ls включает доступ к дополнительным средствам разработчика: • • • • • • • • • • • • Add W atch . C h e ck Out . п. на которой находится курсор. C le a r A ll B re a k e p o in ts .).вызывает утилиту построения пользовательского меню. Меню V ie w предназначено для быстрого перехода или вывода на экран различных окон программной оболочки.прерывает команду C h e ck O ut. G e t .показывает выполнение последовательно всех строк кода.запускает программу на выполнение с предварительной перекомпиляцией всех файлов проекта.выполняет без вывода на экран часть кода до строки. In s ta n t W atch . S h o w N ext S ta te m e n t . Стандартно в него входят команды для вызова: • • Data M an an ger . а также выравнивать в форме элементы управления.утилита для интерактивной работы с данными. которая будет выполняться следующей. C h e ck In . отменяя все сделанные изменения. C ustom C o n tro ls . Т аб л и ц а 3 . модуля класса и т. L a s t Po sition . O p tio ns . если курсор находится на ее имени. Togg le B re a ke p o in t .возобновляет прерванную работу программы.снимает все точки прерывания работы программы. S e t N ext S ta te m e n t .прерывает выполнение программы в случае неверного результата.

использовать все возможности работы с курсорами на сервере. Существенно сократить программный код позволяет использование коллекций. могут быть реализованы благодаря наличию в нем объектов для доступа к данным Data Access Object (DAO). как манипулировать данными.0 позволяет использовать язык SQL. организованные на базе объектно-ориентированной распределенной среды управления. поддерживать целостность данных. Для пользовательского приложения SQL Server является мощным источником генерации и управления нужными данными. и обеспечивать их защиту от несанкционированного доступа. применимые в разработке приложений для обработки информации. При задании метода Synchronize выполняется согласование данных в обновляемой и оригинальной БД. Microsoft . достигая максимально возможной скорости доступа к данным и минимизируя сетевой трафик. параллельная обработка. Эти объекты позволяют разработчику программным путем. так и с БД других форматов.0 использует индексы новой.0. Уникальным свойством JET 3.0 является возможность создания копий данных (репликации БД). Нельзя не отметить. позволяющие уменьшить время их создания и ускорить процесс поиска данных. В Visual Basic Enterprice Edition включены объекты для доступа к внешним данным . не прибегая к помощи процессора данных JET 3. поддержка больших баз данных на относительно недорогих аппаратных платформах при сохранении простоты управления и использования. Это позволяет. Для изменения данных JET 3. как тиражирование данных. что JET 3. изменению и удалению таблиц. конечно.0 также обеспечивает поддержку целостности и проверку вводимых и изменяемых данных на уровне полей и записей. более компактной структуры. Эта СУБД позволяет удовлетворять такие требования.Remote Data Control (RDC).Remote Data Object (RDO) и соответствующие элементы управления .5. индексов и запросов. Вы можете использовать для работы с данными несколько рабочих областей. правда. По сравнению с предыдущей версией Visual Basic возможности объектов для доступа к данным теперь существенно расширены. Он не предназначен непосредственно для разработки пользовательских приложений.5 . а выполняет функции управления базой данных. Для создания копии БД разработчику достаточно воспользоваться методом MakeReplica. поддерживаемых через ODBC. Причем эти операции могут выполняться как с файлами формата БД процессора данных. MS SQL Server представляет собой систему. так и управлять структурой БД.converted to PDF by HupBaH9I Тип ф а й л а Пользовательское приложение. MS SQL Server Microsoft SQL Server 6. включая ее создание. JET 3.0 и предназначенных специально для работы с данными элементов управления. Процессор данных в Visual Basic поддерживает все стандартные операции по созданию. Управление базой данных обеспечивается процессором данных с помощью объектов для доступа к данным. Формат БД процессора данных Visual Basic соответствует формату Access. плохо сравнимую с рассмотренными выше СУБД. предъявляемые к системам распределенной обработки данных. не соответствует на 100 процентов стандарту ANSI. 32-разрядного процессора данных . который. Сервер имеет средства удаленного администрирования и управления операциями.одна из наиболее мощных СУБД архитектуры клиент-сервер. 3. с помощью соответствующих свойств и методов DAO. включая каскадное удаление и обновление. включающее в себя все необходимые компоненты База данных Отчет Готовые компоненты и элементы управления OLE (ActiveX) Проект Форма Двоичный код для формы Программа Файл ресурсов Модуль классов Расш ир ен ие ф айла EXE MDB RPT OCX (VBX) VBP FRM FRX BAS RES CLS Основные возможности Visual Basic.JET 3.

.5. Загрузка индивидуальных таблиц может оказаться хорошим решением при необходимости восстановления данных после сбоя. Visual Basic 4. Построенная на основе технологических решений. Операции по сопровождению баз данных включают проверку распределения страниц. Microsoft Access и другие СУБД (при наличии ODBC драйвера. называемую Динамической блокировкой (Dinamic Locking). SQL Server 6.5 превосходит предыдущую версию с точки зрения использования многопоточной параллельной архитектуры операционной системы для повышения производительности и масштабируемости. если на компьютере установлено несколько процессоров. Многочисленные расширения языка Transact-SQL включают расширенную поддержку курсоров.0. объединяющего пять серверных приложений. отвечающего определенным требованиям). Пакет Enterprise Manager включает утилиту. Характеристика основных из них приведена в табл. Для эффективной работы с данными SQL Server имеет целый набор специальных инструментов (рис. 3. либо из копии базы данных. использовать стандартные настройки генерации кода создания/удаления объектов или использовать собственные. SQL Server может тиражировать информацию в БД иных форматов.x или 6. в целях создания хранимых процедур для SQL Server. необходимой оптимизатору. Сервер.5 имеет новую масштабируемую архитектуру блокировок.5 демонстрирует много значительных нововведений. работающих в среде клиент-сервер. создание страховочных копий таблиц и журналов транзакций. целостности указателей в таблицах (включая системные) и индексах. возможность использования команд определения данных внутри транзакций и т. версия 6.x или сервер Sybase. IBM DB2. Серверисточник может быть Microsoft SQL Server версии 4 . должен быть Microsoft SQL Server версии 6. определять момент выполнения переноса объектов: немедленно. какого типа объекты подлежат копированию (или копировать все объекты всех типов). Sybase. Microsoft SQL Server 6. от него зависящие. Загрузка таблицы может быть выполнена либо из копии индивидуальной таблицы. разработанных для совместного функционирования в качестве интегрированной системы. Microsoft SQL Server 6. поддерживающие OLE Automation. Тем не менее создание страховочных копий всей базы данных и журнала транзакций остаются основой стратегии резервного копирования. для копируемого объекта включать объекты. разработчик или администратор может: • • • • • • • выполнять копирование объектов любого типа с указанием. когда загрузка всей базы данных неэффективна. переносить схему базы данных вместе с данными или без них.5 содержит Ассистент администратора.5 предназначен исключительно для поддержки систем. позволяющую переносить некоторые или все объекты из одной базы данных в другую.31). реорганизацию страниц в таблицах и индексах. работающими на ПК. однократно в определенный момент времени. появившихся в Microsoft SQL Server 6. дополнять или замещать существующие данные. обновление информации. уничтожать объекты в базе-приемнике перед копированием схемы. SQL Server предоставляет возможность создания страховочных копий и восстановления индивидуальных таблиц. что поддерживают OLE. Используя эту утилиту.7. Он поддерживает широкий спектр средств разработки и максимально прост в интеграции с приложениями. Хранимые процедуры. Все эти операции могут быть установлены для автоматического выполнения по заданному администратором графику. SQL Server 6. Этот инструмент позволяет назначать основные процедуры сопровождения базы данных и определять для них график выполнения. то есть очень эффективно использует возможность ускорения работы в том случае.5 входит в состав семейства Microsoft BackOffice. позволяют разработчику применять практически любой инструмент из тех. которая комбинирует блокировку на уровне страницы и записи для достижения максимальной производительности и подключения максимального числа пользователей.0 поддерживается посредством новой 32-разрядной DBLibrary (OCX). который получает объекты. многократно по определенному графику. включая Oracle. 3. д.converted to PDF by HupBaH9I SQL Server 6.

отображающие информацию о действиях конкретных пользователей.6. используя удобный графический интерфейс. в основном. конечно. с необходимостью заплатить). обращающихся к Microsoft SQL Server 6.151 SQL DistifcuJed ManegelflSnt Obtecls Readme.:l V I P i -Л' SQL Pejfatnence Mptiitpr . подключения языка.converted to PDF by HupBaH9I M fcrosott S Q L S erver б. позволяющая администраторам и разработчикам отслеживать и фиксировать активность клиентских приложений. Этот вариант гарантирует получение . SQL Trace может в реальном времени отображать все аспекты обращений к серверу или использовать фильтры.7 . 3. SQL Service Используется для старта и остановки служб Manager SQL Server (SQL Server и SQL Executive). как FoxPro. Он позволяет вам выполнять задачу системного администрирования. несмотря на массу различных проблем (связанных. ISQL/w Позволяет вводить выражения и хранимые процедуры Transact-SQL в графическом интерфейсе запросов. что каких-то десять лет назад в существовавшем еще тогда СССР невозможно было купить легальную копию такой популярной СУБД. модификации установленного программного обеспечения и удаления SQL Server с диска.3 1 . ISQ U w Manager SQL S aerify Mahagsr S Q L T m cs SQL Client Conligualian Utiftv MS G jei > SQL Server SQLSetver Web Assistant Books Online ? Microsojt ■& ODBC SQL :.5 Г р аф и ч ески й О писание ин стр ум ен т SQL Setup Используется для установки нового. Utility SQL Transfer Обеспечивает легкий графический способ Manager переноса объектов и данных с одного сервера на другой.bit SQL Setup Рис. SQL Trace Графическая утилита. SQL Client Устанавливает информацию соединения Configuration сервера для клиентов. перестройки БД Master и установки опций доступа к данным. способствовал выработке стойкого отсутствия интереса программиста к вопросу: "Что такое легальная копия?" Но возрастающая сложность программного обеспечения и разрабатываемых с его помощью систем заставляет нас. Программа Setup также может быть использована для изменения опций сетевой поддержки.5. Характеристика основного инструментария SQL Server 6. Сей факт. 3 . приложений или машин. Т аб л и ц а 3 .Ь [Common| j Ql Eniwpise SQL Service Manage. Руководство для покупателя Жизнь не стоит на месте и сейчас трудно себе представить. SQL Security Позволяет управлять бюджетами Manager пользователей серверов SQL. SQL Enterprise Обеспечивает управление с сервера или с Manager рабочей станции. решительно повернуться в сторону легального пакета программ.

Средства разработки. такими. программистов или студентов. Windows NT и Windows 95 Наличие Мастера установки (Setup W izard). Как ни странно может показаться на первый взгляд. в полном комплекте и с обширной документацией. Т аб л и ц а 3 . программное обеспечение для разработчиков поставляется в двух вариантах: • • Стандартная версия предназначена для хорошо подготовленного поль-зователя. В связи с этим версия включает средства создания независимо работающего пользовательского приложения (исполняемого модуля). + позволяющего создать набор дистрибутивных дискет для распространения пользовательского приложения Наличие Class Browser . который хочет найти наиболее оптимальный вариант работы с большими объемами данных. Профессиональная версия включает также максимальное количество вспомогательных средств разработчика и дополнительные информационные материалы.8. + позволяющее использовать стандартный набор и дополнительные DLL-функции (только на CD-ROM) Доступ к данным и поддержка технологии клиентсервер Встроенная поддержка реализации технологии "клиент. включая наследование.8 .+ + + сервер" с наиболее популярными серверами баз данных. Начнем с Visual FoxPro. + которые могут быть использованы при разработке прикладной программы Полное руководство программиста по Win32 API. собственно я могу купить?" Давайте посвятим ответу на этот вопрос несколько страниц нашей книги. как Microsoft SQL Server.1.средства работы с классами + Возможность создания независимого запускаемого + модуля пользовательского приложения в виде EXEфайла и его свободное распространение Наличие дополнительных элементов управления OLE. Набор средств разработки программ в стандартной (C) и профессиональной (П) версиях Visual FoxPro С редства р азр або тки и н али чи е ком понентов С П СУБД Возможности для разработки программного обеспечения Визуальные средства разработки + ++ Возможность создания собственных классов и + ++ подклассов. Windows NT и Windows 95 Наличие большого набора элементов управления. инкапсуляцию и полиморфизм Наличие визуального отладчика прикладных программ + + + Возможность работы в операционных системах Windows + + + 3. о которых идет речь в данной книге. Более подробно различия между этими двумя версиями представлены в табл. поставляются для розничной продажи в нескольких вариантах комплектации. разрабатывающих коммерческое прикладное программное обеспечение. ORACLE 6 и ORACLE 7. 3. наиболее популярный вопрос потенциального покупателя: "А что.Корпорации Microsoft. В соответствии с общей политикой фирмы-производителя пакета Visual FoxPro .converted to PDF by HupBaH9I программ из надежного источника. Профессиональная версия предназначена для программистов.1n.. + ++ позволяющих создать удобный пользовательский интерфейс Возможность распространять прикладные программы. с помощью 32-битных драйверов ODBC . + разработанные программистом для последующего использования в операционных системах Windows 3. разрабатывающих программное обеспечение не в коммерческих целях.

Использование динамических библиотек Windows. видеофрагменты и аудиокомментарий и предназначен для достаточно опытных програмистов. так и в составе пакета MS Office for Windows 95 Professional.0. Работа с Project Manager. которая позволяет управлять другими приложениями из Visual FoxPro Поддержка редактирования на месте OLE-объектов. Объектная модель Visual FoxPro. в составе которой поставляется документация и файл контекстной справки на русском языке. Создание меню и панелей инструментов. Quick Reference Guide и Users Guide Наличие документации Language Reference и Professional Features Guide + ++ + + ++ + ++ + ++ + + + + + + + + + ++ + Почти сразу после выхода Visual FoxPro появилась и локализованная версия. преобразование программ. документация и дополнительные средства разработчика Возможность использования внешних API библиотек Возможность разработки приложений. Для максимально быстрого освоения новых приемов разработки пользовательского приложения программист может воспользоваться специальным пакетом . словарь данных. на русский язык переведен весь интерфейс.PRG для генерации программы. конечно. отчетов.. Разработка приложений в архитектуре "клиент-сервер". баз данных и таблиц.0 Наличие элементов управления OLE Container. СУБД Access может быть приобретена как отдельный пакет. Installation Guide.x в версию 3. в которой. разработанных на FoxPro 2. Использование визуальных классов.0. Использование OLE и OLE Automation. Особенности разработки приложения для работы в локальной сети. Мастера и построители. который содержит CD-ROM с интерактивной мультимедийной системой обучения на английском языке. хранящимися на различных языках Наличие компилятора графических файлов контекстной помощи Наличие программы GENDBC. позволяющих во время работы программы использовать в ней компоненты OLE Поддержка OLE Automation. локальных и внешних просмотров Наличие Мастера создания таблиц в формате Microsoft SQL Server на основе данных в формате Visual FoxPro (Upsizing Wizard) Поддержка технологии OLE 2. поддерживающих различные кодовые страницы для работы с данными. Существует полностью локализованная версия Access.converted to PDF by HupBaH9I версии 2.Mastering Microsoft Visual FoxPro 3. Он охватывает следующие темы: • • • • • • • • • • • • Проектирование приложения. иконок и курсоров Imagedit Наличие документации Developers Guide. Этот пакет содержит пояснительный текст. встроенных в Visual FoxPro без необходимости перехода в другое приложение Программы. Русской версией Access. Обработка ошибок и отладка пользовательского приложения. Разработка форм. запросов и представлений. которая может перестроить базу данных Наличие более сотни файлов изображений и курсоров для использования в прикладной программе Наличие средства создания и редактирования изображений. комплектуется и профессиональная русская версия . помимо документации и значительной части контексной помощи.0 Наличие визуальных средств проектирования базы данных.

включающий планировщик и поддержку исключительных соединений. включающая мощный структурный язык программирования ++ + + Возможность расширения среды разработки за + счет встроенного (Add-in) дополнительного инструментария разработчика (типа CASEсредств) + ++ ++ Возможность использования готовых компонентов для быстрой разработки приложений (ActiveX. поль-зователей и включающий Библиотека для работы с базами данных Access.0 и ODBC. 16-разрядные Visual Basic Custom Controls. Набор средств разработки программ в различных версиях Visual Basic 4. Т аб л и ц а 3 . Power Point . но и предоставляемая использования общего языка программирования .converted to PDF by HupBaH9I MS Office. Инструментарий для управления репликациями. Более подробно различия между этими тремя версиями представлены в табл. OLE-объекты и DLL) ++ + + Редактор с цветным выделением синтаксиса и + компилятор для получения псевдокода для 16­ битной и 32-битной операционных систем на основе одного и того же кода ++ + + Отладчик программного кода с возможностью + отслеживания значений переменных. В составе MS Office for Windows 95 Professional кроме СУБД Access вы получите следующие хорошо интегрированные с ней пакеты: • • • • MS Excel . Компилятор файла контекстной справки для Windows 95. является не только программисту возможность for Application. Более 10 новых 32-разрядных элементов управления OLE. Она содержит.мощный пакет электронных таблиц для выполнения динамических расчетов и графического представления данных.0a . профессиональной (П) и в версии масштаба предприятия (МП) С редства р азработки С П МП + ++ ++ Визуальная среда разработки. дополнительные возможности для работы с данными.индивидуальный электронный планировщик и записная книжка. Access Developer's Toolkit 95.9. входящих в состав поддержка технологий OLE 2.программа для подготовки презентаций. занятых созданием приложений в архитектуре "клиент-сервер" для целого предприятия. Версия масштаба предприятия предназначена для групп разработчиков. Sheduler Plus . Расширенный Мастер для создания программы установки пользовательского приложения.9 . Профессиональная версия предназначена для опытных разработчиков коммерческих приложений. в частности. Справка по объектной модели MS Office.один из наиболее популярных для среды Windows текстовых процессоров с очень широкими возможностями. Справка по использованию объектов для доступа к данным. Visual Basic поставляется в трех вариантах: стандартная и профессиональная версии. и версия масштаба предприятия (Enterprise Edition): • • • Стандартная версия предназначена для программистов. Справка по Visual Basic.в стандартной (С ). MS Word . студентов и начинающих программистов. отметки точек остановки и сохранения стека вызова .Visual Basic Для профессиональных разработчиков предназначен пакет позволяющий распространять разработанное приложение для следующие компоненты: • • • • • • • • MS Office. 3. не разрабатывающих коммерческих приложений. Замечательным свойством всех пакетов.

0 Создание сервера OLE Automation Утилита и Мастер создания программы для распространения и установки пользовательского приложения Библиотека графических изображений. Драйвер для Microsoft SQL Server Data Explorer Высокоэффективные элементы управления внешними данными (Remote Data Control RDC). Контроль вводимых пользователем в прикладную программу значений. для Visual Basic существует записанная на CD-ROM интерактивная система изучения этого средства разработки . которая. dBASE. например.0.1 и Windows 95 API (справка по Win32 API только на CD-ROM) Более 250 изображений в форматах bmp и wmf Компилятор файла контекстной помощи для пользовательского приложения ++ + ++ ++ 16 и 16 и 32. но не позволяет создать новую) Возможность использования данных Microsoft Access. .0 и соответствующие элементы управления для печати отчета в пользовательском приложении Справка по Windows 3. элементы управления для мультимедиа и т. FoxPro. включающая прокручивающиеся курсоры.. Этот пакет охватывает следующие основные темы: • • Обзор Visual Basic как средства быстрой разработки приложений.Mastering Microsoft Visual Basic 4. Paradox и Btrieve (только в 16-битной версии) наряду с таблицами Microsoft Excel и текстом Менеджер данных для визуальной работы с данными Элементы управления для работы с данными без необходимости написания кода Полная поддержка стандарта ODBC 2 . трехмерные элементы управления. п.converted to PDF by HupBaH9I подпрограмм + Набор стандартных элементов управления Элементы управления Windows 95.32бит бит + + + + ++ ++ + ++ ++ + ++ ++ + ++ ++ + ++ ++ + + + + + ++ ++ ++ ++ ++ ++ + ++ ++ + ++ + ++ + + ++ ++ Так же как для Visual FoxPro.0 . основанные на ODBC и оптимизированные для работы с ORACLE Server и Microsoft SQL Server Поддержка OLE 2. позволяет получить доступ к существующей БД. включающая более 450 значков для использования в пользовательском приложении Утилита построения отчета Crystal Reports for Visual Basic 4. Поддержка операционных систем 32бит Менеджер компонентов Утилита построения профиля программы Программа управления версиями Visual SourceSafe Процессор данных (в стандартную версию Visual Basic включена ограниченная подверсия процессора данных.

UNIX и т. использующими протоколы SNA (Systems Network Architecture).Microsoft Electronic Forms Designer. а также удобное средство организации и управления всем потоком входящих и исходящих сообщений. Все входящие в него программы отвечают требованиям секретности правительства США С2 и европейскому сертификату Е3. Использование динамических библиотек Windows. что пакет BackOffice позволяет легко интегрировать все сетевые службы и ресурсы с помощью единой процедуры регистрации доступа пользователя. включенных в сеть. Подготовка отчетов с помощью Cristal Reports. д. Стоит добавить. Позиционирование приложения для решения реальных задач в области бизнеса. такие как Novel NetWare. включающая чрезвычайно быструю файловую систему. создающие основу для функционирования как самого SQL Server. и легко интегрируется в самые распространенные сетевые системы. Microsoft Systems Management Server позволяет выполнять администрирование компьютеров. а также при необходимости выполнять их диагностику. Microsoft SNA Server . серверы приложений и печати.это многоцелевая сетевая операционная система. Объекты для доступа к данным. Разработка баз данных. распределенных в сети. Применение OLE и создание OLE-сервера. Microsoft Mail Server . Это предоставляет возможность централизованно проводить установку и модернизацию программного обеспечения на всех компьютерах. Эта операционная система способна функционировать на компьютере. Доступ к данным посредством элементов управления. Создание вспомогательных средств разработки. MS SQL Server поддерживает следующие сетевые протоколы: • • • • • • • • Microsoft Windows NT Server Microsoft LAN Manager Novell NetWare TCP/IP IBM LAN Server Banyan VINES DEC PATHWORKS Apple AppleTalk Он также обеспечивает работу следующих клиентов: • • • • • • • • Microsoft Windows Microsoft Windows Microsoft Windows Microsoft Windows Microsoft MS-DOS UNIX Apple Macintosh IBM OS/2 3.система передачи электронных сообщений. имеющем до 32 процессоров. так и пользовательских приложений. В состав пакета входит дизайнер электронных форм . .это система (шлюз) для связи сети персональных компьютеров с мэйнфреймами (большими ЭВМ) фирмы IBM.мощное средство управления данными в архитектуре "клиент-сервер" поставляется как отдельный пакет и в составе пакета BackOffice. Используя входящие в него шаблоны и язык программирования Visual Basic.converted to PDF by HupBaH9I • • • • • • • • • • Обработка ошибок. способного работать с электронной почтой. Microsoft SQL Server .1 95 for Workgroups NT Workstation В состав пакета BackOffice помимо MS SQL Server входят еще 4 хорошо интегрированных пакетов программ для эффективной работы в системах клиент-сервер: • • • • Microsoft Windows NT Server . пользователи смогут создавать собственные электронные формы и бланки и пересылать их друг другу. Создание приложения.

на которой планируется использовать программу.5 Необходимый 8 (12) объем оперативной памяти . привод CD-ROM Привод CD ROM Не меньшее значение. кто слышал о программировании. полагают. обычно бородатых людей.2. как о занятии достаточно странных. Очень часто именно низкого качества сетевые платы приводят к разрушению баз данных и индексных файлов.10. компьютера PowerPC. и истории про нули и единицы не имеют непосредственного отношения к . обладая гипертрофированным самомнением. На самом деле этот страшный образ порожден довольно давно.0 B a sic 6 . используя все возможности процессора и пересылая громадные объемы данных между процессором. Требования к программному и аппаратному обеспечению П о казатели V isu a l A cc e ss V isu a l SQ L Serve FoxP ro 7 . Даже средней сложности система автоматизации обработки данных заставляет компьютер работать с максимальной интенсивностью.4. Мб ++ ++ ++ 12 (16 для Windows NT) 10-40 ++ ++ 6 (16 для 1 6 (3 2 ) Windows NT) Занимаемый объем 15-80 на жестком диске.5 3 . жестким диском и оперативной памятью. Мб Дополнительные Мышь. 4. чем параметры. что эту книгу будут читать люди с самой разной степенью компьютерной подготовки. 4. бормочащих о каких-то нулях и единицах. Т аб л и ц а 3 . Особо следует обратить внимание на качество и надежность работы сетевых плат.0 4 . MIPS.3. что она попадется тем. Мышь. Возможно даже. 4. R4xx или Alpha AXP + + + + Операционная система (наиболее ранняя поддерживаемая версия): + ++ ++ Windows 3. Требования к программному и аппаратному обеспечению сведены в табл. 3. имеет качество техники.0 Минимальные 486DX 486DX 386DX 486DX-33 требования к (Intel процессору Pentium).converted to PDF by HupBaH9I Перед выбором соответствующего средства разработки стоит хорошо подумать о том. на каких компьютерах и под управлением какой операционной системы будет работать создаваемое вами пользовательское приложение.1 0 . Глава 4 Основы языка программирования 4. если ваше приложение работает в локальной сети. что влечет за собой весьма длительные простои и потери данных.1.1 Windows 95 ++ + Windows NT 3. Что такое язык программирования Как написать программу "Горячая десятка" Еще несколько навязчивых советов Авторы. устройства привод привод CD-ROM CD-ROM 8-36 80 Мышь.

и достаточно важных особенностей каждого языка. об этом обязательно будет написано в справочном файле Visual FoxPro при описании данной команды. но и в квадратных скобках. если вы не хотите долго стучать по клавиатуре. В этой главе мы попробуем дать основные сведения о языке программирования Visual FoxPro читателям. работая с СУБД. но одна из них .запись с указанным номером. что. При попытке описания языков программирования в рассматриваемых средствах разработки авторы столкнулись с достаточно большими трудностями. Что такое язык программирования В предыдущей главе мы познакомились с основными действиями. которые можно выполнить с помощью диалоговых средств в визуальной среде разработки. некоторые действия приходится выполнять многократно. Решить эти проблемы можно с помощью языка программирования. В Visual Basic так делать нельзя. может быть.разработчиков из Microsoft. перевалило далеко за тысячу. Очевидно.converted to PDF by HupBaH9I современным СУБД для персональных компьютеров. Многие функции работы пользовательского приложения невозможно реализовать. в ряде случаев команды получились достаточно громоздкими. В связи с тем. выполняемого командой. кто их придумал . Например. Действительно. откроем маленький секрет. что разработчики языка старались дать названиям команд максимальную смысловую нагрузку для их более легкого запоминания. С помощью каких средств можно выполнять какие-либо действия с данными. RECORD nRecordNumber . вину за это они целиком и полностью возложили на сами языки. Опции служат для уточнения действия. которые последовательно обрабатываются интерпретатором и преобразуются им в машинный код. открывать одни и те же таблицы.богатое историческое наследие .привела к тому. начнем со структурной части рассматриваемых языков. Типичная структура команды: COPY TO FileName [FIELD S FieldList] [Scope][FOR Expression] Название команды является ключевым элементом для ее идентификации. то в команде вместо слова Scope надо использовать один из перечисленных вариантов: ALL . а в следующей главе изучим их объектно­ ориентированные возможности.все записи в таблице. не упоминая о квадратных скобках. аналогично выбору команды в меню. в свою очередь обрабатываемый микропроцессором. . С помощью команд мы выполняем какие-либо действия. В этом параграфе вы узнаете: • • • • Из чего состоит язык программирования. NEXT nRecords . которые оснащены языковыми средствами. Что ж. Чтобы разобраться в этой лавине. на которые будет воздействовать команда. в наследство от Xbase в Visual FoxPro до сих пор можно символьные значения указывать не только в кавычках. позволяющими достаточно легко написать простую программу. Не сомневаясь в своих интеллектуальных способностях. то остается рассказать о нем и языке программирования Visual FoxPro. Мы думаем. Если мы используем эту возможность.1. Язык программирования представляет собой набор команд. 4. что современные объектно-ориентированные свойства в них сосуществуют с традиционными структурными составляющими. Где могут храниться нужные данные. Причем число команд и функций. мы систематизировали справочный материал и дали несколько советов по наиболее эффективных приемам программирования в рассматриваемых средствах разработки. в Visual FoxPro названия команд в большинстве случаев можно сокращать до четырех символов.указанное число записей после текущей (включая текущую). REST . кто уже пишет такие программы. Эти языки программирования имеют достаточно много общих черт. Если в каком-то случае так делать нельзя из-за опасности потерять уникальность идентификации. что стоит придерживаться общих возможностей и указывать символьные значения в кавычках.записи от текущей до конца таблицы. так как СУБД Access использует язык программирования Visual Basic. обозначенная словом Scope. Например. позволяет задать диапазон записей. а пособниками признали тех. которые будут копироваться в новый файл. используя только визуальные средства. Как делятся в программе переменные и массивы по области действия. составляющих структурную основу языка. При этом мы будем стараться максимально выделять общие черты рассматриваемых языков программирования и заранее приносим свои извинения опытным разработчикам за игнорирование каких-то. Для тех. которые от работы с диалоговыми средствами хотят перейти к написанию пользовательской программы. Например. Часть команды. В данном примере можно использовать опцию FIELDS для указания списка тех полей.

3.2. Т аб л и ц а 4 . Помните. В качестве констант мы можем использовать данные различных типов: • Символьные данные записываются в кавычках. Возведение в степень . Это различие очень удобно использовать для поиска данных по неполному соответствию. Искомый символ указывается слева от этого оператора. хранящихся в файле таблицы Константы часто используются для включения в выражения каких-то предопределенных данных. ссылаясь на который можно однозначно установить. Для хранения в памяти однородных данных используются массивы. что с одним оператором необходимо использовать данные одного типа! Многие из приведенных в табл. Для некоторых же из этих операторов требуется более пространное пояснение. хранящиеся в оперативной памяти (ОЗУ) Массивы Множество элементов данных. Например. то Visual FoxPro будет считать верным результат.2. Поля. то к верному результату приведет только найденное слово "ИВАН". Например. • • • Данные типа "дата" или "дата и время" в Visual FoxPro записываются в фигурных скобках: {1 0 /1 0 /9 5 }. При написании выражений необходимо учитывать приоритет выполнения операций: 1. переменные. Оператор " ==" отнюдь не то же самое. перечень которых приведен в табл. что оператор "=". Если последний можно идентифицировать словом "равно". Для того чтобы вспомнить обозначение типа данных. которые называются переменными. например.1 . 4. "ИВАНЕНКО". хранящиеся в таблицах или в памяти компьютера. каждое с предопределенным фрагментом данных. хранящихся в ОЗУ Записи в Множество строк.в значение False. если найдет значения "ИВАНОВ". функции и операторы представляют собой элементы для составления выражений. В Visual Basic функции этих двух типов данных выполняет один тип данных "дата и время". то для первого больше подходит название "идентично". вернитесь к табл." . Способы представления данных Способ О писание п ред ставлен и я Константы Единичные элементы данных." .F. когда точно неизвестно искомое значение. 4. записываемые в программном коде и неизменяемые в процессе работы Переменные Единичные элементы данных.ложному значению (False). Данные этого типа выделяются значками "решетка": #10/10/95#.соответствует истине (True). так же как и указанное слово "ИВАН". какие данные мы имеем в виду.2 операторов знакомы нашим читателям со школьной скамьи.T. Для обработки информации мы можем использовать данные.converted to PDF by HupBaH9I Условие выполнения команды FOR позволяет предопределить выполнение команды в зависимости. В Visual Basic присваивание любого отличного от нуля значения установит константу в значение True. В последнем случае для данных в памяти. Логические данные в качестве константы могут принимать одно из двух значений. Для работы с данными используются операторы. мы можем запомнить слово имя. и только 0 . константы. В Visual FoxPro при записи они ограничиваются точками: ". используя его указание в кавычках: "Имя". которые не изменяются во время работы программы. от содержания данных в полях. • • Оператор "$" используется для поиска символа или набора символов в каком-либо символьном выражении или поле примечаний. мы должны определить идентификатор. содержащих заранее таблицах определенные поля. Если же в выражении для поиска указать оператор " ==". Числовые данные используются без каких-либо разделителей. ". если мы будем искать данные по условию cName = "ИВАН".

nColumnsl]) [. если значение nColumnsl не опpеделено. nColumns2])] . имена которых не соответствуют приведенному шаблону (EXCEPT). созданные в какой-либо процедуре. как только мы возвратимся из создавшей их процедуры на более высокий уровень.. После объявления массива по умолчанию всем его элементам присваивается логический тип данных со значением . будут действовать и во всех вызываемых из нее процедурах и функциях. В Visual Basic задать массив можно в команде D im . Локальные переменные (private) существуют только во время работы процедуры или программного файла (модуля). Важная особенность локальных переменных заключается в том. В последнем случае nRows1 =1000 и nColumns1=65. Каждый массив может содержать не более 65000 элементов. присваивается статус локальных. По умолчанию всем переменным. то массив одномеpный. 5. локальные переменные. что шаблон обычно включает общую часть имени и знаки замещения "?" и "*". Обращение к элементам массива производится с помощью указания после имени массива в круглых или квадратных скобках нужных номеров строк и (или) столбцов. 3. Опции команды в Visual FoxPro позволяют не приводить полный список всех переменных. а несколькими знаками "?" имена соответствующей длины. или на переменные. Напомним. Таким образом. в Visual FoxPro необходимо использовать команду STORE Expression TO MemVarList | ArrayList или использовать присвоение . Перед использованием массивов в Visual FoxPro их надо объявить командой DIMENSION ArrayName1(nRows1 [. или Static VarName [([Subscripts])] [As [New] 7ype][. В Visual Basic мы должны перечислить все объявляемые переменные..любое их число.. то после завершения работы программы "старые" значения будут восстановлены. VarName [([Subscripts])] [As [New] Type]]. 6. 1000x65 и т.converted to PDF by HupBaH9I 2. то есть предельная размерность двумерного массива может составить 254x255. определяемым в программе.. первый замещает один алфавитно-цифровой символ. в котором они были определены. Для задания нужного типа данных. указав его размерность в параметре Subscripts .F. VarName [([Subscripts])] [As [New] Typ e]]. которые были объявлены ранее (в программе более высокого уровня). имена которых соответствуют шаблону (L IK E ). 4. В последнем варианте объявленные переменные сохранят свои значения до конца работы программы.или двумерные таблицы переменных под общим именем. что если они были определены с теми же именами. Умножение и деление Сложение и вычитание Сложение символьных выражений Операции сравнения NOT AND OR При необходимости изменения порядка действий следует использовать скобки.. 7. который с помощью символов "*" и "?" укажет распространение действия команды на переменные. а использовать для их идентификации шаблон. Переменные в программе имеют строго определенные области действия и по этому признаку делятся на три типа. а второй . ArrayName2(nRows2 [. Явно определить статус переменной в Visual FoxPro можно командой PRIVATE MemVarList | PRIVATE ALL [LIK E Sceleton | EXCEPT Sceleton] В Visual Basic для этого используется команда Dim VarName [([Subscripts])] [As [New] Type][. При большом количестве однотипных переменных более эффективно использовать вместо них массивы. а это относится и к переменным. но перестанут быть доступными. 8.. то есть одно. п. Это позволяет знаком "*" задавать все имена..

2). которая одновременно присвоит ей нулевое значение: STORE CTOD('.9 1 } TO dDate Для форматирования значения даты в Visual FoxPro удобно использовать установочную команду S E T D A TE.yy") Возвращает значение переменной dToday в виде 01.. В Visual Basic такая команда будет выглядеть аналогично команде Dim Public VarName [([Subscripts])] [As [New] 7ype][.0 1 . .converted to PDF by HupBaH9I MemVar | Array = Expression = Пpи указании идентификатоpа массива без аpгументов указанное значение Expression пpисваивается всем элементам массива. FirstWeekOfYear]]]) Например: dDate = Format(dToday. Глобальные переменные (public) будут сохранять свои значения во всех программных файлах и вызываемых ими процедурах. Format [. FirstDayOfWeek [. Например: DIMENSION aMembers(4. nColum ns2])]. "dd. ArrayName2(nRows2 [.96. например: S ET DATE GERMAN STORE {0 1 . Для объявления переменных и элементов массива глобальными в Visual FoxPro используется команда PUBLIC MemVarList | [ARRAY] ArrayName1(nRows1 [.mm. nColumnsl]) [.') TO dDate или STORE { } TO dDate Для присвоения конкретного значения лучше воспользоваться вариантом с фигурными скобками.2) STORE 5 TO aMembers В Visual Basic такая же процедура будет выглядеть следующим образом (нам придется использовать цикл. о чем мы будем говорить в дальнейшем): Dim aMembers(4. nX As Integer For nX = 0 To 4 aMembers(nX) = 5 Next nX Для определения переменной типа даты в Visual FoxPro можно использовать следующую команду.11.. VarName [([Subscripts])] [As [New] Type]] . В Visual Basic присвоение значения даты можно выполнить следующим образом: Dim dToday As Date dToday = #1/11/96# А для форматирования даты надо использовать функцию Format(Expression [.

Если ее запустить. ArrayName2(nRows2 [. что при выполнении каких-либо действий в интерфейсе Visual FoxPro в окне Command автоматически записывается соответствующая команда. В нем можно набрать указанные строчки или скопировать их из окна Command.. будут выполнены сразу без нашего непосредственного вмешательства. содержащей список поставщиков. . относящуюся к указанной фирме. Чаще всего самым трудным бывает первый шаг. Для изменения или дополнения программы необходимо ее открыть с помощью команды Open в меню File. Если несколько последовательных команд перенести в программный файл. Региональные переменные или массивы (regional) могут использоваться только в Visual FoxPro. nColumns2])] . Писать даже самую простую программу непросто. перечисленные в списке MemVarList.. Из рассматриваемых средств разработки легче всего сделать это в Visual FoxPro. они будут удалены из памяти. ни более низкого уровня.converted to PDF by HupBaH9I Лишь после объявления глобальным переменным можно присвоить какие-либо значения. в которых были созданы. Программно тот же результат можно получить. установить тип файла Program. мы должны из меню File выбрать команду Open. Они подобны локальным и объявляются с помощью команды REGIONAL MemVarList Перед командой помещается директива #REGION nRegionNumber с указанием номера региона nRegionNumber (от 0 до 31). Откроется окно Редактора FoxPro. относящиеся к фирме с названием "Компьютерное образование".DBF. Из меню Database выбрать команду Browse и найти запись. можно из меню File выбрать команду New. 4. мы получим простейшую программу. то получится программа. При закрытии окна редактирования будет необходимо указать имя файла. С него и начнем. СУБД Access. установить тип файла и из списка выбрать SPPOS.d B f. После выхода из процедуры или функции. Поручим это самой СУБД. В регионе с другим номером та же переменная может иметь другое значение. которые мы до этого делали с помощью меню и соответствующих диалоговых окон. Если мы захотим из таблицы S PP O S. nColumns1]) [. Вы должны сначала объявить переменные или массивы внутренними и только потом присвоить им необходимые значения. в которой были созданы внутренние переменные. несколько действий. Обратите внимание. пусть сама напрягает свои "электронные мозги". в котором действуют переменные. прочитать данные. Не будем искать трудностей и просто избежим этого первого шага. Внутренние переменные (local) действуют только в пределах процедуры или функции. Visual Basic. Объявить переменные внутренними в Visual FoxPro можно командой LOCAL MemVarList | [ARRAY] ArrayName1(nRows1 [. Это может быть сделано несколькими способами. набрав в окне Command следующие команды: USE Sppos BROWSE LOCATE FOR Company = "Компьютерное образование" Если приведенная выше последовательность команд будет записана в файле.2. Как написать программу В этом параграфе мы научимся составлять очень простые программы. В Visual Basic для этой цели можно использовать команду Dim . К ним нельзя обратиться из программы или функции ни более высокого. которое в дальнейшем и будет являться именем программы. которые будут работать в • • • СУБД Visual FoxPro. Например.

если ее дли на превоекодит ширину окна редактора Запись cwm&dг\& конца ф ан л a Компиляция ngpe^i сохрвнонидм Использование lexnoitoi им «перетаскивания)! C o x p riH t H H u с т р а к л в б ч н й й к о п и и З л п н а сим вола конца строки т Гmmг Гг rftnl rrii ' Rrn|i4 I. В связи с тем. то перечень доступных опций в диалоговом окне Options зависит от типа окна. д.1.. 'Л гrwfll tnfcl1ПИ||-|ПИ| П-Ч'Л Й «Г г Г 1пГ К л 1л t Jil 1уг 1iw^bu-iiJ' — P IJrau-aiNJ-LiiHjp .-. При первом запуске программы и в последующем. Файлы с "p-кодом" получают другое расширение.^UrdW-BFi' Р 4ehf J4L^L4-| Ipi рГ ■P Г " *L M -' W 4 l fcfK ‘ '-H. Начнем с конфигурации.I. что редактор Visual FoxPro используется не только для работы с файлами программ.М . 4. неправильное написание ключевых слов и т. испольдо&ать эти установки для ввех программных ф ай л ив Сохранить сделанные установки пропускаемы * при нажатии клавиши Tab вид выравнивания Рис.недостаток или отсутствие запятых. . Поэтому уделим ему немного внимания.1 . 2 Г I? ^Йи-Л'TVll L*l-' ''VinJU ■ НЧГ P'ПPrr■ F P Г Sut ttLD l^bIi^. выявляемые на этом этапе. который выполняется во много раз быстрее интерпретируемой программы. Доступные установки для редактора видны из рис.. которое было активным перед его вызовом. но и вообще для редактирования текстовых данных.-LBH-J. Выберите команду Options в меню Tools. если активным окном было окно с данными поля примечаний. T a b W iihh. . Обратите внимание на очень удобную возможность компиляции программы перед ее сохранением.converted to PDF by HupBaH9I Если вы взялись за разработку программ.J L. как это видно на рис.*n* | Ll-^i . 4 . Например.h Iv I. В появившемся диалоговом окне найдите вкладку Edit.c fo j-a £ . будут недоступны..uliiprivEjLhiu tKl'UIIH. или "p-код".2. Сохранить вы б р ать д о выхода из С У Б Д П о к а зы в а й номер с т р о к и И КОЛОНКИ Число СИМВОЛОВ. FoxPro компилирует исходный код программы в так называемый препроцессорный код. зависит производительность вашего труда. Естественно. ведь от того. при ее изменении. Включение этой опции позволяет сразу определить синтаксические ошибки. например в полях примечаний.Ч * Aliqr4T. Автоматическое сохранение отступя при переходе нэ новую сгрюку Перенос -LifiCTM строки вниз. при этом некоторые опции.i* i i t ^ P I-T|*T/rr||KfV>p. то внешний вид окна Options будет таким. то вам часто придется проделывать эту операцию и работать с редактором Visual FoxPro. 4. насколько удобно установлены те или иные параметры работы редактора. Откройте какой-либо файл с программой или создайте новый файл. например компиляции.

3 . Не забудьте также о кнопках на стандартной панели инструментов.e n d . — d ea r Save.de 17 Aunomeiic Indent A lig n m e n t | L e ft T obW id in (choredlEri) [2 ^ . Появляющееся при этом диалоговое окно представлено на рис..converted to PDF by HupBaH9I Ш O p lio n !.‘ E d it. 4. При работе с редактором мы можем использовать команды. № w. В Visual FoxPro макрос можно записать с помощью соответствующей команды в меню Tools. F o rm s P io ie c t s С а л А го 1 в Ы е г п 0 |> о п р 1 V ie w G e n E ra J E d il D o rn B e rn a le D t1 o F ile .■. которая выполняется при его запуске.2 . 4 . В своей работе вы можете использовать несколько наборов макросов.3.L o c a t io n s E d H О р И п п г Гп г 'С и т Г п г п Е Т c o m пне ni' 17 Q i o g .. Еще удобнее использовать клавиатурные комбинации.. 4. C c■ 17 SeueEreiernn^es Г Seias DetavliSoi Memo^ 17 £hor* bneyCoiumn F'ofihon Seifl-oDefault 1■ ■ OK Cinc.. сохраняя их в соответствующих файлах. a Macros -Individual Маас ij 12 В M e № f? ГС D . Макросом называется предварительно записанная последовательность команд.. 4 .D r o p E r J u in g Г |7 WordWipp Г iwiiplle Selma Saving Г Save with £jid-o1-Fil9 Marker Г ■ i 4 w Jjne. OK Record. Resjore.3. Set fiefault Clear &JI Рис. которые располагаются в меню Edit и Format.fl Kelp f Рис. перечень которых приведен в табл... Для запуска макроса чаще всего используются клавиатурные комбинации.. При наборе программы в редакторе очень удобно использовать макросы. Для сохранения и загрузки необходимых макросов надо использовать .

с помощью которой вы хотите в дальнейшем вызывать данный макрос. В этом примере мы имитируем двухкратное нажатие клавиши Enter для перехода на следующую строку и тем самым создаем внутри команды пустую строку для записи тела . разбираясь в его перипетиях. Присвоим этому макросу клавиатурную комбинацию Ctrl+F.. так как тело цикла может занимать десятки строк и.4.4 . Теперь в поле Macro Contents наберем такой текст: FO R {EN TER }{EN TER }N EXT В фигурных скобках мы указали название клавиш.. 4. Не следует пытаться присвоить макросу клавиатурную комбинацию. Нажмите клавиатурную комбинацию. Пусть это будет команда задания цикла F O R . 4 .converted to PDF by HupBaH9I кнопки. расположенные внизу диалогового окна. Для записи макроса нажмите кнопку New. Тогда по умолчанию он получит имя ctrl_f. которая уже используется в Visual FoxPro.3 .N E X T . используемые при работе с редактором Комбинация П ун кт В ы по лняем о е дей стви е кл ав и ш меню Ctrl+A Select All Выделить весь текст в окне редактора Ctrl+C Скопировать выделенный текст Copy Ctrl+F Find Найти Ctrl+L Replace Заменить Ctrl+R Redo Вернуть отмененное действие Ctrl+V Paste Вставить фрагмент текста из буфера в место нахождения курсора Ctrl+W Закрыть редактор и сохранить все сделанные изменения Ctrl+X Cut Вырезать выделенный текст Ctrl+Z Undo Отменить сделанное действие Переместить курсор в начало Ctrl+Home текста Home Переместить курсор в начало строки Ctrl+End Переместить курсор в конец текста End Переместить курсор в конец строки В качестве примера мы с вами создадим макрос для автоматического набора какой-нибудь сложной команды. Т аб л и ц а 4 . Комбинации клавиш. Macro Edit Defined Key: |CTRL+F Macro Name: |ctrl_f OK ~ Cancel Macro Contents: FO R{E NTE R]-[E NTE R}E NDFO R Ctrl+Tab to exit Рис. Такие структурные команды чаще всего вызывают ошибки. нажатие которых нам надо имитировать в данный момент. Появится диалоговое окно для создания и редактирования макросов. программист забывает о необходимости закрытия цикла. представленное на рис.

следующая строка кода запоминает текущую системную дату в переменной dToday: dToday = DATE() Включить вызов функции в команду. Например. Например. Встретится новая команда DO для запуска другой программы. Каждое присвоение значения сопровождается появлением на экране сообщения с указанием присвоенной величины. 2. которая начинается с ключевого слова FUNCTION FunctionName и в отличие от процедуры. При использовании в функции команда автоматически возвращает . если указана опция TO MASTER. написанных в соответствии с синтаксическими правилами языка. может вернуть необходимые значения в вызывающую программу. пока не будет выполнено одно из следующих условий: • • • • • • Еще раз встретится слово PRO CED U RE. Будет выдана команда CAN CEL . Создайте новый программный файл и наберите в редакторе приведенный ниже текст. Будет выдана команда Q U IT . мы всегда можем нажать клавиши Ctrl+F и в программе у нас автоматически появятся следующие три строчки: FOR NEXT Программа в FoxPro . Имеются четыре способа вызвать функцию: 1. следующая команда устанавливает по умолчанию каталог. а эта же программа с опцией TO ProgramName передает управление в указанную программу. Подпрограмма начинается с ключевого слова PROCEDURE ProcedureName и выполняется.. изучив длинную таблицу в справке к команде ON KEY LABEL после вызова контексной помощи. Присвоить возвращаемое значение переменной. RETRY действует подобно команде R ETU RN .это текстовый файл. и в ней выполняется следующая команда после вызывающей.converted to PDF by HupBaH9I цикла. Как правильно записать в макросе названия других клавиш и их сочетаний можно узнать. выводимые этой программой на экран. в которые помещаются часто повторяющиеся фрагменты кода. 4. элементы которого принимают значения от 1 до 10. то управление возвращается на самый верхний уровень вызывающей программы. содержащий набор команд. * Пример простейшей программы DIMENSION aSampleArray(10) . но при возвращении управления в вызывающую программу повторяется выполнение последней команды. работая в редакторе. если не указано другое выражение на месте Expression. имя которого возвращает функция G E T D IR (): S ET DEFAULT TO GETDIR() Напечатать возвращаемое значение в активное окно: ? TIM E() Вызвать функцию без запоминания где-либо возвращаемого значения: SYS(2002) Для прерывания выполнения программы служит оператор RETURN [Expression | TO MASTER | TO ProgramName] который возвращает управление в вызывающую программу. В этой программе объявляется массив. 3. Программа может иметь подпрограммы (процедуры). размещаемые после основного текста программы или в отдельном файле.выход из СУБД. В FoxPro аналогично подпрограмме трактуется понятие пользовательской функции. Будет обнаружена команда RETU RN .T . Теперь.возвращение в предыдущую программу. Посмотрите на сообщения. Будет достигнут конец файла.прерывание работы программы.

то без сомнения вы правы. . . Потом в этом же меню выполним команду Procedure.converted to PDF by HupBaH9I FOR nItem = 1 TO 10 aSam pleArray(nItem ) = nItem = Append_proc() NEXT FUNCTION Append_proc ? "В массив добавлено новое значение " ?? nItem Если эта программа показалась вам слишком примитивной. В появившемся диалоговом окне. Это средство разработки настолько сфокусировано на визуальных возможностях разработки программ. Мня ф а й л а контекстном помощи д л я данного проекта Имя запускаем ого модуля E n v iro n m e n t Имя проекта I n j e c t | E d ito r | A d v a n c e d | Pnojei :t Name: S tartup Form : |Project1 Help File: [_ _ HelpComtextlD: -SlartUoda----------------------Standalone Г OLE Server Gomjgaiible OLE Server: J A p p lic a tio n D e s c rip tio n : OK Краткое описание приложения C a n ce l H e lp Имя исполняемого файла для контроля совместимости Выбор способа запуска приложения в виде независимого исполняемого файла или сервера OLE Рис. Значение Form1 обеспечивает запуск в качестве главной программы визуальной формы с этим именем по умолчанию. вы сможете сочинять куда более полезные вещи.5 ). Однако попробуем это сделать. выберем Sub Main. Значение Sub Main позволяет в качестве запускаемой программы использовать процедуру. 4 .5 .Form1. Создадим в проекте программный модуль путем выполнения команды Module в меню Insert. Начнем с задания команды Options меню Tools. что написать вручную несколько строк кода. запустить их на выполнение и тут же увидеть результат не так просто для начинающего программиста. В раскрывающемся списке Startup Form вместо значения. 4 . В появившемся диалоговом окне настройки конфигурации Visual Basic выберем вкладку Project (рис. По мере чтения книги и расширения лексического запаса языка (набора команд и функций). установленного по умолчанию. Теперь посмотрим на Visual Basic. как в Visual FoxPro.

Здесь следует заметить.converted to PDF by HupBaH9I показанном на рис. зато редактор обеспечивает выделение цветом ключевых слов.Main. что редактор в Visual Basic по своим функциальным возможностям и принципам работы с текстом программы похож на редактор Visual FoxPro. Цвет в редакторе существенно помогает избежать случайных ошибок. 4 . а для диапазона действия . как это видно из рис. При этом вы можете сами устанавливать цвет для различных ситуаций. д. В Visual Basic нет макросов. строк с ошибками и т. 4 . для типа процедуры выберем Sub. готовый для написания программного кода. Insert Procedure OK Name: |Main| ” -T y p e ------------------------------------- (* Sub С Function Cancel С Properly -Scope- (* Public С Private Г" All Local variables as Statics Рис. 4 . После нажатия кнопки OK в окне программного модуля появится шаблон.6 . открытое на вкладке Editor.7 .Public. напишем имя создаваемой процедуры . на котором показано диалоговое окно Options.6 . .

В окне программного модуля в раскрывающемся списке Proc выберите пункт (declarations). как это показано на рис. которую мы написали в Visual FoxPro.7 . Теперь мы можем попробовать создать простейшую программу по аналогии с той.converted to PDF by HupBaH9I Вы бор э л е м е н то в д л я н азн ач ен и я цвета Выбор шрифта и его размера Автоматический отступ строк Установка интервала табуляции Environment | Project Editor |A di/aiced| Fnn1: Si I F ^Ariol Cyr !l t| i-Gcide СЫогз- rirh■ p” P Auto Indent Selectinn TaJt SynrtsK Error TaMt В reokpont Text Newt Statement Teri Comment Terf KsywordTeod IdentifiErTeMt Foreground: | Autom atic Toh Г" Full Module V Ie u u Р PtDcedurE ЬернгеЮг pSam plE---------------------------- Background: J | A ula m nJtic ” 3 OK Задание цвета символов AaBbCcXxYyZz Cancel Help П рим ер текста программы с установленны м ш риф том и выбранныы цветом Задание цвета фона Использовать разделитель между отдельными процедурами или нет Выбор вида представления программного кода в окне редактора: в ввде отдельны * процедур ' или прокручивающегося списка Рис.8. 4 . 4. .

откройте окно отладки командой Debug Window в меню View . Можно воспользоваться и соответствующей кнопкой на панели инструментов или просто нажать клавишу F5. 4 . код Visual Basic может легко читаться программистом. Для того чтобы увидеть результат. мы сознательно выбрали простейший вариант.converted to PDF by HupBaH9I 1 . Чтобы не усложнять нашу задачу. многие воспринимают ее как типичное средство создания личных информационных систем. что коды программ в Visual FoxPro и в Visual Basic очень похожи. В отличие от Visual FoxPro в Visual Basic нельзя направить вывод результатов выполнения программы в главное окно. и наоборот. Его просто нет. Обратите внимание. и считают.Print nItem End Function Запустим нашу программу на выполнение командой Start в меню Run. которые с увеличением сложности программы разрастаются. Поэтому пользователи часто останавливаются на результатах. знающим только Visual FoxPro. Что касается СУБД Access. обычно в виде формы.I* M Object [(General) Dim a S d m p le A r r a y ( 1 0 ) . На самом деле все не совсем так. _»J Рюс n Ite m P u b l i c Sub M a in ( ) Г о г n It e m = 1 To 1 & a S a m p le A r r a y ( n I t e m ) A p p e n d _ p ro c N ext End Sub (tfeclflffHions) As I n t e g e r = n lt e it P r i v a t e F u n c t io n A p p e n d _ p r o c () D e b u g . это нечто из ряда вон выходящее.8 . как мы уже говорили.WJ* u Рис. то. что самостоятельное создание таблиц. которая будет отображать процесс заполнения массива: Private Function Append_proc() Debug.в Visual Basic в отличие от Visual FoxPro мы должны явно объявить все используемые переменные и указать их тип. не говоря уже о создании форм и отчетов. Посмотрите на команды вызова функции и объявления переменных . и стоит относиться к Мастерам как к .P r in t n Ite m End F u n c t io n '. Сначала надо создать какое-то окно. Пример простейшей программы в Visual Basic Наберите следующую строчку для объявления используемого массива и переменной как целых чисел: Dim aSam pleArray(10). предусматривающее использование только имеющихся в Access диалоговых средств. достигнутых с помощью визуальных средств разработки. nItem As Integer Переключитесь в раскрывающемся списке Proc на пункт Main и наберите следующий текст: Public Sub Main() For nItem = 1 To 10 aSam pleArray(nItem ) = nItem Append_proc Next End Sub Теперь создадим новую процедуру с помощью команды Procedure меню Insert и в ней запишем код для функции. а затем уже в него направлять вывод данных. используя для вывода окно отладки (Debug Window). Для этого перед командой Print необходимо указать через точку Debug. В то же время существуют и определенные различия.

формы или отчеты. так как эта команда вряд ли пригодится вам для чегото более виртуозного. с которым вы работаете. Ваша процедура должна выглядеть следующим образом: Sub ЯсоздаюБазуДанныхВручную() Dim MyDb As DATABASE Set MyDb = _ DBEngine. в которой. не ленитесь писать комментарий к выполняемым действиям. Программистов при переходе к Access из процедурного языка или среды с командной строкой обычно удручает отсутствие непосредственной возможности написать команду или процедуру. и вместо Руководства пользователя вытащить оттуда Руководство программиста. Если вы написали даже очень простую программу. 4. которые строят каркас здания. которые сразу продвинут вас в деле написания программ далеко вперед. Строки комментария нельзя вставлять внутрь команды. что меню динамически меняется. что каждая процедура должна заканчиваться командой End Sub.точка с запятой._ dbLangCyrillic) End Sub Чтобы запустить эту процедуру на исполнение.на той же строке. вообразим себя обладателями опыта составителей музыкальных хит-парадов и составим "горячую десятку" . и после команды на одной строке с ней. Пока мы учимся программировать. При первом запуске Access этой возможности действительно нет. например. Если вы являетесь программистом. Возьмем на вооружение успехи лингвистов в деле составления частотных словарей. В Visual Basic признаком комментария является знак апострофа: [Comments] Он может применяться и в начале строки. у вас она будет называться по-другому. Для написания строк комментария в Visual FoxPro надо в начале строки поставить "звездочку" * [Comments] Знак звездочки часто используется также для разделения отдельных смысловых фрагментов программы.точки с запятой. о котором мы уже говорили. то пришла пора заглянуть в красивую коробку. уверяем. "Горячая десятка" Если вы следовали руководящим указаниям авторов. Visual Basic или Visual FoxPro. начинающихся на END. Ее очень удобно набирать в окне Command. два знака вопроса . Надо привыкнуть. загружается новое меню. а отделкой лучше заниматься самостоятельно. Перейдите на страницу Модули контейнера базы данных и создайте новый модуль. то вы. нам очень поможет самая простая команда вывода данных в Visual FoxPro ? | ?? Expression Мы даем здесь не полный ее синтаксис.расскажем о тех командах и функциях. Вы не можете написать ни строчки кода. команд и функций. что база данных у вас появится. пока не создадите базу данных или не откроете уже созданную. Признаком переноса командной строки в Visual Basic является знак подчеркивания. Вы можете создать какую-либо процедуру после открытия контейнера БД. но набирать эту строчку не обязательно . если. мы надеемся. Для того чтобы в программе можно было разобраться хотя бы на следующий день после написания. возможно. В этом параграфе мы попробуем взять реванш у разработчиков Microsoft за их неуемную фантазию. Меню Access слегка видоизменится.converted to PDF by HupBaH9I чернорабочим. выведите на экран окно отладки и наберите в нем название процедуры. то есть при смене объекта. Для создания программ в Access используется язык программирования Visual Basic. что являетесь программистом.Workspaces(0).3. то вам не трудно написать простейшую программу.после нажатия клавиши Enter она появится автоматически. Если после всего этого у вас упало настроение и стало рябить в глазах от длинных списков многочисленных объектов. а в Visual FoxPro . можете сказать. Теперь можно набрать следующую строчку Sub Я с о з д а ю б а зу д а н н ы хв р у ч н у ю () Не забудьте. вы принесли от продавца Access. После этого можете смело нажимать клавишу ввода. 10. создать базу данных и при желании добавить тем же путем таблицы.CreateDatabase("МояБазаДанных". В Visual Basic этой команде в наибольшей степени соответствует конструкция . При написании комментария на одной строке с командой текст команды и комментария разделяется двумя амперсендами: && [Comments] Эти знаки можно опустить только после команд. несомненно. она написана на нескольких строчках с использованием символа переноса . Один знак вопроса всегда выводит значение выражения Expression с новой строки. не надо впадать в отчаяние. чем вывод нужного значения в процессе разработки и отладки прикладной программы.

для передачи по значению необходимо установить S E T U DFPARM S TO V A LU E. И здесь мы должны включить в почетную десятку хотя бы основные функции для работы со строками.исполняемая версия. В этой области мы постоянно тренируем себя при посещении магазинов. тренировки становятся все более напряженными. то Visual FoxPro будет пытаться запустить эту версию программы в следующей последовательности расширений для файла с одним и тем же именем: • • • • EXE . nCharactersReturned]) Возвращает фрагмент строки символов из строкового выражения cExpression. VAL( cExpression ) Преобразует в число строку символов. nExpression ) Возвращает из строкового выражения cExpression фрагмент. По умолчанию параметры передаются по ссылке. в котором размещается вызываемая программа. В Visual Basic существуют аналогичные функции: . включающий первые nExpression символов.Print Expression которая выводит значение Expression в окно отладки Debug Window. включающий последние nExpression символов. В Visual Basic существуют аналогичные функции: Str(nExpression) Val( cExpression ) 7. представляющую собой набор цифр.откомпилированная версия. nLength [. Необязательные параметры nLength и nDecimalPlaces позволяют задать длину и число десятичных разрядов соответственно. В Visual Basic сходные задачи выполняет команда Call Name([ParameterList]) Как ее использовать покажем на примере вызова на выполнение подпрограммы: Call PrintToDebugWindow("Печать в окне отладки") Sub PrintToDebugWindow(cString) Debug. В Visual FoxPro по частоте употребления можно выделить следующие функции: SU BSTR( cExpression. RIGHT( cExpression .прикладная программа. LEFT(cExpression. из которых наиболее часто используемыми можно назвать следующие: STR(nExpression [. или в окне Command наберите команду DO ProgramName1 | ProcedureName [WITH ParameterList] [IN ProgramName2] Если в ProgramName1 расширение не указывается.программа. Трудно представить себе программу обработки данных.Print AnyString End Sub 8 . APP . FXP . Сложнее с символьными данными. nStartPosition [. С числами все просто. 9 . В языке программирования Visual FoxPro для этого существует большое количество функций. Ранее мы научились определять в программе нужные нам переменные с требуемым типом данных. Опция WITH используется для передачи параметров (заранее определенных данных) в программу (число параметров не должно превышать 27). nExpression) Возвращает из строкового выражения cExpression фрагмент. Для запуска программы или для передачи управления другой программе в Visual FoxPro дайте команду Do из меню Program и выберите файл с нужным именем. Суммы растут. ALLTRIM(cExpression) Исключает все начальные и конечные пробелы из строкового выражения. начинающийся с позиции nStartPosition и длиной nCharactersReturned. При обработке данных программисту в силу различных причин часто приходится преобразовывать данные из одного типа в другой. В ProgramName2 можно указать файл.converted to PDF by HupBaH9I Debug. в которой программисту не пришлось бы с этими данными хоть что-то делать. nDecimalPlaces]]) Преобразует числовое выражение nExpression в строку символов. PRG .

до исчерпания записей в таблице. если необходимо м н о г о в а т о выполнять какой-либо блок команд.T. nMax>>100 .. невзирая на значение Expression. При работе с данными нам постоянно приходится думать об их "свежести". то выполняются команды внутри структуры. nExpression ) Trim ( cExpression ) 6.прекратить выполнение цикла.T . Приведем простой пример организации цикла для реакции на действия пользователя. В том случае. и если оно равно .F .AND. nMax больше 100. хотя тогда лучше уж обратиться к функции S EC O N D S (). nCharactersReturned]) Left(cExpression. В Visual FoxPro для этого можно использовать следующие функции: Для определения текущей даты DATE() Для определения текущего времени TIME([nExpression ]) Для определения текущей даты и времени в формате дата и время DATETIME() Если в функции TIM E() в качестве выражения задать любую числовую величину. В Visual Basic существуют аналогичные функции: Date Time Now 5. то управление передается строке. она проверяет значение выражения Expression.. nStartPosition [. CLEAR WAIT "Наберите цифру 1 или 2" TO cNumber DO CASE CASE cNumber = "1" ? "Вы набрали цифру 1" CASE cNumber = "2" ? "Вы набрали цифру 2" OTHERWISE ? "Ошибка: введенное значение не 1 или 2!" ENDCASE WAIT "Хотите попробовать еще раз (Y/N)" TO cYesNo IF UPPER(cYesNo) <<>> "Y" EXIT ENDIF ENDDO .пока переменная nMin меньше 10 и переменная • DO WHILE . Наиболее часто в качестве условия используют выражения: • • DO WHILE . Опция LOOP позволяет после ее указания вернуть управление к строке DO WHILE. DO WHILE nMin<<10 .E N D IF ).T. следующей за ENDDO.. которая в Visual FoxPro выглядит вот так DO WHILE Expression Commands [LOOP] [EXIT] ENDDO Каждый раз. DO WHILE . что в случае использования опций LOOP и (или) EXIT перед ними должны быть записаны свои условия их выполнения (чаще всего команда IF .converted to PDF by HupBaH9I Mid(cExpression. значение текущего времени будет возвращено с сотыми долями секунд. nExpression) Ri ght(cExpression . Естественно. EOF() . пока выполняется заданное условие. а опция EXIT .бесконечно выполняемый цикл (выход только по EXIT).. может быть использована команда. поэтому мы никак не можем обойти вниманием функции. . если .NOT. связанные с определением текущей даты и времени. когда программа достигает строки с командой DO W H IL E .

. Если мы запишем в программу некую последовательность команд. если эта необязательная опция ELSE в команде не используется. В противном случае выполняется один из блоков. в котором . видно из следующего примера: lCheck = True nCounter = 0 Do ' Первый (внешний) цикл Do While nCounter << 20 ' Второй (внутренний) цикл nCounter = nCounter + 1 If nCounter = 10 Then lCheck = False Exit Do ' Выход из второго цикла End If Loop Loop Until lCheck = False ' Выход из первого цикла 4. В Visual Basic для записи этой команды надо использовать один из следующих эквивалентных вариантов синтаксиса: Do [{W hile | Until} Expression] [Commands] [Exit Do] [Commands] Loop или Do [Commands] [Exit Do] [Commands] Loop [{W hile | Until} Expression] Как правильно использовать эту команду.T . следующие за ключевым словом THEN. Если выражение равно .F . может стоять снова команда I F (вложенное условие). а в том случае. в свою очередь. Наиболее простое ветвление программы в зависимости от заданного условия можно обеспечить командой. следующие за ENDIF. [Else [ Commands]] End If Если выражение Expression имеет значение True. На месте команд.converted to PDF by HupBaH9I В этом примере для обеспечения ввода пользователем данных используется простейший вариант команды W A IT . Вряд ли таким образом мы сможем написать мощную программу. то выполняются команды. выполняются команды. то они будут выполняться построчно от начала до конца программы. которая приостанавливает работу программы и после нажатия пользователем какой-либо клавиши присваивает значение этой клавиши переменной. выполняются команды.. Нам потребуются средства для управления последовательностью выполнения команд. В Visual Basic эту команду можно записать на одной строке: If Expression Then Commands [Else Commands] или в более сложном виде: If Expression Then [ Commands] [Else If Expression_n Then [ Commands]] . то выполняются команды. указанной в опции TO. Если . синтаксис которой в Visual FoxPro записывается в следующем виде: IF Expression Commands [ELSE Commands] ENDIF В качестве условия может быть использовано любое выражение.. которая должна обрабатывать действия пользователя в зависимости от тех или иных условий. заключенные между IF и ELSE. следующие за ELSE.. в том числе и логическое.

выполняется опция OTHERW ISE. например: cProc_var = IIF(nVid>> 5. там где это возможно. причем для увеличения числа вариантов в качестве Expression2 используется еще одна .). Если такого соответствия не обнаруживается. [Case Else [ Commands]] End Select Выполняются те блоки CASE. Более сложное ветвление. Они просматриваются последовательно сверху вниз..T . следующей за ENDCASE. Приведенный выше пример можно записать примерно так: . которая по смыслу похожа на рассматриваемую команду и имеет совершенно одинаковый синтаксис как в Visual FoxPro. Например: nChoice = 3 DO CASE CASE nChoice = ? "Выбрано CASE nChoice = 2 ? "Выбрано OTHERWISE ? "Выбрано RETURN ENDCASE 1 значение 1" значение 2" неправильное значение!" В Visual Basic синтаксис этой структурной команды организован несколько по-иному: Select Case Expression [Case Expression_n [Commands]] .converted to PDF by HupBaH9I Expression_n будет соответствовать выражению Expression.. значительно увеличивает быстродействие программы и делает ее значительно меньше. заданных в операторах CASE.E N D IF .F.cProc_3)) DO (cProc_var) Здесь. в зависимости от которых надо выполнить ту или иную группу команд.T . Expression2) Возвращает значение Expression1.cProc_1. так и в Visual Basic IIF(lExpression. Expression1."автопоезд") + cModel Эта функция может использоваться и для выбора выполняемых подпрограмм. чем при употреблении команды IF . если Expression = . пpи отсутствии этой опции команда игнорируется. будет выполняться та или другая процедура. когда есть несколько условий. будет выполнен блок команд.. Использование этой функции для программного ветвления. следующих за ключевым словом ELSE. как только первое из них оказывается верным (логическое выражение равно .. которая в Visual FoxPro выглядит так: DO CASE CASE lExpression1 Commands [CASE lExpression2 Commands] [OTHERWISE Commands] ENDCASE Команда выполняет проверку условий. после чего управление передается строке программы. то выполняется блок CASE ELSE. в которых выражение Expression_n соответствует выражению Expression. Expression1 и Expression2 должны быть одного типа. Если и этого не произойдет. 3. выполняется блок команд для этого CASE."автомобиль".. Если ни одно из условий не истинно.IIF(nVid<< 2. и. организуется стpуктуpной командой. Для выбора по условию очень эффективно можно использовать функцию.вложенная функция I I F ( ) .. и значение Expression2. в зависимости от значения переменной nVid. например: TITLE = IIF(nSign=0.cProc_2. если Expression = .

Print "Выбрано значение 1" Case 2 Debug.converted to PDF by HupBaH9I Dim nChoice As Integer Select Case nChoice Case 1 Debug.N E X T могут быть вложены.Print "Выбрано значение 2" Case Else Debug. помимо структуры DO W H IL E . В Visual Basic синтаксис этой команды выглядит очень похоже: For MemVarName = nInitialValue To nFinalValue [Step nIncrement] [Commands] [Exit For] [Commands] Next [MemVarName] По сравнению с Visual FoxPro здесь нет возможности "досрочно" начать новый цикл с помощью опции LOOP. до значения nFinalValue. равного nInitialValue. Циклы F O R . В переменную MyString десять раз записываются значения от 0 до 9.Print "Выбрано неправильное значение" End End Select 2. В синтаксисе Visual FoxPro пример организации вложенного цикла приведен ниже. начиная со значения....N E X T обеспечивает выполнение блока команд для каждого значения переменной. пошаговое увеличение или уменьшение происходит на величину.. Поэтому следующая команда куда популярнее предыдущей: FOR MemVarName = nInitialValue TO nFinalValue [STEP nIncrement] Commands [LOOP] [EXIT] NEXT Команда F O R . можно организовать и стандартным для большинства языков программирования способом. а EXIT . но в этом случае в каждом цикле должен использоваться уникальный параметр MemVarName. Опция LOOP приводит к передаче управления на начало следующего цикла. которая по умолчанию равна 1. Цикл.к прекращению действия команды. MyString = " " FOR Words = 10 TO 1 Step -1 FOR Chars = 0 To 9 MyString = MyString + STR(Chars) NEXT MyString = MyString + " " NEXT ? MyString В синтаксисе Visual Basic этот же пример будет иметь лишь незначительные отличия: Public Sub Main() For Words = 10 To 1 Step -1 For Chars = 0 To 9 MyString = MyString & Chars Next MyString = MyString & " " Next . заданную nIncrement.

который появляется в этом окне.по одному из каждого раздела приведенной таблицы. авторы. В следующей таблице приведены возможные значения для этих элементов. Параметр nDialogBoxType определяет кнопки и пиктограммы. No и Cancel Кнопки Yes и No Кнопки Retry и Cancel Пиктограмма Знак "Стоп" Знак "Вопрос" Знак "Восклицание" Пиктограмма "Информация (i)" Кнопка по умолчанию Первая кнопка Вторая кнопка Третья кнопка Пропуск значения nDialogBoxType идентичен определению для него значения 0. Здесь не обойтись без средств. Вместо массива может использоваться коллекция объектов. которые появляются в диалоговом окне. д. на первое место поставили следующую функцию. Учитывая важность этой проблемы для современного пользовательского приложения. какая кнопка была выбрана в . мы должны стремиться к высоким идеалам и стараться создать дружественный интерфейс. а также первоначально выбранную после вывода диалогового окна на экран кнопку. о чем мы будем более подробно говорить позднее. 1. Высота и ширина диалогового окна увеличиваются по мере необходимости. заранее сговорившись. Параметр nDialogBoxType должен представлять собой сумму трех значений . используйте в cMessageText символ возврата каретки (C H R (13)). Если вы опускаете cTitleBarText. Retry и Ignore Кнопки Yes. Чтобы переместить часть сообщения на следующую строку в диалоговом окне. В Visual FoxPro она имеет такой синтаксис: MESSAGEBOX(cMessageText [. чтобы вместить содержимое заданного в cMessageText текста. Параметр cMessageText определяет текст. Возвращаемое значение функции M ES S A G E B O X () указывает. в названии окна появится заглавие "Microsoft Visual FoxPro". Даже если мы научились составлять пока очень простенькие программы. cTitleBarText]]) Выводит на экран определяемое пользователем диалоговое окно. имя которого указывается в параметре ArrayName. nDialogBoxType [. может и не очень приятную.converted to PDF by HupBaH9I Debug. Параметр cTitleBarText определяет текст. Значени е n D ialo g B o xTyp e 0 1 2 3 4 5 16 32 48 64 0 256 512 Э лем ен ты Кнопки диалогового окна Только кнопка OK Кнопки OK и Cancel Кнопки Abort. спрашивать у них совета о дальнейших действиях и т. позволяющих в хорошей манере сообщать пользователям разную информацию.Print MyString End Sub В Visual Basic есть очень похожая на рассматриваемую команду команда организации цикла: For Each MemVarName In ArrayName [Commands] [Exit For] [Commands] Next [MemVarName] Эта команда позволяет выполнить какие-либо действия для группы элементов массива. который появляется в заголовке диалогового окна.

денежная единица yCurrentValue . Еще несколько навязчивых советов Когда вы напишете пусть даже небольшую программу. В примерах.ссылка на объект oEmployee . А если программа достаточно сложная? Что бы не запутаться в громадном количестве имен. nContext]) Условия использования этой функции и задания ее параметров идентичны описанным выше для Visual FoxPro. Следующая таблица содержит список возвращаемых функцией M ES S A G E B O X () значений. В Visual Basic для некоторых параметров можно устанавливать дополнительные значения.4. сколько имен вы использовали. что устанавливает модальность появляющегося сообщения на системном уровне. nDialogBoxType [. такие рекомендации включены и в руководство по Visual FoxPro и по Visual Basic.дата dBirthDay .0. мы тоже не будем делать этого. где это не имеет принципиального значения.converted to PDF by HupBaH9I диалоговом окне.массив aMonths . Их основная идея заключается в систематизации всех имен переменных или массивов по диапазону действия и типу хранимых в них данных. начиная с версии 3. что в имени переменной диапазон ее действия программисты указывают редко. что. Надо отметить. Параметры cHelpFileName и nContext позволяют задать имя файла контекстной помощи и номер темы. но и ни в каком другом из запущенных приложений. Для указания типа данных рекомендуется использовать следующие символы: a c y d t b l n o . Надо отметить. 4. посмотрите. Так. с помощью которых здесь можно навести хоть какой-то порядок. используемых в программе. пока не отреагирует на данное сообщение. программисты давно выработали негласные соглашения.символьные данные cLastName . В диалоговых окнах с кнопкой Cancel при нажатии клавиши Esc будет возвращаться то же самое значение (2 ). параметр nDialogBoxType дополнительно может принимать значение 4096. Таким образом.логические l Flag .данные типа "дата и время" tLastModified .двойной точности bValue . которая будет выведена на экран при нажатии пользователем клавиши F1. cTitleBarText] [.числовые nCounter . структура имени должна иметь следующий вид: ДиапазонТип_данныхИмя Для указания дипазона рекомендуется использовать следующие символы: l p r g t - внутренняя (local) lnCounter локальная (private) pnStatus региональная (region) rnCounter глобальная (public) gnOldRecno параметр (parameter) tnRecNo В последнем столбце приведен пример наименования. что и при выборе Cancel. cHelpFileName. и пользователь не может продолжить работать не только в текущем. В озвращ аем ое зн ачен и е 1 2 3 4 5 6 7 К нопка OK Cancel Abort Retry Ignore Yes No В Visual Basic рассматриваемая функция имеет чуть-чуть другое написание и несколько более богатый синтаксис: MsgBox(cMessageText [.

А теперь представьте интерфейс современной прикладной программы. Полезный. Среди рассматриваемых в данной книге средств разработки наиболее развитые средства ООП имеет СУБД Visual FoxPro. а на объекты. как запрограммировать то или иное функциональное решение. что остальные средства разработки будут двигаться в этом направлении. Это избавит вас от долгих раздумий: "И что же это за переменная такая и зачем это она тут?" Глава 5 Объектно-ориентированное программирование 5. задач? И все это то открывается. имя переменной для большей наглядности лучше начинать с большой буквы. может быть объектом. Объектно-ориентированное программирование делает акцент не на программные структуры.4. что представляет для вас интерес и. подобных С+ + . то перемещается. Рискнем предположить. д. поле для ввода данных. Почти все. Объектная модель и ее свойства 5. речь о котором шла в предыдущей главе. что такой интерфейс написать средствами стандартного структурного языка программирования просто невозможно. Объектная модель и ее свойства При структурном программировании. Объектом может быть окно. используемые в ООП.1. Объекты и их свойства Объекты для работы с данными Объекты для управления работой приложения Объекты для оформления интерфейса пользователя Объекты-контейнеры Невизуальные объекты Объекты OLE 5.3. после обозначения диапазона действия и типа данных. 5. Возможности объектной модели Visual FoxPro. что должно случиться с ним при определенных действиях пользователя (например. записываемые программистом в соответствии с логикой решения поставленной перед ним задачи. Регулярно программисты сталкиваются с двумя сильно действующими на нервы событиями: они то часами мучаются в раздумьях. пишущих на языках.2. Управление событиями 5. Особенности использования объектов в Visual Basic.1. а также описать. возможно. пользователь вашей программы. последовательно выполняются операторы. при закрытии окна). Использование методов Программирование . что-нибудь типа Windows 95. как неотъемлемая часть современных систем RAD. долгое время оставаясь уделом профессионалов. не сразу стала достоянием широкого круга программистов. то закрывается.converted to PDF by HupBaH9I u . По разным причинам ООП. как может показаться на первый взгляд.не такое уж приятное занятие. многократно используемый . Не ленитесь давать имени максимальную смысловую нагрузку. диалогов. Способ борьбы с этими неприятностями называется "объектно-ориентированное программирование" (ООП). В этом параграфе вы узнаете: • • • • Основные сведения о принципах ООП. то их одолевает ужасная скука при многократной реализации давно отработанных решений. то изменяет цвет. даже не существует визуально. Представили это многообразие окон. Тогда любые действия мы можем привязать к этому объекту. Термины и определения. при изложении основ ООП мы будем ориентироваться именно на эту модель. сама программа и т. Нисколько не сомневаясь.неопределенного типа uReturnValue Как вы могли заметить из примеров.

но и не такими простыми. Объекты.converted to PDF by HupBaH9I объект можно сохранить в качестве типового и применять его в нескольких программах для обеспечения сходной функциональности. который описывает методы и свойства используемые для определенного типа объектов. Классы хранятся в файле библиотеки кл а с с о в . Из описания одного класса может быть создано сколько угодно объектов. Классом называется шаблон. который описан программистом. которые служат в качестве указателей на эти объекты. а затем описывает действия с ними и их реакцию на действия пользователя. функциональность которых не может опускаться ниже определенного уровня. В Visual FoxPro классы делятся на визуальные и не визуальные. что облегчает к ним доступ. основанные на не визуальных классах. но не поддерживается в используемом языке программирования. которые будут видны и. В Visual FoxPro такой тип данных поддерживается программно за счет использования команды D E F IN E C LA S S и визуально при использовании Конструктора классов (Class Designer). В процессе работы программы это описание используется для создания объектов. Более детальное знакомство с принципами ООП начнем с терминологии. как может показаться на первый взгляд. объекты. включая туда тот или иной набор объектов. Этот файл имеет расширение VCX и может содержать один или несколько классов. таких как. стандартный С. станут основой пользовательского интерфейса будущей программы. обеспечивающих выполнение тех или иных функций. соответственно. Описать класс программно можно с помощью команды D E F IN E C LA S S и визуально при использовании Конструктора классов. При таком подходе любую программу можно написать. например. которые окажутся невидимыми при работе программы. создаются и управляются программно. на понятии "абстрактный тип данных" основано описание классов. изменение их внешнего вида и т. к. Таким образом. На основании описания класса при работе программы создаются объекты. некоторые понятия здесь являются не только новыми. которые и обеспечивают выполнение заданных функций. в о О п программист создает нужные объекты. осуществляемое в программе на высоком уровне. В то же время возможно придание таким объектам дополнительных свойств и функций. которые не поддерживают ООП. Хорошим примером такого подхода является использование структур. Как правило. . О бъектом называется программно связанная коллекция методов (функций) и свойств. когда часть или даже вся информация о поведении объекта может быть скрыта. Не в и зу а л ь н ы е к л а с с ы могут быть видны только в момент проектирования на их основе объектов. Такой подход обеспечивает возможность использования в пользовательском приложении объектов с заранее определенными свойствами. А б стр актн ы м типом д а н н ы х называется такой тип данных. выполняющих реальные функции. д. д. А б стр акц и ей называется метод. чтобы получить возможность сосредоточиться на интерфейсе программы. В и зу а л ь н ы е к л а с с ы служат прообразами объектов. обмене сообщениями с пользователем и т. созданные во время работы программы. абстрактный тип данных может быть создан из существующих типов данных. В языках программирования. при использовании которого можно игнорировать не существенные в данный момент детали и функции программы для того. поддерживающих ООП. с помощью соответствующих команд и функций. Такие объекты будут называться экземплярами одного класса. т. В языках. доступны для управления посредством специальных переменных. Абстракция поддерживает идею "черного ящика". выполняющих одну функционально связанную задачу.

Классы. отображающая взаимосвязи между используемыми в приложении классами одного типа. которую программист может изменить. заголовок.converted to PDF by HupBaH9I Например. созданные на основе родительского класса графических кнопок. описывающих его внешний вид. называются подклассами. что метод не может носить имя. Эти процедуры могут быть защищены от дальнейших изменений или. называются родительскими классами или суперклассами. Как в любую функцию. 5. источник данных и т. находящиеся на более высоких ступенях. Однако. тип шрифта для его написания. Программно объект может быть создан с помощью функции C R E A T E O B JE C T (). будет подклассом. 5 . Разобраться в понятии "иерархия классов" вам поможет рис. происходящих в определенной последовательности. ни метод. и набором методов для управления его поведением на экране. События являются основным инструментом для описания требуемой реакции объекта на действия пользователя.это древообразная структура классов. Например. Все возможные события содержат по умолчанию заложенную в них реакцию. д. 5. С войство . На основании одного родительского класса может быть создано сколько угодно подклассов следующего уровня. вид линий и цвет в обрамляющей рамке. 5. Метод может быть защищен от дальнейшего изменения.обладает набором свойств. с помощью которой описывается внешний вид и работа объекта. в него можно передать параметры и получить возвращаемое значение. легко доступны для модификации пользователем.1 ниже базового класса. метод вызывается только при его явном указании. которая будет управлять работой объекта. Момент выполнение метода определяется исключительно программистом.1.это функция или процедура. 5. которое связано с объектом. Событие может быть инициировано пользователем.это действие. т. записав в процедуру события определенный программный код. загрузка экранной формы вызывает события. Базовый класс кнопки управления Б&Зовый класс кнопок управления разработчика К ла сс граф ических кнопок Кла^с кнопок для отмены Класс кнопок для выхода Класс ю юпок для печати Клйсп кнпппк для панели инструментов Рис. ни событие не могут иметь вложенных процедур.1 базовый класс разработчика будет родительским по отношению к классу кнопок для панели инструментов. Метод . находящиеся на более низких ступенях иерархии. На рис. вызвано программой или операционной системой. совпадающее по названию со свойством. Любой из классов.D R A W . наоборот. Некоторые действия в программе вызывают целую череду событий. Классы. . находящихся в иерархии на рис. С обы тие . Например. Например. объект . Стоит также учесть. И ерархия кл ассо в .это характеристика.1 такими экземплярами будут классы для выполнения определенных действий. Такие подклассы называются экземплярами данного класса.окно для вывода данных . на рис. на основании которых описаны ниже стоящие в иерархии классы.1 . например O B JEC T. последовательность которых не может быть изменена. к.

стоят на следующей ступени иерархии после них. Б азовы м классо м называется класс. 5.converted to PDF by HupBaH9I Иерархия классов может включать столько уровней. В Visual FoxPro базовые классы имеют весьма серьезную особенность. как это видно на рис. Рис. Столбец может содержать данные из поля в таблице . находящийся на вершине иерархии классов.1 .ньм класс. сколько пожелает разработчик. В связи с этим полезно ввести понятие "базовых классов разработчика". Всего в Visual FoxPro программист может использовать около 30 базовых классов. Б а зо в ы е кл а с с ы V is u a l Г о у Р го 3l IESMRHI Ыу|ф(ЗШ1£НЫЯ K l. используемых в приложении. Они встроены в саму СУБД.1 на примере классов для кнопок управления. Т аб л и ц а 5 .i h щ й н е р ы Cheek Boy Container Combo Boy Form Commanc Dutton Grid U Control Column Fdit Row —| Tbolftjjr -I Header —| Option Button Group -Г Imarje | —| Command Rutton Grr>up F o rm S ftt -Г Line List B^ir - О L b B o u n d C o n tro l - OLE Container Control Shape PageFrame I? P ag a Визуальный класс Spinner Teyt Boy Custom Timer H e вмауаль. 5.2 . используемых в приложении. 5. 5 . однако при разработке системы классов для приложения лучше не превышать пяти уровней иерархии. Базовые классы Visual FoxPro Имя к л а с с а О писание CheckBox Создает поле проверки. Их классификация приведена на рис. Column Создает столбец в объекте Grid. Б азо вы е к л а с с ы р азр або тчика являются дублерами базовых классов Visual FoxPro. но являются классами более высокого уровня для всех остальных классов. а назначение описано в табл.2. и. которое используется для переключения между двумя состояниями. следовательно.1. их описание не может быть изменено.

converted to PDF by HupBaH9I

или выражение, а также включать в себя
какие-либо другие элементы управления.
ComboBox
Создает список, из которого можно выбрать
один элемент. Сочетает возможности
элементов управления ListBox и TextBox, так
как, помимо выбора из списка, позволяет
вводить данные.
CommandButton Создает одиночную кнопку управления.
Кнопка обычно используется, чтобы
активизировать событие, подобное
закрытию формы, перемещению курсора в
другую запись, печати отчета и т. д.
CommandGroup Создает группу кнопок управления.
Container
Создает объект, который может содержать
другие объекты. Объекты Container могут
содержать другие объекты и разрешают
доступ к объектам, содержащимся внутри
них.
Control
Создает объект элемента управления,
который может содержать другие
защищенные объекты. Объекты Control
могут включать в себя другие объекты, но в
отличие от объектов Container не позволяют
осуществлять доступ к объектам,
находящимся внутри них
Custom
Создает определяемый пользователем
объект на основе пользовательского класса.
Определяемые пользователем классы - это
классы со свойствами, событиями и
методами, но без визуального
представления.
EditBox
Создает область редактирования.
Используйте элемент управления EditBox
для символьных полей большой длины или
полей примечаний.
Form
Создает форму для работы с данными и
управления работой программы. Форма - это
объект-контейнер, который включает в себя
все необходимые элементы управления и
составляет основу пользовательского
интерфейса.
FormSet
Создает объект-контейнер, который
содержит набор форм.
Grid
Создает объект Grid. Grid - это объектконтейнер, отображающий данные в строках
и столбцах и по внешнему виду похожий на
окно Browse, но имеющий расширенную
функциональность, так как вы имеете
полный контроль над каждым элементом в
Grid за счет отдельного набора свойств.
Header
Создает заголовок для столбца в Grid.
Объект Header позволяет отвечать на
события, то есть может изменять свое
значение в процессе работы программы.
Image
Создает элемент управления, который
показывает изображение в формате BMP.
Label
Создает метку, которая отображает текст.
Line
Создает элемент управления,
отображающий горизонтальную,
вертикальную или диагональную линию.
ListBox
Создает поле списка. Этот элемент
отображает список пунктов, из которых вы

converted to PDF by HupBaH9I

OLE Bound
Control

OLE Container
Control

OptionButton

OptionGroup

Page

PageFrame

Shape

Spinner
TextBox

Timer

можете выбрать один или несколько. Может
применяться при вводе данных, когда
пользователь должен ввести только заранее
определенные значения.
Создает связанный элемент управления OLE.
Связанный элемент управления OLE
позволяет вам добавлять включаемые
объекты OLE из других прикладных
программ типа Microsoft Word и Microsoft
Excel, поддерживающих стандарт OLE 2.0.
Создает элемент управления OLE. OLEобъекты содержат элементы управления
ActiveX (файлы с расширением OCX) и
включаемые OLE-объекты из других
прикладных программ типа Microsoft Word и
Microsoft Excel. В отличие от элементов
управления ActiveX, включаемые OLEобъекты не имеют собственного набора
событий. Кроме того, элементы управления
ActiveX не привязаны к полю типа General в
таблице FoxPro, как связанные элементы
управления OLE.
Создает одиночную кнопку выбора. Такая
кнопка может быть добавлена только к
группе кнопок выбора.
Создает группу кнопок выбора. Группа
кнопок выбора - это контейнер, который
содержит отдельные кнопки выбора.
Позволяет пользователю выбрать одно
действие из списка возможных вариантов,
представленных набором кнопок.
Создает страницу в страничном блоке.
Объект Page позволяет с легкостью
создавать многостраничные формы или
диалоги путем помещения в окно формы
набора страниц, переключаемых с помощью
вкладок.
Создает страничный блок, в котором
содержатся страницы формы. Страничный
блок определяет глобальные
характеристики страницы формы: размер и
положение на экране, вид рамки, активную
страницу и т. д.
Создает элемент управления формы,
который отображает геометрическую фигуру
(прямоугольник, круг или эллипс).
Создает счетчик для фиксированного
изменения числового значения.
Создает текстовое поле, в котором можно
редактировать содержимое переменной,
элемента массива или поля. Текстовое поле
- это один из самых широко используемых
элементов управления для ввода и
редактирования заранее не определенных
величин.
Создает невидимый во время работы
программы объект, который обеспечивает
контроль по времени за выполнением всей
программы или отдельных ее фрагментов.
Управление с помощью таймера является
полезным для фоновой обработки. Типичное
использование таймера - это получение
системного времени для определения

converted to PDF by HupBaH9I

ToolBar

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

Базовые классы делятся на контейнеры и элементы управления. Стоит пояснить несколько
подробнее отличие классов, на основе которых создаются будущие объекты - элементы
управления, от классов-контейнеров. О бъ екты -ко нтей н ер ы могут содержать внутри себя
другие объекты, в то же время допуская манипуляции с этими внутренними объектами. Их можно
назвать составными объектами, при этом отдельные составляющие части не теряют своего
"суверенитета". Объекты - элем ен ты уп р а в л е н и я , основанные на не контейнерных классах,
хотя тоже могут состоять из нескольких составных частей, допускают манипуляции с ними только
как с единым компонентом.
Некоторые базовые классы занимают особое положение в связи с тем, что сами являются
составной частью другого базового класса и поэтому не могут быть основой для создания
подкласса (на рис 5.2 выделены пунктирной линией).

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

Вновь создаваемый подкласс автоматически наследует все свойства и методы родительского
класса, но вы всегда можете изменить какие-то из этих свойств или методов для выполнения
специализации данного подкласса. Наследование поддерживается не только при создании
подкласса, но и в дальнейшем. Таким образом, все сделанные вами изменения в родительском
классе тут же отразятся на его подклассах. Как видно на рис. 5.1, класс кнопок для вывода
данных на печать наследует свой внешний вид от класса графических кнопок, но имеет
специализированное изображение и, очевидно, специфическую реакцию на нажатие. Если мы
решим изменить размер кнопки в классе графических кнопок, изменятся размеры всех
используемых в приложении кнопок, стоящих ниже в иерархии классов.
Оператор указания диапазона позволяет вызвать метод родительского класса с более низкого
уровня, в пределах описания подкласса. Это позволяет расширить функциональность объекта
без необходимости написания лишнего программного кода. При создании подкласса он
автоматически наследует все методы родительского класса. Мы можем изменить унаследованный
метод и в то же время выполнить не только этот измененный метод для данного подкласса, но и
метод родительского класса. Оператор имеет следующий синтаксис:

cClassName:: Method

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

Это похоже на понятие абстракция - скрытие внутренних данных, то есть использование
принципа создания объекта как "черного ящика". Такой объект будет работать без раскрытия
своей внутренней структуры, обеспечивающей его функциональность. Элементы управления,
основанные на не контейнерных классах, являются хорошим примером использования принципа
инкапсуляции. Использование инкапсуляции дает два очевидных преимущества программисту:

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

converted to PDF by HupBaH9I

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

Полим орф изм - это возможность осуществлять одинаковое обращение к различным объектам в
случае, если каждый объект может выполнять такое обращение.

Полиморфизм обеспечивает общий интерфейс для работы с создаваемыми объектами.
Например, вызов метода Draw для объектов Box1 и Box2 может вызвать совершенно различные
последствия, так как каждый из этих объектов может иметь собственный метод Draw. Для
программиста полиморфизм обеспечивает более простое и гибкое управление для группы
связанных объектов.

О бращ ение - это инструкция от одного объекта к другому для выполнения одного из методов
того объекта, к которому обращаются.

Различают три части обращения: имя объекта, получающего сообщение, имя метода и,
возможно, передаваемые параметры, если того требует выполняемый метод.
В обращении имя объекта отделяется специальным оператором - точкой (.). Например, если
надо сделать недоступным объект - список с именем MyList, необходимо выполнить команду:
MyList.Enabled = .F.
Это вызовет изменение свойства, контролирующего доступность данного объекта для работы с
ним пользователя. Список изменит свой внешний вид и для возвращение его в рабочее состояние
нужна команда:
MyList.Enabled = .T.
Обращение к объекту для выполнения каких-либо действий аналогично обращению для
изменения его свойств. После имени объекта мы должны указать имя метода:
MyList.Refresh()
В некоторых ситуациях мы не сможем прямо обратиться к интересующему нас объекту.
Например, если мы захотим обратиться к упомянутому выше списку из другой формы, то должны
будем послать наше обращение не списку, а форме, содержащей нужный список:
MyForm.MyList.Enabled = .T.
Такой порядок обращения к объекту может показаться весьма утомительным, особенно если
представить себе достаточно длинную цепочку вложенных объектов. Однако это позволяет не
подыскивать сотню уникальных имен для кнопки выхода в каждой из 100 используемых в
приложении форм. Все кнопки могут иметь одно и то же имя cmdClose, и для каждого обращения
найдется правильный адресат, т. к. в них будет использоваться имя нужной формы:
FormName.cmdClose
Значительно сократить программный код позволяют операторы относительной ссылки, в
которых, в отличие от абсолютной ссылки, не используются имена объектов:


T H IS - позволяет сослаться на текущий объект;
TH ISFO R M - позволяет сослаться на текущую форму;
T H IS F O R M S E T - позволяет сослаться на текущий набор форм.

В командах эти операторы могут указываться вместо соответствующих имен объектов, форм
или наборов форм при выполнении какого-либо метода или изменении значения свойств. В каких
случаях какие операторы относительной ссылки надо использовать, поможет разобраться табл.
5.2.
Т аб л и ц а 5 .2 . Обращение к объектам с помощью относительной адресации
И сточник обращ ения
Пример
обращ ения к
о б ъ екту
M yObject
Другой метод того же самого T H IS .E n a b le d = .T .
объекта
Форма, включающая объект T H IS .M y O b je c t.E n a b le d = .T .

converted to PDF by HupBaH9I

Другой объект той же самой
формы
Извне формы

TH IS FO R M .M yO b ject.En a b led
= .T .
M yFo rm .M yO b ject.Enab led =
.T .
Объект другой формы,
T H IS F O R M S ET .M yFo rm .
входящей в один набор форм M yO bject.En abled = .T .
Извне набора форм
M yFo rm Set.M yForm .
M yO bject.En abled = .T.

В Visual FoxPro и Visual Basic есть два свойства, которые позволяют выполнять действия
относительно активного объекта, то есть объекта, с которым в данный момент работает
пользователь (на который указывает курсор), без необходимости знания его имени. Свойство
A ctiv e F o rm формы или набора форм имеет следующий синтаксис:
FormSet.ActiveForm.Property [= Setting]
или
FormSet.ActiveForm. Method
Это свойство позволяет узнать заданное в Property свойство для активной формы или
выполнить указанный в Method метод. Если мы задаем параметр Setting, то указанное значение
сравнивается с установленным, и в случае равенства возвращается .T. Если Setting не
указывается, возвращается установленное значение свойства Property.
Если мы не используем набор форм, то на месте Fo rm S e t в Visual FoxPro мы должны сослаться
на экранный объект с помощью системной переменной _ S C R E E N . Эта системная переменная
выполняет в таком случае несколько нестандартные для системных переменных в Visual FoxPro
функции. Она играет роль ссылки на главное окно Visual FoxPro, позволяя управлять им как
объектом. Например, для очистки главного окна Visual FoxPro от выведенных данных можно в
окне Command написать команду C LEA R . Тот же самый результат будет достигнут, если мы
напишем следующую строку:
_SCREEN .Cls
В Visual Basic с этой же целью используется объект Screen. Например:
Screen.ActiveForm.MousePointer = 4
Свойство A ctive C o n tro l позволяет сослаться на активный объект формы, страницы в
многостраничной форме или панели инструментов. Синтаксис этого свойства следующий:
Object.ActiveControl.Property [= Setting]
Если во время работы с формой мы в окне Debug наберем приведенную ниже строчку и будем
перемещаться между разными элементами управления, то увидим имя активного в данный
момент элемента управления:
_SCREEN.ActiveForm.ActiveControl.Name
В связи с тем, что объектная модель Visual FoxPro поддерживает наследование, при работе с
классами не обойтись без соответствующей информационной поддержки. Для получения
информации о созданных объектах можно воспользоваться следующими свойствами. Эти
свойства имеют статус "только для чтения" и не могут использоваться для изменения свойств
объекта.
Object. BaseClass
Возвращает имя базового класса, на основе которого создан указанный объект.

Object.Class
Возвращает имя класса.
Object.ClassLibrary
Возвращает имя файла пользовательской библиотеки классов, в которой содержится
определение класса, на основе которого создан объект.
Object. ParentClass
Возвращает имя класса, который является родительским для класса, на основе которого
создан указанный объект.
Control. Parent
Обеспечивает ссылку на содержащий элемент управления объект-контейнер. Например, мы
можем изменить цвет фона формы при каких-либо действиях с включенным в нее элементом
управления без необходимости знать имя этой формы:
THIS.Parent.BackColor = RG B(192,0,0)
Таким образом, главное назначение этого свойства - использование его при создании
универсальных классов элементов управления, способных воздействовать на объект, в котором
будут размещены элеметы управления, созданные на основе этого класса.
Для почти любого объекта мы можем записать комментарий, что может оказаться очень
полезным на этапе отладки или сопровождения программы. Необходимо воспользоваться
свойством
Object.Comment [ = cExpression]
Это свойство удобно использовать для дополнительной идентификации объектов, если нет

converted to PDF by HupBaH9I

необходимости изменять установленные идентификаторы, доступные для СУБД.
Записать какие-либо данные для объекта можно с помощью еще одного свойства
Object.Tag [ = Expression]
Оба перечисленных выше свойства по умолчанию, если им не присвоены какие-либо
значения, возвращают пустую символьную строку.
Для работы с классами и созданными на их основе объектами из программы в Visual FoxPro
существует несколько очень важных команд и функций, которые мы и рассмотрим. Мы советуем
вам максимально использовать возможности визуальной работы с классами и объектами, которые
описаны в главе 10. В то же время мы сознательно уделяем этим командам и функциям столько
внимания при описании объектной модели даже несмотря на то, что этот материал имеет
специфическое отношение только к Visual FoxPro, так как если вы внимательно разберете
приведенные здесь примеры, то в дальнейшем будете уверенно ориентироваться среди
рассматриваемых в этом параграфе сложных понятий ООП.
ADD CLASS ClassName [OF ClassLibraryName1] TO ClassLibraryName2 [OVERWRITE]
Добавляет описание класса в визуальную библиотеку классов. Параметр Class-Name
определяет имя класса, добавляемого в визуальную библиотеку классов ClassLibraryName2. Если
файл визуальной библиотеки классов не существует, Visual FoxPro создает визуальную
библиотеку классов и добавляет в нее определение класса. Если вы опускаете необязательную
опцию OF ClassLibraryName1, Visual FoxPro ищет описание класса в любых визуальных
библиотеках классов, открытых командой S E T C L A S S L IB . Visual FoxPro сгенерирует ошибку,
если определение класса не может быть размещено или определение класса с именем, которое
вы задаете, уже существует в ClassLibraryName2. Опция OF ClassLibraryName1 определяет
визуальную библиотеку классов, из которой копируется определение класса. Опция OVERWRITE
удаляет все классовые определения из визуальной библиотеки классов прежде, чем определение
нового класса будет добавлено.
Использование команды ADD C LA SS добавляет определение класса в библиотеку классов или
копирует определение класса из одной визуальной библиотеки классов в другую. Определение
класса не может быть добавлено из программы, процедурного файла или приложения Visual
FoxPro (файлы с расширениями PRG или APP).
DEFINE CLASS ClassName1 AS ParentClass
[[PROTECTED Property1, Property2 ...]
Property = Expression ... ]
[ADD OBJECT [PROTECTED] Object AS ClassName2 [NOINIT]
[WITH cPropertylist] ]...
[[PROTECTED] FUNCTION | PROCEDURE Name
[NODEFAULT]

cStatements
[ENDFUNC | ENDPROC]]...
ENDDEFINE
Создает определяемый пользователем класс или подкласс и задает свойства, события и
методы для класса или подкласса. Параметр ClassName1 определяет имя создаваемого класса.
ОпцияAS ParentClass определяет родительский класс, на котором будет основан создаваемый
класс или подкласс. Родительским классом может быть базовый класс Visual FoxPro, такой,
например, как Form или любой другой определяемый пользователем класс или подкласс.
Невизуальный определяемый пользователем класс может быть создан определением имени
Custom для ParentClass.
С помощью опции [PROTECTED Property1, Property2 ...] Property = Expression... можно
назначить свойства создаваемому классу и установить для них значения, которые будут
использоваться по умолчанию. Знак равенства говорит о том, что свойству PropertyName
присваивается значение выражения Expression. Чтобы предотвратить доступ и изменение
значений свойств вне определения класса или подкласса, включайте опцию PROTECTED и список
защищенных свойств. Методы и события внутри определения класса или подкласса могут
обращаться к защищенным свойствам.
Опция ADD OBJECT позволяет добавить объект к определению класса или подкласса из
базового класса Visual FoxPro, определяемого пользователем класса или подкласса, либо из
класса OLE. Параметр Object определяет имя объекта и используется для ссылки на объект
изнутри определения класса или подкласса после его создания. Параметр ClassName определяет
имя класса или подкласса, содержащего объект, который вы добавляете к определению класса.
Опция NOINIT указывает на то, что метод Init не выполняется при добавлении объекта.
Опция WITH cPropertyList определяет список свойств и значений свойств объекта, который вы
добавляете к определению класса или подкласса.

converted to PDF by HupBaH9I

Опции FUNCTION Name или PROCEDURE Name позволяют создать описание действий,
выполняемых при возникновении события или выполнении метода для класса или подкласса.
События и методы создаются как набор функций или процедур.
Включение опции NODEFAULT указывает на то, что Visual FoxPro не будет реагировать на
события, как это должно было бы случиться, или выполнять процедуры обработки методов. Это
позволяет использовать свои собственные обработчики определенных событий, отличающиеся от
логики, принятой в Visual FoxPro. Опция NODEFAULT может располагаться в любом месте внутри
процедуры обработки события или метода, но эта опция должна быть помещена внутри
процедуры обработки события или метода в Конструкторе формы (Form Designer).
Параметр cStatements - это команды Visual FoxPro, которые выполняются, когда вызывается
событие или метод.
Функции и процедуры событий и методов могут принимать значения путем включения
оператора PA R A M ETER S как первой выполняемой строки в функцию или процедуру.
Чтобы создать объект на основе определения класса или подкласса, используйте функцию
C R E A T E O B JE C T () с именем соответствующего класса или подкласса.
Определения класса и подкласса, созданные с помощью команды D E F IN E C LA S S, не могут
размещаться внутри команд структурного программирования типа IF ...E N D IF или DO
C A S E ...E N D C A S E и в циклах типа DO W H ILE ...E N D D O или FO R ...EN D FO R .
В качестве примера посмотрим, как используется эта команда для создания объектов.
Создадим три различные формы.
oForm1 = CREATEOBJECT("frmTestForm")
oForm2 = CREATEOBJECT("frmTestForm")
oForm3 = CREATEOBJECT("frmTestForm")
* Изменим их заголовки
oForm1.Caption = "Первая форма"
oForm2.Caption = "Вторая форма"
oForm3.Caption = "Третья форма"
* Выведем на экран с помощью метода Show первую форму
oForm1.Show
* Немножко раздвинем их на экране
oForm2.Move(oForm1.Left + 50, oForm1.Top + 50)
oForm2.Show
oForm3.AutoCenter = .T.
oForm3.Show
* Подождем реакции пользователя
READ EVENTS
* Определим класс для создания наших форм
DEFINE CLASS frmTestForm AS Form
BackColor = RGB(192,192,193)
Caption = "TestForm"
* Добавим в форму управляющую кнопку
* для закрытия формы
ADD OBJECT cmdExit AS CommandButton WITH ;
Caption = "\<< Выход", ;
Left = 150, ;
Top = 100, ;
AutoSize = .T.
PROCEDURE cmdExit.Click
RELEASE THISFORM
* Когда с экрана будет убрана последняя форма,
* отменим состояние ожидания
IF _SCREEN.FormCount = 1
CLEAR EVENTS
ENDIF
ENDPROC
ENDDEFINE
Следующая команда:
S ET CLASSLIB TO ClassLibraryName [ADDITIVE]
[ALIAS AliasName]
Открывает визуальную библиотеку классов с определениями хранящихся в ней классов.
Параметр ClassLibraryName определяет имя файла библиотеки. Опция ADDITIVE позволяет

converted to PDF by HupBaH9I

открыть указанную библиотеку, не закрывая открытой ранее. Опция ALIAS AliasName позволяет
задать псевдоним для библиотеки, на который можно ссылаться при создании объекта на базе
класса, определение которого хранится в данной библиотеке. Задание этой команды в виде S ET
C L A S S L IB TO закрывает все открытые библиотеки классов.
RELEASE CLASSLIB ClassLibraryName
Позволяет закрыть указанную визуальную библиотеку классов из открытых ранее.
Помимо команд при работе с классами в программе не обойтись без следующих функций.
CREATEOBJECT(ClassName [, Parameter1, Parameter2, ...] )
Создает объект из описания класса или объекта OLE. Аргумент ClassName определяет класс
или OLE-объект, из которого будет создан новый объект. Visual FoxPro ищет класс или OLEобъект в следующем порядке:
1.
2.
3.
4.
5.
6.
7.

Базовые классы Visual FoxPro.
Определяемые пользователем описания классов в том порядке, в котором они были
загружены в память.
Классы в текущей программе.
Классы в библиотеках классов, открытые с помощью S E T C L A S S L IB .
Классы в процедурах, открытых с помощью S E T PRO CED U RE.
Классы в последовательности выполнения программ Visual FoxPro.
Регистр Windows (для объектов OLE).

Для создания OLE-объектов используется следующий синтаксис параметра ClassName:
ApplicationName.Class
Например, для работы с таблицами Microsoft Excel с помощью средств OLE вы можете
написать:
oExcelSheet = CREATEOBJECT("Excel.Application")
Когда этот код будет выполнен, запускается Microsoft Excel в скрытом для пользователя виде.
Вы не сможете обнаружить его отображение на панеле задач Windows 95. Но в перечне
загруженных задач, появляющемся при нажатии клавиш C trl+ A lt+ D e l, в этом случае пакет Excel
присутствует. Заметьте также, что даже если пакет Excel загружен на компьютере, в скрытом
виде загружается еще одна его копия. Подробнее работу OLE Automation мы обсудим в десятой
главе.
Необязательные параметры Parameter1, Parameter2, ... используются, чтобы передать
значения в процедуру события Init для класса. Событие Init выполняется, когда вы используете
функцию C R E A T E O B JE C T () и она разрешает инициализацию объекта.
Используйте функцию C R E A T E O B JE C T () для создания объекта из описания класса или
объекта OLE и назначения ссылки на объект с помощью переменной или элемента массива.
Прежде чем вы сможете создать объект из определяемого пользователем класса, необходимо его
определить с помощью команды D E F IN E C LA S S или получить к нему доступ в визуальной
библиотеке классов, открытой с помощью S E T C L A S S L IB . Используйте знак равенства или
команду S TO R E для назначения ссылки на объект с помощью переменной или элемента массива.
В качестве примера с помощью этой функции давайте программно создадим несколько
объектов на базе одного класса. В визуальной библиотеке классов у нас хранится описание
класса панели инструментов. Создадим на его основе три панели и зададим им разные свойства.
* Открываем визуальную библиотеку классов
S ET CLASSLIB TO Office
* Создаем три объекта
oTbr1=CREATEOBJECT("Office_Toolbar")
oTbr2=CREATEOBJECT("Office_Toolbar")
oTbr3=CREATEOBJECT("Office_Toolbar")
* Изменяем для каждой созданной панели заголовок ее окна
oTbr1.Caption = "Первая панель"
oTbr2.Caption = "Вторая панель"
oTbr3.Caption = "Третья панель"
* Для первой панели изменим цвет фона
oTbr1.BackColor = RGB(0,0,255)
* Выведем их на экран
oTbr1.Show
oTbr2.Show
oTbr3.Show
* Дадим 20 с для того, чтобы можно было их рассмотреть и
* подвигать

converted to PDF by HupBaH9I

READ TIMEOUT 20
Для определения ссылки на создаваемые объекты удобно использовать массив, как это видно
из следующего примера, в котором создается пять форм.
* Определяем массив для создания ссылки
PUBLIC ARRAY aTest(1)
DIMENSION aTest(5)
* Очищаем экран
_SCREEN .CLS
* Создаем пять форм и помещаем ссылки на них в массив
FOR nCount = 1 TO 5
aTest(nCount) = CREATEOBJECT("frmTestForm")
* Размещаем их по центру экрана
aTest(nCount).AutoCenter = .T.
ENDFOR
* Выводим созданные формы на экран
FOR nCount = 1 TO 5
IF TYPE("aTest(nCount)") = "O"
aTest(nCount).Show
ENDIF
ENDFOR
* Определяем класс для создаваемых форм с кнопкой
* для ее стирания
DEFINE CLASS frmTestForm AS Form
ADD OBJECT cmdExit As CommandButton WITH ;
Caption = "\<< Выход", ;
Top = 1 1 1 ,;
Left = 108, ;
Height = 29, ;
Width = 94, ;
Visible = .T.
PROCEDURE cmdExit.Click
RELEASE ThisForm
ENDPROC
ENDDEFINE
Функция
AINSTANCE(ArrayName, cClassName)
Размещает все образцы класса в массиве. Аргумент ArrayName определяет имя массива, в
котором размещаются образцы. Если массива, который вы определяете, не существует, Visual
FoxPro автоматически создаст его. Если массив существует, но не достаточно большой, чтобы
вместить все образцы, Visual FoxPro автоматически увеличит его размер. Если массив
оказывается больше, чем необходимо, Visual FoxPro усечет его до нужных размеров. В случае,
когда массив существует и функция A IN S T A N C E () возвращает 0 - никакие образцы не найдены,
- массив остается неизменным. Аргумент cClassName определяет имя базового класса Visual
FoxPro, пользовательского класса или объекта Visual FoxPro (Cursor, DataEnvironment, Relation).
Функция A IN S T A N C E () возвращает количество образцов класса, размещенных в массиве.
AMEMBERS(ArrayName, Object [, 1 | 2])
Размещает в массиве для указанного объекта имена свойств, процедур и включенных
объектов. Аргумент ArrayName определяет массив, в который записываются имена элементов
свойств для ObjectName. Если массив не достаточно большой, чтобы вместить все имена, Visual
FoxPro автоматически увеличивает его размер. Если вы определяете существующий двумерный
массив, Visual FoxPro преобразует его в одномерный. Аргумент Object определяет объект,
элементы свойств которого размещаются в массиве, указанном в ArrayName. Аргумент Object
может представлять собой любое выражение, имеющее отношение к объекту, типа ссылки на
объект, переменной объекта или элемента массива объекта. Аргумент 1 указывает на то, что в
массив будут включены как свойства объекта, так и методы и включенные объекты. Массив
является двумерным со вторым столбцом, уточняющим, к какому типу относится элемент,
внесенный в список в первом столбце. Возможные значения для второго столбца: Property, Event,
Method или Object. Аргумент 2 указывает на то, что массив будет содержать имена объектов,
являющихся элементами объекта, указанного в Object. Массив является одномерным. Эта опция
обеспечивает метод для определения имен всех форм в наборе форм или элементов управления
в форме. Функция A M E M B E R S () возвращает количество объектов, свойств и процедур для
объекта, либо 0, если массив не может быть создан.

converted to PDF by HupBaH9I

COMPOBJ( oExpression1 , oExpression2 )
Сравнивает свойства двух объектов и возвращает значение "истина" (.T .) , если их свойства и
значения свойств идентичны. Аргументы oExpression1, oExpression2 определяют объекты для
сравнения. Параметры oExpression1 и oExpression2 могут быть любыми определяющими объекты
выражениями, такими как ссылки на объект, переменные объекта или элементы массива объекта.
Функция C O M P O B J() возвращает значение "ложь" (.F .) , если объект имеет такие свойства,
которых нет у другого объекта, или если объекты имеют идентичные свойства, но значения
одного или нескольких свойств оказываются различными.

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



основными объектами и элементами управления для создания интерфейса пользователя;
назначением отдельных объектов;
основными свойствами объектов;
компонентами для расширения возможностей разработчика - объектами ActiveX.

В Visual FoxPro создание объектов поддерживается стройной и мощной системой классов. На
основе базовых классов программист может создать свои классы и, компонуя их в
соответствующие библиотеки, обеспечивать их доступность для создания объектов и элементов
управления в разрабатываемом приложении, как это показано на схеме, приведенной на рис.
5.3. Конечно, если быть совсем точным, эта схема существенно упрощена по сравнению с
реальными возможностями. В распоряжении программиста, разрабатывающего приложение на
Visual FoxPro, еще есть объекты для работы с данными при построении форм и отчетов, которые
не имеют классов, и есть возможность использовать объекты других приложений и объекты
ActiveX. Об этом мы поговорим в следующих главах.
В отличие от Visual FoxPro, в Visual Basic нет системы классов, и программист работает
непосредственно с набором предоставляемых ему объектов. По аналогии с Visual FoxPro можно
сказать, что на схеме, приведенной на рис. 5.3, в его распоряжении находятся первый и
последний блоки.

Рис. 5 .3 .
В табл. 5.1 был приведен список объектов, которые программист может создать в Visual FoxPro
на основе базовых классов. Визуально представляемые объекты легко создаются при
проектировании форм простым перетаскиванием нужного класса объекта с панели инструментов
Form Control на поверхность формы. Соответствующие кнопки этой панели инструментов можно
видеть на рис. 5.4.

converted to PDF by HupBaH9I

Label
Text Box

EditBox
Command Button Group

Co mm and Button

Option Button Group
CheckBox

■I*

ComboBox
Spinner

ListBox
Grid

-H

Image

PageFrame

Timer

OLE Container Control
Line

OLE Bound Control
Shape

Separator

Рис. 5 .4 .
В Visual Basic аналогичные функции выполняет панель инструментов, которая называется
ToolBox. Она содержит довольно похожий набор объектов и элементов управления (рис. 5.5).
Причем, если в Visual FoxPro мы можем расширить набор объектов, используемых при разработке
приложения за счет подключения дополнительных библиотек классов, то в Visual Basic
дополнительные объекты просто включаются в панель инструментов ToolBox.

jx |

Label

F ram e
CheckBox
ComboBox
HScroolBar

* №

Picture В ox

А

T extBox

п

1

17

р


—-I 1=Н
jU ►
]

-1

Command Button
Option Button
ListBox
VScroolBar

Timer

й |=э

DriveListBox

DirLielBox

L] ш

FileListBox

S h ap e

Я

Line

Image

м

O LE

тщ

Data

;Е0

Рис. 5 .5 . Визуальные объекты и элементы управления в Visual Basic
Большинство объектов имеют достаточно общий набор свойств для определения их
местоположения на экране или в форме, внешнего оформления и т. д. Отличия касаются в
основном способов обеспечения тех особых функций, для которых собственно объект и
существует в приложении.
Дадим краткий комментарий тех свойств, которые есть у большинства объектов.
Как вы уже заметили, чтобы что-то сделать с объектом, надо к нему обратиться. Каждый
объект имеет уникальный идентификатор, который называется именем объекта. При создании
объекта по умолчанию ему назначается имя, которое включает имя класса, на основе которого
создается объект, и цифру по порядку включения в объект-контейнер. Например, при создании
кнопки управления в форме она получит имя CommandButtonl. Если мы создадим в этой форме
еще одну кнопку, она получит имя CommandButton2 и т. д. Чтобы изменить имя объекта, надо

converted to PDF by HupBaH9I

использовать свойство
Object.Name [ = cName]
Параметр определяет имя указанного объекта.
В четвертой главе мы уже останавливались на общепринятых соглашениях о наименовании
переменных. В табл. 5.3 приведены рекомендации по наименованию объектов, которые основаны
на стандартах Visual Basic. В соответствии с ними тип объекта (префикс) характеризуется тремя
прописными буквами. Каждая смысловая часть в имени объекта начинается с большой буквы, но
не отделяется знаком подчеркивания.

t
d
e

Т аб л и ц а 5 .3 . Правила наименования объектов
О б ъ ект
П р еф и кс
Пример
CheckBox
chk
chkReadOnly
Column
grc
grcCurrentPrice
ComboBox
cbo
cboEnglish
CommandButton
cmd
cmdCancel
CommandGroup
cmg
cmgChoices
Container
cnt
cntMoverList
Control
ctl
ctlFileList
Data Control
dat
datAvto
Drive List Box
drv
drvTarget
EditBox
edtTextArea
File List Box
fil
filSource
Form
frm
frmFileOpen
FormSet
frs
frsDataEntry
Frame
fra
fraControls
Grid
grd
grdPrices
Header
grh
grhTotalInventory
HScrollBar
hsb
hsbVolume
Image
img
imgIcon
Label
lbl
lblHelpMessage
Line
lin
linVertical
ListBox
lst
lstPolicyCodes
OLE
ole
oleObject1
OLEBoundControl
olb
olbObject1
OptionButton
optFrench
OptionGroup
opg
opgType
Page
pag
pagDataUpdate
PageFrame
pgfLeft
Separator
sep
sepToolSection1
Shape
shp
shpCircle
Spinner
spn
spnValues
TextBox
txtGetText
Timer
tmr
tmrAlarm
ToolBar
tbr
tbrEditReport
VScrollBar
vsb
vsbVolume
t
p
o

f
g
p

t
tx

Большинство объектов может отображать какой-либо текст. Мы имеем возможность выбрать
вид шрифта для вывода текста с помощью свойства
Object.FontName [ = cName]
Параметр cName определяет имя шрифта, который будет использоваться объектом с именем
Object. По умолчанию будет использоваться шрифт Arial. Если вы изменяете шрифт и какие-либо
его параметры, первоначально установите имя шрифта, а затем такие его параметры, как размер
и начертание.
Object.FontSize [ = nSize]
Устанавливает размер используемого шрифта в пунктах. По умолчанию используется шрифт
размером 10 пунктов. Максимальное значение для nSize составляет 2048 пунктов. Напомним, что

converted to PDF by HupBaH9I

1 мм составляет примерно 2,8 пункта.
Object.FontBold [ = Expression]
Устанавливает полужирное начертание шрифта, если параметр равен .T.. Это значение
принято по умолчанию.
Object.FontItalic [ = Expression]
Устанавливает наклонное начертание шрифта, если параметр равен .T.. По умолчанию
принято значение .F..
Object.FontStrikeThru [ = Expression]
Устанавливает перечеркнутое начертание шрифта, если параметр равен .T.. По умолчанию
принято значение .F..
Object.FontUnderline [ = Expression]
Устанавливает подчеркнутое начертание шрифта, если параметр равен .T .. По умолчанию
принято значение .F..
Практически все объекты могут иметь различный цвет. Для изменения цвета объекта, как при
его создании, так и в процессе работы программы, можно использовать следующие свойства.
Object.BackColor [ = nColor]
Задает цвет фона объекта. Параметр nColor представляет собой число, которое обозначает
цвет. Вместо этого числа удобнее использовать функцию

RGB(nRedValue, nGreenValue, nBlueValue)
которая возвращает нужное значение nColor в зависимости от сочетания интенсивностей
красного nRedValue, зеленого nGreenValue и синего nBlueValue цветов. Каждое значение
интенсивности может меняться от 0 до 255. Максимальное значение обозначает наибольшую
интенсивность цвета. В табл. 5.4 приведены значения для типичных цветов.
Т аб л и ц а 5 .4 . Значения для типичных цветов
Цвета
Зн ач ен и я RGB З н ач е н и е nColor
Белый
255, 255, 255
16777215
Черный
0, 0, 0
0
Серый
192, 192, 192
12632256
Темно-серый
128, 128, 128
8421504
Красный
255, 0, 0
255
Темно-красный
128, 0, 0
128
Коричневый
255, 255, 0
65535
Бежевый
128, 128, 0
32896
Зеленый
0, 255, 0
65280
Темно-зеленый
0, 128, 0
32768
Морской волны
0, 255, 255
16776960
Темный морской волны 0, 128, 128
8421376
Синий
0, 0, 255
16711680
Темно-синий
0, 0, 128
8388608
Малиновый
255, 0, 255
16711935
Темно-малиновый
128, 0, 128
8388736
Object.ForeColor [ = nColor]
Задает цвет выводимых символов.
Object.BorderColor [ = nColor]
Задает цвет рамки.
Control.BorderWidth[ = nWidth]
Для указанного элемента управления задает ширину рамки. Параметр nWidth может
изменяться от 0 до 8192. Естественно, если параметр nWidth будет равен 0, рамка рисоваться не
будет.
Кроме текста многие элементы управления могут выводить изображение. Например,
достаточно часто какое-то изображение (пиктограмма) на кнопке управления воспринимается
оператором легче, чем надпись. К тому же такой подход позволяет проще реализовать
многоязычные приложения, так как пиктограмма в отличие от текста не требует перевода. В то
же время следует учитывать, что использование изображений требует больших ресурсов
компьютера. Для вывода изображений на элементах управления служит свойство
Control.Picture[ = cFileName | GeneralFieldName]
Изображение может храниться либо в файле cFileName, либо в поле типа General
GeneralFieldName. Изображение должно храниться в формате BMP или ICO.
Для объектов, которые не имеют обозначенных какими-либо видимыми элементами границ,

Если это не приемлемо. которые должны работать и в текстовой и в графической среде.пиксель. что для шрифтов). 6 . 3 . Фоксель .Caption [ = cText] Параметр cText определяет текст заголовка для указанного объекта.]Width [ = nValue] Параметр nValue определяет ширину указанного объекта. При создании такого нового объекта или элемента управления они получают по умолчанию заголовок такой же. страница). Единица измерения для параметра nValue в четырех вышеперечисленных свойствах определяется свойством Object.ToolTipText = cText Параметр должен содержать подсказку для указанного элемента управления. Для задания размеров объекта и его расположения можно использовать следующие свойства: Object.Left [ = nValue] Параметр nValue определяет расстояние от левого края объекта-контейнера до левой границы указанного объекта.миллиметр. Для создания ссылки в файле контекстной помощи в пользовательской программе можно использовать следующее свойство . если 3 .сантиметр. размещаемые на элементе управления (кнопка управления. Недостатком использования пикселов является то. Для приложений производственного использования приемлемым решением является ограничение пользователя в выборе разрешения экрана. с помощью следующего свойства Object. Фоксель примерно соответствует максимальной высоте и средней ширине символа в используемом шрифте. которые размещаются на экране. Object. которая может быть отображена на экране). 1 . различно. [Object. если пользователь задержит указатель мыши на элементе управления. так как в противном случае вы рискуете наблюдать свои формы в виде. 4 . В Visual Basic параметр nMode может принимать следующие значения: • • • • • • • • 0 .по вертикали). 5 . что на разных системах дисплеев и при разном разрешении число пикселов. определяется свойством Control.надписи. поле проверки) или вверху объекта (форма.пиксель (минимальная точка. Object. Это ведет к тому. которая обеспечивает сохранение пропорций пользовательского интерфейса независимо от используемых систем дисплеев. как имя объекта. 2 .дюйм . то в качестве единицы измерения используется фоксель.Height [ = nValue] Параметр nValue определяет высоту указанного объекта. Мы настоятельно рекомендуем вам использовать пикселы.это единица измерения.converted to PDF by HupBaH9I можно установить свой фон или сделать их прозрачными. которая используется в Visual FoxPro для облегчения разработки приложений.twip . при этом установка свойства BackColor игнорируется.используется собственная координатная система.Top[ = nValue] Параметр nValue определяет расстояние от верхнего края объекта-контейнера до верхней границы указанного объекта. Пользователю значительно помогает ориентироваться в интерфейсе прикладной программы возможность получения оперативной подсказки о назначении того или иного элемента управления. Изменить заголовок можно с помощью свойства Object. на котором они располагаются. обеспечивающим отслеживание установленного разрешения монитора и автоматическую коррекцию выводимых программой экранных элементов. В Visual FoxPro если параметр nMode равен 0. 7 . а следовательно. что созданный при одном разрешении экранный интерфейс будет занимать слишком мало места при более высоком разрешении или не умещаться на экране при более низком.BackStyle [ = nStyle] Для того чтобы фон стал прозрачным. параметр nStyle должен иметь значение 0. Наиболее часто используемые объекты для их идентификации пользователем имеют заголовки .символ (120 twip по горизонтали и 240 . которая появляется.типографский пункт (то же. придется прибегнуть к специальным методам проектирования пользовательского интерфейса. Для установки собственного фона объекта параметр nStyle должен быть равен 1. несколько отличном от предполагаемого при разработке.единица измерения.ScaleMode = nMode которое воздействует на форму или панель инструментов. то есть принять для них фон объектаконтейнера. действует и для всех расположенных в них объектах или элементов управления. Текст такой подсказки.

Object.tables .F . кроме. пока происходит определение его свойств или при изменении сразу нескольких характеристик объекта. Сначала выберите значение для свойства Object.. расположенной на MS SQL Server. в соответствии с которым по умолчанию будет регулироваться порядок перехода пользователя к следующему элементу управления. то следует соблюдать правильный тип данных. чтобы привязать какой-либо объект к данным в БД. Если в качестве источника данных используется формат. является T e x t B o x - текстовое поле.F . изображений. включен ли элемент управления Control в стек свойства TabIndex для перехода между элементами управления с помощью клавиши T ab . При более подробном описании каждого объекта мы еще остановимся на особенностях использования этого свойства. если пользователь нажимает клавишу F 1 . При создании объекта в Конструкторе формы свойство по умолчанию имеет значение . бесспорно. Если мы предварительно хотим установить для элемента управления какое-то значение с помощью параметра nSetting.позволяет работать непосредственно с таблицами. Определить этот выбор помогает свойство Control.TabIndex [ = nOrder] Параметр определяет номер элемента управления в объекте-контейнере (например.. С его помощью можно отображать и редактировать данные любого типа. Но его нельзя использовать. прямо для этого предназначенные.. если выражение Expression будет иметь значение . Естественно. то установить действие. Управлять порядком перемещения пользователя по элементам управления можно с помощью свойства Control.эл е м е н т у п р а в лен и я для работы с БД и указать для него в свойстве Object.F . содержание которой выводится на экран. что будущие пользователи не любят использовать мышь. как например.HelpContextID [ = nContextID] Параметр nContextID определяет идентификатор темы.T . пожалуй.. TextBox или EditBox. в программе .F . Поэтому более подробный разговор начнем именно с таких объектов. то элемент управления в стек не включен. в котором таблицы хранятся в отдельных файлах и не объединены на постоянной основе.. Для того чтобы элемент управления отображал какие-то данные или изменял свое значение в зависимости от каких-либо условий. когда активен указанный объект. то указывается только путь к папке с этими файлами. только для отображения выводимых в него данных. и при нажатии клавиши Tab этот элемент пропускается. поддерживаемых драйверами ISAM. Этот вариант допустим только для Access или БД. в форме). установите свойство Visible равным . чтобы узнать желание пользователя выполнить то или иное действие.F. для работы с БД. Если выражение Expression равно .DatabaseName [ = cName] имя и путь к базе данных. Object. Объекты для работы с данными Наиболее универсальным объектом для работы с данными..x.ControlSource [ = cName] В параметре cName указывается имя переменной или поля в таблице. необходимо сначала создать объект Data . .converted to PDF by HupBaH9I Object. Конечно. например FoxPro 2 . Если вы заранее знаете. В число обязательных действий включается установка значений еще для двух свойств. например. его надо привязать к переменной или полю в таблице. мы используем в программе элементы управления.. при создании приложения для обработки данных нас больше всего волнуют объекты. При добавлении объекта в форму. происходящее для элемента управления при нажатии клавиши T ab можно с помощью свойства Control. соответствующий элементу управления.TabStop [ = Expression] Выражение Expression определяет. В Visual Basic для того.Enabled [ = Expression] Позволяет сделать объект недоступным для изменения пользователем. При этом данный объект перестает реагировать на какиелибо события и может использоваться. чтобы избежать многочисленных перерисовок. Сделать это в Visual FoxPro можно с помощью свойства Object.Visible [ = Expression] Позволяет сделать указанный объект невидимым на экране.Value [ = nSetting] которое возвращает информацию о состоянии указанного элемента управления. если выражение Expression будет иметь значение .RecordsetType [= Value ] Процессор баз данных Microsoft Jet допускает выбор из трех вариантов: 0 .

FileListBox. задаваемые свойством Control. вернувшись к объекту TextBox и предварительно указав в свойстве D ataSou rce имя элемента управления для работы с БД. символьное выражение. 7 .позволяет создать обновляемый набор записей. которая может храниться. файлов. В случае. а длинные строчки автоматически усекаются по правой границе поля и переносятся на следующую строку.структура таблицы.RecordSource [= Value ] В качестве параметра Value для этого свойства можно использовать имя таблицы. 3 . или имя одного из объектов QueryDef. 8 .операторы SQL. 4 . Комбинация этих элементов дает возможность интерактивного выбора пользователем каких-либо файлов или места записи данных во время работы пользовательского приложения. В том случае. содержащегося в коллекции QueryDefs объекта Database (об объектах для доступа к данным. как для текстового поля. и незакрывающегося списка.запрос. При этом создается список Simple Combo. . мы можем назначить для него требуемый источник данных с помощью свойства Object. имя массива или имя файла запроса.(по умолчанию) . Текст в поле редактирования может прокручиваться по вертикали. непосредственно указанными в свойстве RowSource. 2 . При установке его значения в True текстовое поле может занимать несколько строк. В поле редактирования доступны все возможности по работе с текстом. Для вывода и редактирования больших объемов текстовой информации.converted to PDF by HupBaH9I 1 . когда возникает необходимость их отображения на экране.позволяет создать набор записей. В комбинированный список можно включать самые разнообразные данные. операторы SQL. в полях примечаний. Список заполняется данными из полей в таблице. В Visual Basic для этого используется текстовое поле. состоящий из текстового поля. приемлемую для используемой БД. В Visual Basic для вывода списков файлов. в зависимости от значения свойства RowSourceType. Вот теперь. открытой в указанной рабочей области. Комбинированный список с возможностью ввода создается при значении свойства Style равным 0 (drop-down combo). которое имеет специальное свойство Multiline.нет данных. например. лучше всего использовать элементы управления ComboBox . Этот способ позволяет снизить объем данных.EditBox .псевдоним. выбирая и считывая из источника данных только необходимые записи на основе уникальных ключевых значений для каждой записи. доступных устройств или папок есть специальные объекты . 1 . если необходимо так организовать ввод данных. в которое пользователь может вводить данные. В список помещаются результаты выполнения файла запроса (QPR).RowSourceType [ = nSource] Значения параметра nSource могут быть: • • • • • • • • • 0 . Control. В Visual FoxPro тип определяется значением свойства RowSourceType.dynasets . в Visual FoxPro есть специальный элемент управления . следует присвоить свойству Style значение 2 (drop-down list). чтобы дать пользователю возможность выбирать данные только из заранее определенного списка. DirListBox и DriveListBox. используя символы шаблона. такие как вырезка.snapshots . разделенный запятыми список значений.поле редактирования. Данные из полей примечаний и изображения считываются только тогда. копирование и т.поля.массив. Перечень файлов можно задать.1. В первых двух список выводимых файлов или папок определяется свойством Path. см. д. передаваемых на рабочую станцию с сервера. используемых в процессоре баз данных Microsoft Jet. В отличие от значения 2.раскрывающийся список или ListBox . Для заполнения списка используются значения. содержащее команду SQL.список.DataField [ = cName] В качестве параметра cName вы можете указать имя поля. 5 . если пользователь должен выбрать какие-то значения из списка. В Visual Basic источник данных будет определяться по такой же схеме. 2 .файлы. поля в список можно включить в произвольном порядке и из различных таблиц. В Visual Basic вы можете использовать еще одно значение .RowSource [ = cList] Параметр cList может представлять. таблиц.значения. главу 6). данные из которого хотите отобразить в текстовом поле. Список заполняется во время работы пользовательской программы с помощью методов AddItem или AddListItem. Список заполняется данными. 6 . которые не будут иметь возможности обновления в источнике данных. После этого вы можете выбрать нужную для работы таблицу с помощью свойства Object.

содержащий.курсивное начертание шрифта. который содержит объект-контейнер Columns. линии и т. и полей с данными. Например. Программно для поля проверки можно задать и третье. К таким свойствам относятся: • • • • • • • • • • DynamicAlignment . DynamicForeColor . Источник данных устанавливает пользователь во время работы программы. Для создания таблицы вы можете использовать поставляемые вместе с Visual Basic дополнительные элементы управления ActiveX. 2 . установленные для колонки во время работы программы при каждом обновлении Grid. как вывод данных различным цветом в зависимости от их значения. но мы можем использовать для этого любой другой элемент управления.запрос.имя шрифта. DynamicFontItalic . DynamicFontUnderline . с помощью которых пользователь может выполнить какое-либо действие или вариант работы приложения. Целый ряд свойств позволяет динамически управлять Grid в зависимости от самых разнообразных условий. Объекты Columns и Header тоже имеют свои свойства. что выбор подобных действий может быть организован с помощью практически любого элемента управления. так как они могут отображать несколько колонок. Grid. Например. Но все-таки исключительно любимым программистами и. Здесь сразу придется оговориться. при изменении данных можно создать копию файла с данными до изменения.размер шрифта. Автоматически открывается таблица. Grid.F. (1) или "ложь" .RecordSource [ = cName] Определяет имя источника данных. ни во втором состоянии. При этом свойство Value будет иметь значение NULL или 2. мы можем легко обеспечить такую экзотическую функциональность. пользователями способом представления данных остается таблица. Объекты для управления работой приложения В эту группу объектов выделим средства создания различного типа кнопок. Например.RecordSourceType [ = nType] Определяет тип источника данных для заполнения Grid. как текстовое поле. Параметр nType может принимать следующие значения: • • • • 0 .лишь бы такой элемент управления реагировал на какие-нибудь события. для .T.цвет символов. что особенно важно. указанная в свойстве RecordSource. По умолчанию данные в каждой колонке отображаются с помощью текстового поля.цвет фона. Все вышеупомянутые объекты способны отображать данные из одного поля. В отличие от Visual FoxPro в Visual Basic нет "родного" объекта Grid.поле проверки. а следовательно. Объект Grid является элементом управления. Объект Grid является объектом-контейнером. изображения. (0 ). в свою очередь. Для создания таблицы проще всего использовать специально предназначенный для этого объект .по выбору пользователя.псевдоним (по умолчанию).converted to PDF by HupBaH9I Данные. который позволяет эффективно работать одновременно с несколькими строками данных и является функциональным эквивалентом Browse. DynamicFontBold . неопределенное состояние. DynamicFontName . способный работать с данными. Об этих объектах мы расскажем в отдельном разделе этого параграфа. Свойство Value этого элемента управления может принимать значение "истина" .выравнивание данных.перечеркнутое начертание шрифта. Для работы с данными в Grid можно использовать следующие свойства. наиболее удобно отображать с помощью элемента управления CheckBox . которые принимают одно из двух значений. объект Header. 1 . включая и такие. Исключением являются списки. DynamicFontStrikeThru . В Grid мы можем помещать данные как из таблиц. события и методы.используемый элемент управления. д.полужирное начертание шрифта. DynamicBackColor .подчеркнутое начертание шрифта.таблица. Чаще всего это псевдоним курсора или таблицы. например.Grid. . а можно не создавать. ничто не мешает нам в каждой клетке Grid разместить еще один Grid. что управление работой приложения является их главным предназначением и их трудно использовать. DynamicCurrentControl . когда элемент управления не находится ни в первом. DynamicFontSize . Специальный набор свойств позволяет изменять параметры. 3 . Эту группу объектов мы выделили исключительно из-за того. так и из просмотров и курсоров или запросов. В свойстве RecordSource должно быть указано имя файла-запроса (QPR).

кнопка управления. Основным свойством для таймера. только одна кнопка в форме может иметь значение Expression.Cancel [ = Expression] Для выбора какого-то одного действия из нескольких возможных лучше всего использовать кнопки выбора . связанные с большой загрузкой процессора (чтение и запись данных.O p tio nB u tto n. как принято по умолчанию. Чем меньшее значение вы устанавливаете для интервала. Объект CommandButton создает отдельную управляющую кнопку. Их применение существенно ускоряет процесс создания экранных форм с постоянным набором управляющих действий. Его назначение заключается только в обеспечении функциональности пользовательского приложения. в Visual FoxPro установите для свойства A u to size значение . или слева от изображения кнопки. Обратите внимание. чем 56 миллисекунд. которое позволяет задать интервал времени между его срабатыванием (выполнением события Timer). Наиболее часто используемым объектом для управления работой приложения. особенно если вы интерактивно меняете на ней текст. является Timer.. д.Interval [ = nTime] По умолчанию значение nTime равно 0. При выборе значения для интервала срабатывания таймера необходимо учитывать следующее: • • • В связи с тем. что кнопку выбора мы можем использовать только как объект для создания группы кнопок выбора.таймер (счетчик времени) . В отличие от других элементов управления. сетевой доступ и т. равное . Чтобы не задумываться над размерами кнопки. этот объект не виден пользователю во время работы программы. Совершенно аналогично для одной из управляющих кнопок в форме мы можем предусмотреть выполнение присвоенного ей действия при нажатии клавиши Esc с помощью свойства CommandButton . меньше ресурсов будет оставаться на выполнение других операций.converted to PDF by HupBaH9I работы с данными. В этом случае событие Timer может наступить только после их завершения. Для сброса времени отсчета интервала и установки его отсчета с нуля используется метод R eset. когда активен какой-либо другой элемент управления.). Стоит отметить. Как правило. то эта кнопка сработает при нажатии клавиши E n te r на любом другом элементе управления в форме. что препятствует срабатыванию таймера. Мы можем предусмотреть выполнение этого события и при нажатии клавиши E n te r. При создании кнопки выбора мы можем расположить поясняющий текст справа. Эти же объекты могут быть использованы для прокрутки длинных списков или больших объемов данных.. что в Visual FoxPro для создания сразу нескольких кнопок существуют соответствующие объекты CommandButtonGroup и OptionButtonGroup. перемещения к другой записи в таблице и т. которые реализуют какие-либо действия типа закрытия формы.T.позволяет задать интервал времени или продолжительность выполнения каких-либо действий в программе.T . связанной с продолжительностью работы. с помощью свойства CommandButton . Объекты для оформления интерфейса пользователя . действие. Объект Timer . что превышает продолжительность 24 дней. интенсивные вычисления. если система выполняет какие-либо длительные действия. определяется событием Click.T. Максимальное значение параметра nTime может быть равным 2147483647 миллисекунд. В Visual Basic своеобразный элемент управления в виде движка может быть выполнен на основе объектов HScrollBar и VScrollBar. реальное значение интервала не может быть меньше. для одной из двух или более управляющих кнопок в форме... Установленное значение интервала может не соблюдаться. является элемент управления CommandButton . и скорость работы программы может существенно уменьшиться. несомненно. По умолчанию значение Expression равно .Default [ = Expression] Если для указанной кнопки параметр Expression равен . тем чаще программа должна генерировать событие Timer и. что система вырабатывает прерывания с частотой 18 раз в секунду. д . которое должно выполниться при нажатии на управляющую кнопку. то кнопка выбора как объект может использоваться в Visual FoxPro только в Конструкторе класса. Если вы используете визуальные средства проектирования. Естественно. На кнопку мы можем поместить поясняющий текст с помощью свойства Caption или изображение (только в Visual FoxPro) с помощью свойства P ictu re .F. следовательно. присвоив свойству Alignment значение 1. Управляющая кнопка обычно используется для запуска процедуры или события.

Curvature [ = nCurve] По умолчанию параметр nCurve равен 0 и рисуется прямоугольник. При этом свойство A u to S ize игнорируется.. Требуемая форма последнего объекта в Visual FoxPro определяется свойством Shape. овал. но работает медленнее.по центру. В Visual Basic объекты Line и Shape выполняют чисто оформительские функции. Объект Label создает метку для вывода поясняющего текста. так как не реагируют на события. Если значение параметра nCurve находится в диапазоне от 1 до 98. Control. Если параметр Expression равен . а вертикальный остается без изменения. особенно если текст изменяется во время работы программы.converted to PDF by HupBaH9I Объект Image создает элемент управления в виде изображения формата BMP.Shape [ = Value] Параметр может принимать одно из следующих значений: • • • • • • 0 1 2 3 4 5 - прямоугольник (по умолчанию). в Visual Basic является F ram e . Источник изображения для этого объекта устанавливается с помощью свойства Control. Очень полезное свойство A u to S ize позволяет не отслеживать размер помещаемого в элемент управления текста.Picture = cFileName В Visual FoxPro источник изображения может храниться и в поле типа General. В Visual Basic форма объекта определяется другим свойством и более жестко Object. если 1 . который графически представляется прямоугольником с заголовком на верхней стороне и имеет необходимый набор событий.Alignment [ = nValue] Если параметр nValue будет равен 0 (по умолчанию). окружности или овала. окружность. если 2 . то метку будет окаймлять одинарная линия.по правому. то текст может переноситься между строками с изменением вертикального размера метки в зависимости от длины текста и размера шрифта. если 99 . который обладает расширенной функциональностью. В Visual Basic кроме объекта Image есть и объект PictureBox.в виде прямоугольника. Может использоваться для создания областей на форме. Для придания метке нужного вида можно использовать следующие полезные свойства. то будет рисоваться прямоугольник со все более скругленными углами. реагирующих на действия пользователя. квадрат со скругленными углами. и текст в метке не переносится между строками. Объект Lin e создает элемент управления в виде линии. например. По умолчанию параметр Expression равен . Аналогом объекта Shape.T .круг или эллипс. может выводить дополнительно изображения в формате ICO и WMF. Если параметр nStyle равен 1. Object. прямоугольник со скругленными углами. В подобном случае имя этого поля указывается вместо имени файла. заполняющего метку при изменении ее размера. а Shap e . то текст в метке выравнивается по левому краю.F. Label. при этом горизонтальный размер метки изменяется так. .WordWrap [ = Expression] Позволяет регулировать процесс изменения текста. чтобы вместить текст по длине. как элемента управления. квадрат.BorderStyle [ = nStyle] Это свойство определяет вид рамки для метки. чтобы вместить имеющееся число строк текста с учетом размера шрифта. По умолчанию параметр nStyle равен 0 и рамка не изображается.

если . Этот объект есть только в Visual FoxPro. Наиболее эффективным средством создания формы является Конструктор формы (Form Designer). а затем активный элемент управления. которые и обеспечивают ему требуемую функциональность при решении какой-либо задачи.converted to PDF by HupBaH9I Объекты-контейнеры Одним из наиболее важных объектов.. является объект Form .. то системное меню отображается. если . Вы можете использовать это свойство.экранная форма. имя которого указано в cFileName. имеет ли форма кнопку Minimize (уменьшение размера окна до пиктограммы).ControlBox [ = Expression] Определяет. Объект Fo rm S et создает набор форм. Object.T . Object. в Visual FoxPro для набора форм существует свойство . прерывает ли событие KeyPress в форме событие KeyPress в элементе управления. Следующий набор свойств позволяет установить или убрать возможность управления формой как окном с помощью системного меню. когда прикладная программа использует функциональные клавиши. если .MaxButton [ = Expression] Определяет. например. Например.F. общих для всех элементов управления. позволяет вместить практически неограниченный объем данных в одну форму. Для набора форм можно использовать множество свойств. В то же время следует заметить. а форма не получает. Если параметр Expression принимает значение . то нет.T. что позволяет легко координировать работу сразу с несколькими формами. в Visual Basic ему в соответствие можно поставить коллекцию Fo rm s. что наличие в Visual FoxPro такого объекта.F .T. Некоторые свойства для набора форм особенно важны. Создание одного объекта DataEnvironment для всех форм в наборе и обеспечение тем самым синхронизации в перемещении данных. чем для каждого элемента управления. (по умолчанию). о работе с которым пойдет речь в главе 9 . которое будет выведено при минимизации формы. размещаемых в одном окне. (по умолчанию). Внешний вид формы может быть установлен с помощью большинства свойств. В целом интерфейс приложения состоит из форм. имеет ли форма кнопку Maximize (увеличение размера окна до максимального размера).T. поиска нужной информации и т. Максимальное открытие окна Form во время выполнения программы вызывает событие Resize. то событие KeyPress получает активный элемент управления. событий и методов. чтобы создать для формы процедуру управления с помощью клавиатуры. Файл. Если параметр Expression принимает значение . который используется для объединения всех элементов управления. появляется ли системное меню в верхнем левом углу формы во время ее выполнения.Icon [ = cFileName] Определяет изображение..MinButton [ = Expression] Определяет. то форма имеет кнопку Minimize. то нет.F . д. (по умолчанию). Object. Набор форм обеспечивает следующие возможности: • • • Одновременное выполнение какого-либо действия сразу для нескольких форм. если . Object. Если параметр Expression равен . вы можете обрабатывать нажатия клавиши на уровне формы скорее. то нет. как страничный блок (PageFram e).F . должен иметь по умолчанию расширение ICO. Если параметр Expression принимает значение . редактирования или ввода данных. доступных для отдельной формы. Object. (по умолчанию).. Так.KeyPreview [ = Expression] Определяет. Свободное управление расположением форм на экране для достижения максимального удобства в работе с ними. то сначала событие KeyPress получает форма. Уменьшение формы до пиктограммы во время выполнения программы генерирует событие Resize. то форма имеет кнопку Maximize.

Никакие объекты других форм не могут стать активными. Включено для совместимости снизу вверх. одновременно видимую на экране пользователем. FormSet ведет себя. Выполнение программы останавливается на методе Show или команде DO FORM. Любые объекты формы в FormSet и объектах формы. Узнать номер активной в данный момент страницы можно с помощью свойства A ctiveP ag e. которые могут перелистываться.F. например справочниками. Когда форма дезактивирована. а затем активный элемент управления. но объекты других форм и меню не доступны. а форма не получает. что будет влиять на порядок их расположения. указанных в свойстве WindowList. то событие KeyPress получает активный элемент управления. чем для каждого элемента управления. Object. Объект FormSet ведет себя. Страница объединяет информацию.. страница является объектом-контейнером и для определения количества включенных в нее элементов управления можно использовать свойство ControlCount. . Page. 2 Чтение.PageOrder [ = nOrder] Определяет относительный номер страницы в страничном блоке.KeyPreview [ = Expression] Определяет. Объект P ag eFram e создает страничный блок из набора страниц. Перелистывая страницы. когда прикладная программа использует функциональные клавиши. Это позволяет создавать универсальный набор элементов управления для использования с однотипными формами. Для ссылки на отдельный элемент управления по его номеру и задания для него определенных значений свойств используется свойство Controls. если она запущена командой DO FORM. если . пользователь может работать с большим объемом данных без необходимости перехода в другие окна или формы. Все формы в FormSet активны. доступны. и меню не доступно. Вы можете использовать это свойство. вы можете обрабатывать нажатия клавиши на уровне формы скорее. как будто он был активизирован командой READ. В Visual FoxPro в набор стандартных объектов входят и объекты для создания многостраничных форм. которая может облегчить пользователю выполнение часто повторяющихся действий. 1 Модально.WindowType [ = nType] Определяет поведение форм в наборе форм. (по умолчанию). Объект Page создает страницу в страничном блоке для размещения блока данных. чтобы создать для страницы в форме процедуру управления с помощью клавиатуры. выполнение программы продолжается. Если параметр Expression принимает значение .T. как будто он был активизирован командой READ MODAL. то сначала событие KeyPress получает форма. На панели инструментов мы можем размещать любые элементы управления.converted to PDF by HupBaH9I Object. Страничный блок позволяет компактно расположить большие объемы данных для работы с ними пользователя за счет размещения их на отдельных страницах. 3 Модальное чтение. Страница как объект может входить только в страничный блок (PageFrame). Например. В свою очередь. Включено для совместимости снизу вверх. будет ли событие KeyPress в элементе управления прервано событием KeyPress в форме. Объект T o o lB a r создает в Visual FoxPro панель инструментов. Выполнение останавливается на методе Show или команде DO FORM. Для FormSet доступны следующие значения параметра Type: nType О писание 0 Независимо от режима.

добавленной к форме при ее проектировании. ToolBar. исключая уже упоминавшиеся объекты Container и Control.. то панель инструментов может перемещаться. и их число отображается звездочками.Docked [=lExpression] Возвращает логическое значение. встроена панель инструментов в рамку окна Visual FoxPro (. так как по умолчанию размещаемые на панели инструментов элементы управления следуют вплотную друг за другом. Об отличиях между этими объектами мы уже рассказывали. и размеры панели инструментов могут быть изменены пользователем.Sizable = Expression Определяет возможность изменения размеров панели инструментов. 1 . а справа введенное. Object. то свойство возвращает результат сравнения возвращаемого значения и параметра Expression. 0 . расположенное в левом верхнем углу. Если . Если параметр Expression принимает значение . задавая команды из окна Command. то сделать этого будет нельзя. зашифровывающий пароль. 3 .встроена в верхнюю рамку.Docked При добавлении панели инструментов к форме создается набор форм.в нижнюю. Если параметр Expression будет равен .T.в левую. Если используется параметр Expression. В приводимой программе создается форма.в правую. и вы увидите в нижних полях формы слева зашифрованное значение. Это позволяет визуально создавать на панели инструментов группы элементов управления. Параметр nPosition может принимать следующие значения: -1 . Универсальными объектами в Visual FoxPro для создания компонентных элементов управления. используется указатель Parent.F. (по умолчанию). nPosition = ToolBar. в которой в поле. Панель инструментов имеет несколько специфических свойств. Этот объект удобно использовать для создания и последующего запуска стандартных. который помещает пробел между элементами управления.DockPosition Определяет положение панели инструментов в окне Visual FoxPro.Movable [ = Expression] Определяет. как на объект более высокого уровня. который обеспечивает доступ к панели инструментов. По умолчанию параметр Expression равен . то объект не может быть перемещен пользователем. Пароль может храниться в таблице с данными о доступе пользователей к элементам системы в зашифрованном виде.S e p a ra to r.панель инструментов не может быть встроена.). Вводимые символы скрыты.. поэтому для ссылки на него.. с помощью которого можно определить. На панели инструментов можно размещать специальный объект . 2 .T.converted to PDF by HupBaH9I что сокращает время разработки программы и облегчает обучение пользователей. то вам поможет следующий образец. Успехов в шифровании! * * * Пример использования объекта Custom для шифрования пароля . которые выполняют специфические функции объединения других элементов управления. ?_SCREEN.Parent.F. являются объекты Control и Con tain er.) или нет (. После ввода пароля пользователем хранимый пароль расшифровывается и сравнивается с введенным.ActiveForm. может ли панель инструментов перемещаться пользователем во время выполнения программы. при создании которых не требуется визуализация объекта. Нажмите кнопку "Зашифровать". в котором мы создадим пользовательский класс. часто используемых процедур.Office_toolbar1. вводится пароль.F. Object. включающих несколько отдельных объектов. Н евизуальны е объекты Объект Custom создает единственный в Visual FoxPro невизуальный объект.T. В качестве примера использования объекта Custom рассмотрим следующий пример. Если вы хотите поэкспериментировать со свойствами панели инструментов.

cEncrypted THISFORM. READ EVENTS * Описываем класс формы DEFINE CLASS PwdForm AS FORM Caption = "Шифрование пароля" * Добавляем объект в форму для формирования пароля ADD OBJECT CustPassword AS Pass_Word Height = 130 Width = 350 Autocenter = .custPassword. Height = 29.. Name = "Text3" * Процедура. . . . .custPassword. выполняемая при выходе из формы PROCEDURE DESTROY CLEAR EVENTS ENDPROC . * Добавляем текстовое поле для ввода пароля ADD OBJECT txtText1 AS TextBox WITH . .custPassword. Width = 125.LostFocus THISFORM. выполняемая при нажатии на кнопку * "Зашифровать" PROCEDURE cmdCommand1.SetFocus ENDPROC * Процедура. .. Caption = "Зашифровать".SetFocus ENDPROC * Процедура.custPassword. . Left = 25. .Refresh THISFORM. . Height = 25. Top = 72.txtText1.cUnencrypted".Value =. . frmPwdForm.Click THISFORM.Value)) THISFORM. * которая содержится в cmdCommand1. Height = 25.T. . Left = 200.Visible = . .Click ADD OBJECT cmdCommand1 AS CommandButton WITH . Width = 125. ReadOnly = . . . cEncrypted) THISFORM. Top = 20. Width = 125. .T. . Top = 72. Readonly = . . PasswordChar = "*". Name = "cmdCommand1" * Добавляем в форму текстовое поле для вывода введенного * пароля ADD OBJECT txtText3 AS TextBox WITH .Decrypt_It(THISFORM. Name = "txtText2" * Добавляем в форму кнопку для вызова процедуры * шифрования. Name = "txtText1" * Добавляем текстовое поле для вывода * зашифрованного пароля ADD OBJECT txtText2 AS TextBox WITH .custPassword. выполняемая после набора пароля PROCEDURE txtText1.T. . . .txtText2.. . Left = 25. THISFORM. ControlSource = . Top = 20.T. Height = 25. Width = 125.Encrypt_It(TRIM(THIS.cmdCommand1. "THISFORM. Left = 200.converted to PDF by HupBaH9I frmPwdForm = CREATEOBJECT("PwdForm") && Создаем форму.

Обычно в колекцию помещают группу однотипных объектов (членов коллекции).cEncrypted = cEncrypted_password ENDPROC * Процедура расшифровки пароля PROCEDURE Decrypt_It PARAMETERS cPassword cUnencrypted_password = " " FOR i = 1 TO LEN(cPassword) cLetter = SUBSTR(cPassword.converted to PDF by HupBaH9I ENDDEFINE * Описываем класс объекта Custom DEFINE CLASS Pass_Word AS Custom Height = 17 Width = 100 Name = "Password" * Добавляем для создаваемого объекта свои свойства cUnencrypted = "" cEncrypted = "" * Процедура выполнения шифрования пароля PROCEDURE Encrypt_It PARAMETERS cPassword cEncrypted_password = " " * Запускаем цикл по количеству введенных в пароле * символов FOR i = 1 TO LEN(cPassword) cLetter = SUBSTR(cPassword. как и другие объекты. Этот объект используется для работы с текстом и графикой. Этот объект имеет только свойства и не имеет ни событий. О бъекты OLE . но без визуального интерфейса. Объект создается точно так же. Но в принципе. Опишем те. i. Объект Collection . вырезать и вставлять данные в приложении. д. i. В приложении вы можете использовать этот объект как контейнер для программного кода. как программа может описывать свойства и методы класса. ни методов. который описывает свойства и методы созданного вами класса. путь к исполняемому файлу и его имя. Размещение объектов в коллекции позволяет выполнять необходимые действия одновременно над всеми объектами. 1) cEncrypted_password = cEncrypted_password + . имя файла контекстной справки и т. Объект ClassM odule содержит свойства. 1) cUnencrypted_password = cUnencrypted_password + . например:^> Dim oCollect1 As New Collection Объекты в коллекцию могут быть добавлены с помощью метода Add и исключены из нее с помощью метода Remove. в коллекции могут быть объединены и объекты разного типа. CHR((ASC(cLetter)-5)/2) NEXT i THIS. обращаясь только к одному объекту Collection. к которому можно обращаться как к единому целому. Объект ClassModule похож по своему поведению на форму. Объект App определяет или задает такие параметры. Объект Clipboard обеспечивает доступ к системному буферу обмена. CHR((ASC(cLetter)*2)+5) && Заменяем && введенный символ NEXT i THIS. который объект занимает в коллекции. содержащейся в буфере обмена. которые наиболее часто используются при построении пользовательского приложения. которые управляют поведением класса так же. как заголовок приложения.представляет собой набор объектов. и с его помощью можно обеспечить пользователю возможность копировать.коллекция . а затем обращаются к ним по номеру.cUnencrypted = cUnencrypted_password ENDPROC ENDDEFINE В Visual Basic вместо одного универсального невизуального объекта используется достаточно большое число специализированных невизуальных объектов.

разработанного Microsoft. Он предоставляет запрашивающим приложениям тот же интерфейс. Эти элементы управления наряду с другими входят и в профессиональную версию Visual Basic. Текстовый документ станет OLE-объектом. являющаяся для объекта сервером. Если nValue = 2 . Кроме того. допустимый для приложений. используя метод DoVerb.OCX). то элемент управления не будет автоматически активизирован при выборе пользователем. которое будет использоваться в качестве заголовка окна при редактировании OLE-объекта. в виде подобного элемента управления может использоваться файл документа Word for Windows или таблица Excel. При обращении к объекту OLE все необходимые функции предоставляет сервер OLE. звук или видеоролик. Элемент управления O LE Bound создает встроенный OLE-объект.OCX и PICCLIP32. Что же таится в этих файлах? MSCOMM32. то объект OLE будет активизирован двойным щелчком мыши или нажатием клавиши Enter на этом объекте.этот дополнительный инструмент. написанных и на других языках программирования. то прикладная программа. MSMAPI32. Чаще всего в качестве встроенного OLE-объекта используется изображение. если объект выбран.converted to PDF by HupBaH9I Элементы управления OLE .0 заключается в использовании настраиваемых элементов управления ActiveX (OLE Custom Controls . В Windows 95 появился новый тип серверов OLE . который связан с полем типа General таблицы Visual FoxPro. как могут быть активизированы элементы управления OLE.HostName [ = cExpression] Для некоторых приложений позволяет задать имя. Если nValue = 1. Он продолжает работать до тех пор. то объект OLE будет активизирован двойным щелчком мыши на элементе управления или выбором этого объекта (автоматическая активизация).которые при инсталяции Visual FoxPro записываются в директорий SYSTEM операционной системы Windows.стандартного интерфейса. Они обеспечивают следующие пути для управления передачей данных: • Событийно управляемая передача данных позволяет с помощью события OnComm отслеживать начало передачи данных на компьютер (Carrier Detect) и необходимость передачи данных с компьютера (Request To Send). Возможность использования элементов управления OLE в приложении появилась за счет поддержки технологии OLE 2. Элементы управления ActiveX .0 (Object Linking and Embending) . который позволяет расширить функциональность разрабатываемых прикладных программ. Что дает эта технология разработчику прикладного программного обеспечения? При разработке прикладной программы мы можем использовать объекты из других приложений. для одновременного использования приложениями объектов в ОС Windows.это стандартный формат объектов OLE.OCX.OCX. Другая возможность технологии OLE 2. Пользователи профессиональной версии Visual FoxPro получают набор дополнительных элементов управления ActiveX вместе с пакетом.клиента OLE.OCX. реализовать которую встроенными средствами было бы невозможно или затруднительно. так как не требует отдельного пространства памяти для второго приложения. однако отличается от него намного более высоким быстродействием. Тогда текстовый процессор примет статус сервера OLE. Для работы с OLE-объектами можно использовать следующие свойства. что и внешний сервер OLE. будет активизирована после выбора объекта пользователем. Control. Элемент управления OLE обычно может быть использован в виде файла с расширением OCX. Элемент управления O LE C o n tain er позволяет включить элемент управления OLE в пользовательское приложение Visual FoxPro.AutoActivate [ = nValue ] Определяет. В Visual Basic функциональность обоих этих элементов управления обеспечивается одним объектом OLE. разместить в форме текстовый документ Word for Windows. Набор состоит из четырех файлов MSCOMM32. Если параметр nValue равен 0. MSOUTL32. Событие OnComm также отслеживает ошибки соединения. Например. .внутренний сервер OLE. а прикладная программа . Встроенный OLE-объект не имеет собственного набора событий. Вы можете активизировать элемент управления программно. Control. Их использование позволяет обеспечить пользовательскому приложению практически любую функциональность.OCX представляет элем енты уп равления для передачи д а н н ы х в приложении по последовательному интерфейсу (C o m m u nication s control). пока в других приложениях останется хотя бы один его объект. . Если nValue = 2 (по умолчанию).

необходимо использовать отдельный элемент управления. Вы можете выстраивать пункты в колонках.OCX . а также устанавливать сортировку пунктов. PICCLP32.кален д ар ь (C a len d ar Control). особенно с профессиональной версией этого средства разработки. Этот элемент управления можно эффектно использовать для отображения содержания каких-либо документов. содержащим все необходимые изображения. например. Элемент управления T re e V ie w позволяет отображать иерархические списки специальных объектов Node. С помощью элемента управления для вывода изображений можно выбрать нужную область и вывести требуемую иконку или изображение. а в Visual FoxPro для отображения элементов. Для каждого последовательного порта. MSOUTL32. Календарь также поддерживает события. который используется для передачи данных. а может быть включен в любой другой элемент управления как хранилище изображений. Значительное количество дополнительных элементов управления поставляется вместе с Visual Basic.OCX содержатся несколько элементов управления Windows 95. Дадим им краткую характеристику. выводимый с отступом. но предоставляет более широкие возможности для программного управления сворачиванием и раскрытием иерархии пунктов. в том числе с использованием поиска первых символов по нажатии клавиш. который позволяет выбрать область в исходном изображении и затем вывести ее в форме. используя уменьшенные версии значков. используя один из четырех способов: • • • • в виде значков (иконок). входящих в проект. При установке СУБД Access 7. для каждой кнопки на панели инструментов. в виде списка. Этот элемент управления находится в файле MSACAL70. наоборот.0 вы получаете в свое распоряжение один дополнительный элемент управления . к тому же они не имеют собственных событий. Элемент управления TreeView использует элемент управления ImageList для хранения значков. раскрывать иерархию интересующих его пунктов.представляет набор элементов для создания в пользовательском приложении возможности передачи почтовых сообщений (M icrosoft M API C on tro ls). Это позволяет значительно эффективнее использовать память компьютера. используя заголовки и сочетая значки с текстом. которые используются при выводе каждого объекта Node (пункта в . делая невидимыми подчиненные пункты. которое имеет полосы прокрутки. после получения сигнала OK от модема. Для их использования необходимо применять соответствующие методы. В файле содержатся два элемента управления: • • Элемент управления сеансом связи (M A PI Se ssio n Control) позволяет установить связь с требуемым получателем почтового сообщения. перемещением и выбором пунктов в списке. MSMAPI32.OCX . В файле COMCTL32. По своему назначению он аналогичен объекту Outline Control. Элемент управления ListV ie w позволяет отображать списки. каждый из которых содержит метку и. с помощью которых ваше приложение может автоматически выполнять какие-либо действия. Такой тип списка используется в Windows 95 для вывода списка файлов и директорий. Элемент управления ImageList не предназначен для самостоятельного использования.представляет элемент управления для создания иерархического списка (O u tline C on tro l). Пользователь может сворачивать список. списков файлов и папок и т. Эти элементы управления невидимы во время работы программы.OCX . или. Список выводится в окне. в котором каждый пункт может иметь подчиненный пункт. д. Элемент управления Im a g e L ist предназначен для хранения коллекции объектов ListIm a g e . возможно. Он позволяет заменить множество используемых в программе файлов BMP или ICO одним файлом. например. каждый из которых может быть идентифицирован по его номеру в списке или по ключу.OCX и может быть встроен в форму приложения для быстрого поиска даты. Этот элемент управления не видим в процессе работы программы. Элемент управления сообщениями (M A PI M essages Control) позволяет пользователю выполнять различные почтовые функции. связанные с той или иной датой.представляет элемент управления для вывода растровых изображений (P ictu re Clip C o n tro ls). изображение.converted to PDF by HupBaH9I • Определять необходимость передачи данных можно и с помощью проверки значения свойства C om m Even t после выполнения программой определенных действий. в виде таблицы с дополнительным текстом для пояснения к каждому пункту.

Изображения для кнопок. Следующий элемент управления Windows 95 находится в файле RICHTX32. Каждый объект Tab имеет свойства. размещенными в динамической библиотеке Microsoft Windows COMMDLG.OCX содержатся 16. Элемент управления RichTextBox поддерживает большинство свойств. Объекты Button поддерживают различные стили. так и вертикально. использование которых должно быть взаимоувязано.содержит коллекцию объектов Button.DLL. В отличие от элемента управления TextBox. выбор цвета и шрифта. включающей объект RichTextBox.converted to PDF by HupBaH9I списке). По принципу действия он аналогичен объекту PageFrame в Visual FoxPro. Основное назначение элемента управления Slider . Вы можете располагать этот элемент управления как горизонтально. которые позволяют форматировать выделенный в этом объекте текст: изменять начертание шрифта. сохранение и печать файлов. используемых стандартным элементом управления TextBox. Доступ к страницам основан на том.и 32-разрядные версии элемента управления Com m onDialog Control. так и в ASCII формате. За счет использования методов LoadFile и SaveFile элемент управления RichTextBox позволяет непосредственно считывать и записывать данные в файл.R ich TextB o x. Строка состояния может быть разделена максимум на 16 объектов Panel. Пользователь может также устанавливать вид выравнивания текста. Элемент управления T a b S trip предназначен для создания многостраничных форм с вкладками. Соответствующее диалоговое окно появляется на экране путем выполнения соответствующего метода. то есть не может включать другие объекты. содержащее движок со шкалой. хранятся в объекте ImageList. Элемент управления S ta tu s B a r .OCX и COMDLG32. Пользователь может перемещать движок. Каждый объект Panel может содержать определенный текст и (или) изображение. После включения в форму в режиме проектирования этот элемент управления изображается в виде значка. а стиль PlaceHolder допускает использование любых других элементов управления типа раскрывающегося списка. как дата. объект RichTextBox имеет ряд свойств.это окно. Файл DBGRID32. Элемент управления P ro g re ssB a r позволяет визуально контролировать длительность выполнения какого-то действия и представляет собой прямоугольник с движущейся в зависимости от скорости выполнения процесса полосой. Элемент управления Too lb ar . перетаскивая его. п. Заголовки вкладок TabStrip могут включать помимо текста также изображения. Поддерживается также открытие файла путем его перетаскивания. Редактируемый текст может сохраняться как в RTF.строка состояния . но не является контейнером. например из Windows 95 Explorer.движ ок . допускающие создание группы кнопок. Например. который позволяет создать таблицу для просмотра и редактирования данных объекта Recordset. Элемент управления S lid e r . В то же время этот объект оценивает только относительную длительность процесса без оценки каких-либо численных характеристик. время. размещаемых на панели инструментов.позволяет создать окно. В связи с тем. событий и методов. как открытие.OCX и обеспечивает возможность создания окна для работы с форматированным текстом . Этот элемент управления обеспечивает интерфейс между пользовательским приложением и функциями. В файлах COMDLG16. Наличие панели инструментов является практически стандартным требованием к приложению Windows и обеспечивает пользователю быстрый доступ к часто выполняемым функциям. в котором могут отображаться различные данные о текущем состоянии приложения. щелкая мышкой с разных сторон движка. обычно располагающееся внизу формы. используя объект Tab. Дополнительно вы можете использовать одно из семи значений свойства Style для автоматического отображения таких данных. или использовать клавиатуру.OCX содержит элемент управления DBGrid. используемых для создания набора элементов управления в вашем приложении. Метод SelPrint позволяет распечатать весь текст или фрагмент данных на принтере. Следующие объекты ActiveX позволяют эффективно организовать работу с данными. что объект RichTextBox является связанным объектом. что TabStrip содержит несколько объектов T ab из коллекции T ab s. Можно даже перетащить фрагмент текста из Microsoft Word и продолжить работу с ним в форме вашего приложения. вы можете включить в TabStrip элемент управления ImageList и затем использовать изображения на конкретной вкладке. но не имеет ограничения на размер выводимых с его помощью данных. его цвет и использовать надстрочные и подстрочные индексы. который обеспечивает набор стандартных диалоговых окон для таких операций. ассоциированные с его текущим состоянием и внешним видом. Вы можете легко включить в свою форму необходимые стандартные диалоги путем простого добавления в нее объекта CommonDialog и задания для него требуемых свойств. которые составляют коллекцию P an els.панель инструм етов . Возможность привязки объекта DBGrid к элементу управления Data позволяет автоматически заполнить заголовки . Элемент управления Toolbar имеет богатый набор свойств. методов и событий для эффективного управления панелью инструментов во время работы программы. состояние триггерных клавиш на клавиатуре и т.выбор дискретных значений в каком-либо диапазоне. вы можете ассоциировать его с элементом управления Data для отображения данных из полей примечаний.

расположить вкладки более чем в одну строку. установить размеры каждой страницы.Spinner. При вводе данных курсор автоматически минует отображаемые символы шаблона. Свойства Text и Value объекта Colum n содержат значение текущей ячейки. каждая из которых может являться. а так как в этом случае будет нарушен тип допустимого символа (число).разрядные версии еще одного объекта Grid . который обеспечивает доступ к внешнему источнику данных с помощью технологии ODBC. то попытка ввести символ "B" перед "A" вызовет смещение символа "A" вправо. которые отслеживаются непрерывно. Файл DBLIST32. то будет сгененирировано событие ValidationError. Объект SSTab содержит страницы. создать элемент управления для перемещения между записями.DBGrid. Если вы опишете шаблон ввода. Этот элемент управления обеспечивает очень легкий путь создания многостраничных диалоговых окон в одной форме.OCX и MSMASK32. широко известного среди программистов под жаргонным названием "термометр". объектомконтейнером для любых других элементов управления. В файлах MSMASK16. например. В файлах SPIN16. каждое положение символа будет контролироваться по допустимому типу. С версией Visual Basic масштаба предприятия поставляется объект для доступа к внешним данным . если задан шаблон "?# # # " и текущее отображаемое значение "A12. выбрать требуемый стиль оформления. то он будет автоматически перенесен на следующую строку в той же ячейке. которые не будут соответствовать шаблону.OCX и SPIN32. что не требуют использования метода AddItem для формирования списка. исключая связанные или внедренные объекты. .OCX вы можете найти элемент управления Sp inButto n сч етч и к . От последнего Gauge отличается более точными показаниями. станет также возможным использование заранее определенных символов. В каждой ячейке DBGrid может отображаться как текст.OCX. например. Например. Используя элемент управления MSRDC вы можете: • • установить соединение с источником данных.для ввода дискретных значений.M asked Edit Control. Эти элементы управления автоматически заполняют список из полей одного элемента управления Data и могут передавать данные из выбранного поля во второй элемент управления Data. Во время работы программы пользователь может перемещаться между страницами с помощью клавиш C trl+ Tab. Объект DBGrid обеспечивает возможность программной ссылки на нужную ячейку. Этот элемент управления обеспечивает интерфейс между объектами для доступа к внешним данным . так и изображение.OCX содержится элемент управления для ограничения вводимых данных по шаблону или их форматированного вывода на экран .OCX включает два элемента управления для вывода данных в виде списков D B List и DBCom bo.OCX и GAUGE32. используя свойство Mask. Этот элемент управления по своим возможностям аналогичен рассмотренному ранее стандартному объекту Visual FoxPro .". Элементы управления DBList и DBCombo отличаются от стандартных элементов управления ListBox и ComboBox тем.OCX и TABCTL16. который может использоваться для визуального контроля длительности выполнения какого-то процесса аналогично уже описанному элементу управления Progress-Bar. В файлах GAUGE16. Этот элемент управления по использованию аналогичен стандартному элементу управления TextBox. В файлах GRID32. используя свойства MSRDC. такие. заключение междугородного телефонного кода в скобки: (812). независимо от их установки в других колонках. установить для вкладок соответсвующие заголовки или изображения. расположенных в экранной форме. Если текст слишком большой.OCX содержатся соотвественно 32. тип рамки. Элемент управления DBGrid содержит коллекцию Colum ns для формирования набора колонок.M icrosoft Rem ote Data Control (MSRDC). для редактирования.и 16. Разнообразить пользовательский интерфейс вам поможет использование следующих объектов ActiveX. как скобки в предыдущем примере. Каждая колонка поддерживает свой шрифт. вы можете: • • • • • задать число страниц. Попытка ввода символов. например. цвет и другие атрибуты.M icrosoft Grid Control.OCX содержатся 16.и 32-разрядные версии элемента управления S S T a b . Это шкальный индикатор. который находится в файлах TABCTL32. чтобы разместиться по длине в ячейке. Альтернативой объекту TabStrip являются 16. в свою очередь. сгенерирует событие ValidationError. Используя соответствующие свойства.и 32-разрядные версии элемента управления G auge.Remote Data Objects (RDO) и элементами управления для отображения данных.converted to PDF by HupBaH9I колонок на основании данных объекта Recordset.OCX и GRID16. а также поддерживают автоматический поиск без необходимости написания дополнительного кода. По своей функциональности он в основном аналогичен вышеописанному объекту .

Подробнее об использовании объектов для доступа к внешним данным вы прочитаете в главе 8.. как это видно на рис. 5.8 показана эта панель инструментов с описанными выше элементами управления. а затем в автоматически появляющемся диалоговом Insert Object окне выбрать опцию Insert Control. получать и отображать данные о текущем положении указателя записи. . Из появляющегося списка можно выбрать соответствующий элемент управления. OCX I__________________________________________________________ Рис. Соответствующий объект вы затем можете поместить в проектируюмую форму. обновлять данные в источнике после их изменения пользователем. □ FOXHWJD OLE Control module □ Medisview Э. Ш \ Custom CorvtroJs 6 vatlnbl0 Controls: OK Bemud Иу. 5. выбрав его значок на панели инструментов ToolBox. В Visual Basic подобную процедуру вы можете выполнить в любой момент работы над приложением. выбрав объект OLE Container Control.0 13 Micro sott Comm Control 0 Micro salt Common Dialog Control 0 Microsoft Data Bound List Controls П Microsoft Date Oultine Co ntro 11. 5.7. r RssyH-------Inserts a new Wubuiton Confraf control into your L k bfc document Рис. 5.7).6.41 OLE Control 0M icroH elp Gauge Control D MicroHelp Key Slate Control 0 Microsoft Access Cetendar Control 7.. В меню Tools выберите команду Custom Controls.6.рвх Data ______ ___ Gnd ____ ____________ Cancel □ Crystal Report Control □ Desaware Animated Button Control gnowse. выберите из появляющегося списка нужный объект (рис. На рис. 0 In-sort O bject Contrd JypBj OK nil ititwn Contra С Creale Ngw С Creeie (ram Ejte Insert Contra I Apex Data Bound Grid Control Calender Control Common Dialogs Control CtysteJ Report Control Data Outline Coniroi 1 1 FMfflb Control Cancel A Add Coniroi.1 И Micro Soft Grid Control 0 Microsoft MAPI Controls 1Э Micro soft Masked Edit Control Help ■Show------------------- Г 1лsenable Objects F £ontrals Г ^elected items On^ Г Apex Data Bourtd Grid-----------------------------------------Location: C:\WI NDOWS\SYSTEMtf)BGRlD3£. В Visual FoxPro любой установленный на вашем компьютере объект ActiveX вы можете включить в форму. 5.converted to PDF by HupBaH9I • • • передавать данные из текущей строки в соответствующие элементы управления.

не выглядело бы столь привлекательным. если бы программист не мог присваивать их или менять в зависимости от условий работы пользовательского приложения. он будет выполнен и дальнейший поиск прекратится. например щелчком мыши на объекте или нажатием клавиши при вводе данных. Если для данного события реакция элемента управления не описана. а не для формы. При управлении объектами-контейнерами следует придерживаться следующих правил: • • Объекты-контейнеры не выполняют код для событий. которые имеют объекты. а также могут быть вызваны принудительно из программы или сгенерированы операционной системой. то надо говорить о последовательности событий. При возникновении события приложение выполняет определенные для этого события действия.1 G a jg e Рис. Последовательность возникновения событий жестко определена. Например. При работе с объектом-контейнером включенные в него объекты имеют свои события.converted to PDF by HupBaH9I CommonDialog ■ T ab Slrip TreeView DBList PictineClip MSComm Tool Bar ImageList SHQG ЕИПЕЕН Н Ё ПЭЕИ Ш В1 eiEI . Программист всегда может либо переопределить эти действия. то объект активизируется. При запуске программы REGSVR32 имя файла OCX надо указать в качестве параметра. приложение ищет код для данного события в более высоком уровне классовой иерархии. либо дополнить их. PROCEDURE Object.8 . например. генерируемые для объектов приложения. Как только такой код будет найден. вызываемые действиями пользователя. События генерируются системой при выполнении каких-либо действий пользователя. Управление событиями Все многообразие свойств. которые распространяются на наибольшее число объектов. с помощью программы REGSVR32. Эта программа находится в директории SAMPLES\OLE Visual FoxPro..Л .. Param 2. DBCombo Outline Calendar- SSTab Status Bar ■ LislView R ich T ex tB o x ProgressBar ■Slider Control MARI Sessioni MAPI Messages Grid MaskEditBox D BG rid D iS 3 SpinButton---. Если рассматривать события с точки зрения управления каким-либо объектом.Init [LPARAMETERS Param1. которые происходят с момента его создания до уничтожения. если в форме пользователь щелкает мышкой на каком-либо объекте.EXE. 5 . пользователь щелкает мышкой на кнопке управления в форме. которые вы захотите использовать. с помощью которого можно выполнить код более высокого уровня. то выполняется событие Click и обрабатывается соответствующая процедура для данной кнопки. и если... 5. В этом случае вам придется вручную зарегистрировать те OLEобъекты. Расширить возможности управления объектами за рамки определений.] . написав соответствующий код в процедуре для данного события. Разговор о событиях начнем с трех событий.3. В этом параграфе мы познакомимся и научимся заставлять программу реагировать на события. если действия для этих событий предусмотрены во включенном в него объекте. и призваны события. Визуальные объекты и элементы управления в Visual Basic с подключенными компонентами ActiveX Элементы управления OLE самого различного назначения в виде файлов OCX можно создать с помощью Control Development Kit в Microsoft Visual C++ или с помощью программного обеспечения других фирм. В этом случае при разработке приложения в Visual FoxPro не забудьте про оператор "::". устанавливаемых при их создании.

Например. которому оно соответствует. с помощью которого будем выводить данные ADD OBJECT grdCustomer AS Grid WITH . которые должны произойти при наступлении события. в Visual Basic имеет следующую структуру: Private Sub ObjectName_EventName(<<Параметры>>) <<Описание переменных и констант>> <<Операторы>> End Sub Имя события указывается после имени объекта.F. oFrm = CREATEOBJECT("frmLook") && Создаем объект формы IF type("oFrm") != "O" RETURN ENDIF oFrm. показывает. но нет полной радости у программиста. В Visual FoxPro упомянутое выше событие называется Init. Top = 2 2 0 . Сказанное выше правильно для всех рассматриваемых в книге средств разработки. Событие Init всегда выполняется сначала для объекта. то следующий пример. п. Обычно событие Init используется для получения параметров из вызывающей процедуры Param1.проверка файла PROCEDURE grdCustomer. включенного в объект-контейнер. если мы создадим форму. в которой собираемся работать с данными из какой-либо таблицы.. Param2. и лишь затем для самого объекта-контейнера. .F. && Закрытие только кнопкой * Добавляем объект Grid. а файла таблицы нет на диске.. и отделяется знаком подчеркивания.Show && Выводим ее на экран READ EVENTS && Включаем состояние ожидания * Описываем класс формы DEFINE CLASS frmLook AS Form ScaleMode = 3 && Координаты в пикселях Width = 320 && Ширина Heigth = 200 && Высота Closable = . При этом процедура для описания действий. и выполнения установочных действий типа считывания нужных данных и т. как в этом случае можно избежать загрузки формы.Click CLEAR EVENT && Отменяем состояние ожидания ENDPROC ENDDEFINE . то объект не будет создан. . ELSE IF USED("CUSTOMER") SELECT CUSTOMER ELSE USE CUSTOMER IN 0 ENDIF ENDIF ENDPROC * Описываем действия при щелчке мышкой на кнопке PROCEDURE cmdExit. а в Visual Basic примерно аналогичное событие называется In itia liz e .Init IF !FILE("CUSTOMER.converted to PDF by HupBaH9I Это первое событие в последовательности событий при создании объекта. Caption = "Выход". RecordSourceType = 1 * Добавляем кнопку для выхода из формы ADD OBJECT cmdExit AS CommandButton WITH . написанный на Visual FoxPro. Если событие Init возвращает значение . Left = 100 * Описываем действия при создании объекта Grid .F.DBF") = MESSAGEBOX("Файл данных не найден!") RETURN . Тогда для события заголовок процедуры должен быть написан так: Private Sub Object_Initialize() В Visual Basic это событие может относиться только к форме и объекту ClassModule. RecordSource = "Customer".

Событие D blC lick происходит.Change.. когда пользователь дважды быстро нажимает и отпускает левую кнопку мыши на каком-либо объекте. или . для события Destroy в Visual Basic существует примерный аналог .T. Это событие обычно используется для выполнения завершающих действий при работе с объектом. Это событие происходит. когда активен элемент управления CheckBox. когда один из элементов управления CommandButton имеет свойство Default. Нажимает клавишу En te r. Нажимает клавишу S p ace (Пробел). обновлять данные при переходе пользователя на новую страницу в форме. Одним из наиболее часто используемых событий для управления работой программы является событие Click. Изменяется значение свойства Value элемента управления CheckBox. Его синтаксис: Private Sub Object_Change([Index As Integer]) Параметр Index позволяет получить номер объекта.UIEnable LPARAMETERS Enabled Параметр Enabled может иметь значение . Когда пользователь выбирает другой объект в форме для дальнейшей работы. PROCEDURE Object. например. только если его свойства Enabled и Visible равны . например. При выборе объекта. если он включен в массив элементов управления. CommandButton или Optionbutton. Следующее событие происходит для каждого объекта. nShiftAltCtrl . Для элементов управления.F.событие Term in a te. для элемента управления происходит событие Pro g ram m aticC hang e. соответственно. текущий объект деактивизируется и для него происходит событие Lo stFo cus. Во время редактирования данных при каждом изменении пользователем значения свойства Value элемента управления происходит событие In te ra c tiv e C h a n g e для редактируемого элемента. равное . Для объектов ComboBox и ListBox это событие происходит также при выборе какого-либо пункта из списка и нажатии при этом клавиши Enter. предусматривающих ввод данных. При привязке каких-либо действий к событию DblClick следует помнить. когда пользователь: • • • • • Щелкает левой кнопкой мыши на элементах управления CheckBox. Аналогично событию Init и его примерному аналогу в Visual Basic .converted to PDF by HupBaH9I Последним событием при существовании объекта является событие D estroy.Initialize.T. на пустом месте формы или в области ввода данных элемента управления Spinner. что стать активным объект может. Если изменение значения произведено из программы.T. Выполняется команда MOUSE.T. для этого объекта выполняется событие G o tFo cu s. на которой расположен объект.KeyPress LPARAMETERS nKeyCode. то есть при установке на него курсора. Нажимает "горячую клавишу". Таким образом. В Visual Basic эти функции приходится выполнять одному событию . или 1 для OptionButton. выполненных с небольшим интервалом. это событие позволяет предпринимать какие-либо действия с элементом управления. что будет свидетельствовать о. Выбирает пункт в списке элементов управления Combobox или ListBox. Следует учесть. размещенного на странице формы (Page). когда выполняются следующие действия в программе: • • • Значение свойства Value элементов управления CommandButton или Optionbutton устанавливается в значение . п. определенную для какого-либо элемента управления. что пользователи не всегда могут четко выполнить данное действие и двойной щелчок может быть воспринят системой как два одинарных щелчка. Событие Click наступает также. запись измененых данных и т. Это же событие выполняется при использовании в программе метода SetFocus. активизации или деактивизации страницы.. когда эта страница активизируется или деактивизируется. при нажатии и отпускании клавиши клавиатуры происходит событие K eyP ress. CommandButton или OptionButton. Его синтаксис в Visual FoxPro выглядит так: PROCEDURE Object.

Следует учитывать. возвращаемым функцией IN K E Y (). если было сдвинуто окно. Таким образом. что ни событие Activate.удерживались клавиши Ctrl и Alt. Для объекта типа List событие When возникает всякий раз..F. Если событие When возвращает . (по умолчанию). В Visual Basic. уделим теперь внимание характерным для этого объекта событиям. Рассмотрим эти последовательности для основных объектов Visual FoxPro. на которые может реагировать приложение.2. Следующий пример позволяет преобразовывать все вводимые в текстовое поле символы в верхний регистр: Private Sub Text1_KeyPress (KeyAscii As Integer) Char = Chr(KeyAscii) KeyAscii = Asc(UCase(Char)) End Sub Помимо этого события в Visual Basic есть еще два события.T.при вводе удерживалась клавиша S h ift. если 6 . совпадающий с кодом. наверное. для текущего элемента управления в Visual FoxPro выполняется событие V alid . Вызов метода Refresh. При создании формы (ее загрузки в память) перед событиями Activate и SetFocus происходит событие Load. Это событие KeyD ow n . выбранного для данного элемента управления. как вы. когда форма перестает быть активна. В связи с тем. а также. которые позволяют отслеживать работу пользователя с клавиатурой. Ctrl . то есть управление передается другому объекту в том же приложении. то этот элемент управления не активизируется. который передается по ссылке. При программировании реакции пользовательского приложения на происходящие события очень важно знать последовательность их возникновения. Событие P aint происходит. Если у вас нет веских причин. уже заметили. В Visual Basic это событие имеет следующий синтаксис: Private Sub Form_KeyPress(Keyasc// As Integer) Параметр Keyascii возвращает числовой A S C II-код. Использование события Paint для некоторых задач может вызывать каскад последующих событий.при ее отпускании... A lt . Изменение любых переменных. то управление передается на этот элемент управления и возникает следующее событие GotFocus. если этот параметр имеет значение 1 .4.converted to PDF by HupBaH9I Параметр nKeyCode возвращает код нажатой клавиши. Перед тем как передать управление следующему объекту.F. Параметр nShiftAltCtrl возвращает признак нажатия дополнительной клавиши. Событие Deactivate также не происходит при стирании формы из памяти .T. значительно меньше и поэтому последовательность их возникновения для отдельного объекта не имеет такого значения. что основным объектом пользовательского интерфейса является форма. когда пользователь перемещается между пунктами в списке. Событие A ctiv ate происходит. Эти события могут обрабатываться совершенно аналогично событию KeyPress в Visual FoxPro. Для набора форм и входящих в него отдельных форм (пусть для примера в набор входят две формы) будет выполняться следующая последовательность событий при его запуске: . ни Deactivate не происходят при передаче управления в другое приложение. которые воздействуют на размер или вид. Если это событие возвращает . Событие D eactivate происходит. Если . событий. то есть с их помощью можно отслеживать нажатие и комбинаций клавиш. избегайте использовать событие Paint в следующих случаях: • • • Перемещение или изменение размеров формы или элементов управления. когда пользователь активизирует ранее не активную форму (щелкает мышкой на форме или входящем в нее элементе управления) или когда вызывается метод Show. Клавиша S h ift имеет код 1. Таким образом. Форма перерисовывается после перемещения или увеличения. Если это событие возвращает значение . то данный элемент управления деактивизируется. когда форма перерисовывается. ранее его закрывающее. При стирании формы из памяти происходит событие UnLoad. то элемент управления остается активным. типа установки свойства BackColor. Для большинства элементов управления в Visual FoxPro перед их активизацией возможность перехода в этот элемент управления проверяется с помощью события W hen.срабатывает при нажатии клавиши и KeyUp . событие Valid можно использовать для проверки допустимости значения.

<<Объекты в Form2>>.Init FormSet.Form1.<<Объекты в Form1>>.Grid.Form1. Это событие сопровождает и каждое перемещение пользователя по клеткам Grid.When Form.When FormSet.) FormSet. для объекта Grid генерируется событие D eleted.Activate FormSet.Form1.Activate FormSet.BeforeRowColChange Form.GotFocus При завершении работы с набором форм выполняется следующая последовательность событий: FormSet.<<Объекты в Form1>>.Init FormSet.DataEnvironment.Unload FormSet. и таким образом.Destroy FormSet.Init FormSet.T. Если пользователь пометил запись для удаления или в программе выполнилась команда D E LE T E . Form2. которое возвращает номер помеченной для удаления записи.Unload FormSet.Init FormSet.converted to PDF by HupBaH9I FormSet.Init FormSet.<<Объекты Data Environment>>. которое возвращает следующий код для идентификации действий пользователя: • • • • 0 1 2 3 - нажата кнопка прокрутки вверх. Form1.Init FormSet.Destroy FormSet. то есть которая является активной.AfterRowColChange Событие BeforeR ow C o lC h an ge возвращает номер колонки.DataEnvironment. Form 1.Destroy FormSet.Load FormSet. любой переход курсора в другую клетку сопровождается двумя событиями: Form. Destroy FormSet.AfterCloseTables FormSet.Destroy FormSet.Load FormSet.Form1.DataEnvironment. Form2.GotFocus FormSet. в которой находится курсор.DataEnvironment.Grid. пользователь щелкнул мышкой на вертикальной линейке прокрутки снизу от движка.Activate FormSet.Destroy При активизации объекта Grid пользователем происходит следующая последовательность событий: Form.Grid.<<Объекты в Form2>>.Deactivate FormSet. Form2.Form1. .Activate FormSet. нажата кнопка прокрутки вниз.DataEnvironment. в которой находился курсор до перехода в новую клетку.<<Объекты Data Environment>>.<<Первый элемент управления>>.Init FormSet. <<Первый элемент управления>>. DataEnvironment.Grid.Form2.Form2.Form2. пользователь щелкнул мышкой на вертикальной линейке прокрутки сверху от движка.Form1.Load FormSet.GotFocus Form.Unload FormSet.Activate FormSet.BeforeOpenTables (если свойство AutoOpenTables = .Form2. Form1.AfterRowColChange Последнее событие A fterR o w C o lC hang e возвращает номер колонки.Form1. При прокрутке данных с помощью линейки прокрутки каждое нажатие на кнопку прокрутки или перемещение движка вызывает выполнение события S cro lled .Form2.

MouseDown. 115.Combo1.MouseUp.1.Text1.When Form1. 117.DownClick && Нажатие на кнопку прокрутки вниз Form1.0.0. а затем вверх и при выборе пункта.0 && Нажимаем клавишу Enter Form1.Combo1.Text1. а затем нажмем клавишу E n te r.1. и будем вводить три символа Rus.GotFocus Form1.Text1.1.Combo1. 1.Text1.BeforeRowColChange Комбинированный список имеет несколько специфических событий.0 && Нажимаем клавишу s Form1.0.Combo1. 76 Form1.92.Combo1.Combo1.48 Form1.Combo1.Combo1.MouseUp. нажатии на раскрывающую стрелку.MouseDown.0 && Нажимаем клавишу u Form1.Combo1.Text1.92.пользователь щелкнул мышкой на горизонтальной линейке прокрутки справа от движка.converted to PDF by HupBaH9I • • • • 4 .Grid.Gotfocus Form1. 76 Form1.Text1.1.0.117 Form1.MouseDown.108.1.KeyPress.29.Click Form1.Text1. 13.0. 0. 5 .1. 6 .0. Если проследить последовательность действий пользователя при активизации комбинированного списка.InteractiveChange Form1.Text1.Combo1. Использование методов .108. 7 . Поэтому рассмотрим последовательность событий для этого элемента управления.When Form.1 && Нажимаем клавишу R Form1.11 Form1.MouseUp.11 Form1.0.LostFocus Для текстового поля при вводе в него данных с помощью возникающих событий мы можем отследить ввод каждого символа. При переходе к другому элементу управления из Grid происходит следующая последовательность событий: Form.UpClick <|>&& Нажатие на кнопку прокрутки вверх Form1.Combo1.Text1.Combo1. и в текстовое поле мы перейдем с помощью мыши.48 Form1. то для этого текстового поля произойдет следующая последовательность событий: Form1.Combo1.Combo1.Text1.InteractiveChange Form1.79.Click Form1.Valid Form1.Grid.Valid Form1. то мы получим следующую последовательность событий: Form1.Combo1. 1.нажата кнопка прокрутки влево. Если текстовое поле Text1 будет размещено в форме Form1.Combo1.MouseUp.MouseDown. нажатии на кнопку прокрутки списка вниз.InteractiveChange Form1.DropDown && Нажатие на раскрывающую стрелку Form1.InteractiveChange && Изменение значения в списке Form1.KeyPress.117 Form1.11 Form1.Combo1.When && Проверка доступности Form1.4.1.88. 0. LostFocus 5.MouseUp.When Form1.Valid Form.Text1.пользователь щелкнул мышкой на горизонтальной линейке прокрутки слева от движка.Valid Form 1.Combo1.When Form1.88. 25. 25.27 Form1.MouseDown.Text1.<<Выбранный элемент управления>>.<<Следующий элемент управления>>.KeyPress.0.Combo1.Text1.Text1. 82.1.KeyPress.GotFocus Form1.нажата кнопка прокрутки вправо.

При необходимости можно задать для объекта новую ширину nWidth и высоту nHeight. nHeight]]]) Позволяет переместить объект в нужную точку. Элементы управления в скрытой форме. nTop [. Object. 0. размеры которой установлены в фокселях. естественно. Например.. . Задний план обычно используется для отображения результатов работы графических методов (рисование линий. 5) Object.SetFocus Позволяет активизировать указанный элемент управления. задайте следующий код: ThisForm. на пятую строку и двадцатую колонку экрана. Причем. указанном в Object. используя метод Object. но доступны для воздействия на них с помощью программы. автоматически обновляются все содержащиеся в ней элементы управления.]) С помощью параметра cName мы задаем имя добавляемого объекта. С помощью aInit1. cOLEClass] [.). на котором он будет основан. которые можно использовать при работе с большинством объектов.]ZOrder([nValue]) Позволяет установить графический уровень отображения указанного объекта.Move(20. Если перемещаемый объект входит в объект-контейнер.Move(nLeft [. а для удаления объекта из коллекции в Visual Basic . то есть если это не базовый класс. cClass [. Обязательным является параметр nLeft. Если объект использует данные. aIn it2. отображаемые на переднем плане. В Visual Basic неким аналогом этого метода может являться метод Add.. Определение класса. использовать их последний вариант поможет метод Object. Refresh который позволяет немедленно перерисовать форму или указанный объект.. nWidth [. который позволяет добавлять объект в коллекцию. мы должны заранее открыть соответствующую библиотеку классов командой S E T C L A S S L IB . остальные должны указываться без пропусков. если вы хотите переместить форму. Control. автоматически обновляется только активная страница Page.. Если мы добавляем OLE-объект. которые равны 0. на основе которого будет создан объект в объекте-контейнере.на заднем. Если nValue равен 0 (по умолчанию). Если мы хотим в Visual FoxPro создать какой-либо объект в объекте-контейнере. Для удаления объекта из его контейнера в Visual FoxPro используется метод R em oveO bject. когда перерисовывается форма. Объекты. Параметр nValue может принимать либо значение 0. aInit1. [Object. то новые координаты указываются относительно левого верхнего угла объекта-контейнера. вывод изображений и т.для отображения объектов. то в этом случае мы должны не создавать его с помощью функции C R E A T E O B JE C T (). которая задается новыми координатами левой nLeft и верхней nTop границами объекта. можно указать с помощью параметра cOLEClass. например в форме. если 2 . то есть если вы задаете ширину объекта. когда перерисовывается страничный блок PageFrame. то должны использовать в методе все параметры. либо 2. д .Hide Скрывает форму путем присвоения свойству Visible значения . aInit2 . перекрывают изображение заднего плана. то объект выводится на переднем плане. можно передать параметры в событие Init создаваемого объекта.converted to PDF by HupBaH9I В этом параграфе мы остановимся на методах. должно быть доступно..метод Rem ove. на основе которого создается объект. то класс. становятся недоступными для пользователя. а передний . а параметром cClass указывем класс. которые могут обновляться во время работы программы.AddObject(cName.F. а добавлять его в объект-контейнер.

Использование имени команды (E D IT . Container. Для OLE-объекта можно использовать метод Object. создавшее объект -4 Активизирует объект при условии. если указан параметр nStyle. то способ вывода формы определяется значением свойства WindowType. выполняется команда. и ее номер увеличивается на 1. По умолчанию параметр nStyle равен 2 (1 в Visual Basic). При этом выводятся средства пользовательского интерфейса для редактирования объекта на месте (on-place editing) -5 Создает окно для объекта и загружает необходимые для редактирования этого объекта средства. и в этом случае программа ждет. P LA Y и т. Параметр Verb . когда пользователь сделает двойной щелчок мышью на элементе управления. Для прокрутки данных можно использовать метод . определяет способ ее вывода. DoVerb[ Verb] Выполняет команду для указанного объекта OLE. Value [. Колонка с номером nIndex сдвигается вправо. открытых для редактирования Если вы установите для свойства AutoActivate значение 2. Если параметр nStyle не указывается. cClass]) Позволяет в указанном объекте-контейнере присвоить значение Value для свойства cProperty всем размещенным в нем элементам управления или относящимся к классу cClass (не базовому классу Visual FoxPro!). Для Grid могут быть выполнены следующие специфические методы: Gr/'d.) в параметре Verb всегда обеспечивает значительно большую скорость работы. Show([nStyle]) Выводит на экран форму и.это одна из команд. когда пользователь щелчком мыши активизирует объект-контейнер OLE -6 Отменяет все выполненные в процессе модернизации изменения (выполняет действие UNDO) для объектов. Следующий список содержит возможные номера для стандартных команд: Зн а ч е н и е Д ействие 0 Действие для объекта по умолчанию -1 Активизирует объект для редактирования -2 Открывает объект в отдельном окне приложения -3 Для включенного объекта скрывает приложение. Grid. Параметр может также указывать номер в массиве свойства ObjectVerbs. которые часто используются при создании приложения.AddColumn(nIndex) Позволяет добавить колонку в Grid. принятая по умолчанию для данного объекта. O PEN . Если параметр не указывается. д. Упомянем еще несколько специфических для Visual FoxPro методов. задающей выполнение метода Show.converted to PDF by HupBaH9I Object. поддерживаемая всеми объектами и предназначенная для выполнения в объекте-контейнере. то объект-контейнер OLE автоматически активизирует объект. когда пользователь завершит работу с формой или когда форма будет выгружена из памяти. следующий после строчки. До этого момента переход в другую форму или меню невозможен. что его активизация поддерживается. Grid. то форма является независимой и выполняется код. Если параметр nStyle равен 1 (0 в Visual Basic).ActivateCeN(nRow. чем использование номера команды.DeleteColumn[(nIndex)] Позволяет убрать текущую или указанную посредством номера nIndex колонку из Grid.SetAll(cProperty. nColumn) Активизирует клетку с указанными координатами номера строки nRow и колонки nColumn.

DoScroll(nDirection) Для выполнения нужного действия аргумент nDirection может принимать следующие значения: • • • • • • • • 0 1 2 3 4 5 6 7 - прокрутка прокрутка прокрутка прокрутка прокрутка прокрутка прокрутка прокрутка на на на на на на на на строку вверх. В Project Manager выберите вкладку Data.2. страницу вправо. обязательно создавайте базу данных. Поэтому в данной главе мы разделим излагаемый материал. . например. во избежание путаницы в головах наших читателей. Visual FoxPro В Visual FoxPro базы данных имеют собственную структуру организации данных и предоставляют дополнительные возможности разработчикам. Visual FoxPro Создание и модернизация структуры базы данных Использование словаря данных Создание и модернизация структуры таблиц 6. использование основных команд FoxPro для программного создания компонентов БД. страницу влево. Здесь же вы можете хранить процедуры и устанавливать постоянные отношения между таблицами. значения полей по умолчанию. который показан на рис. Создание и м одернизация структуры базы данны х После того. используемых в средствах разработки корпорации Microsoft.4. 6. 6. Глава 6 Создание базы данных 6. страницу вверх. Откроется Конструктор БД. строку вниз. как вы спроектировали базу данных.1. В базе данных вы можете использовать расширенное представление данных на уровне таблиц. организацию связей между таблицами и использование индексов. мы коснемся основополагаюших принципов работы с данными. триггеры. MS SQL Server Планирование процесса наращивания Описывая практическую технологию создания БД. Базы данных можно использовать для обеспечения доступа к внешним источникам данных и для создания представлений локальных и внешних таблиц. ее можно создать в интерактивном режиме. Visual Basic 6. используя Project Manager. по описываемым в книге средствам разработки. Нажмите кнопку New. правила на уровне полей и записей. Если вы разрабатываете пользовательское приложение. колонку влево. В этом параграфе мы рассмотрим: • • • визуальные методы создания БД и ее компонентов. На этом же рисунке вы найдете необходимые пояснения для работы с ним. страницу вниз.converted to PDF by HupBaH9I Grid. затем в списке пункт Databases. используя диалоговые средства Visual FoxPro или команду C R EA TE D ATABASE. Access 6.1. колонку вправо.3.1.

BtoiH FuseeSurai.s h k .. Команды и функции. которые вы можете использовать для программного управления базами данных и их объектами..... Окно и панель инструментов Конструктора БД в Visual FoxPro Вновь созданная база данных пуста и не содержит никаких таблиц и других объектов. В табл. Aid ТоЫа. 6 . появляющееся при нажатии правой кнопки мыши Открыть окно редактирования хранимы к процедур О ткры ть окно Bnow&e для данной таблицы Изменить структуру таблицы Создать новый попальный просмотр Создать но&ый внешний просмотр Убрать таблицу на ВД Добавить уже существующую таблицу в &Д Создать 1'Ог>уютаблицу Рис. Таб ли ц а 6 . N m Remote Y l* « „ N ew LoralViBW. управляющие базами данных и их объектами ADATABASE() CREATE VIEW MODIFY CONNECTION ADBOBJECTS() DBC() MODIFY DATABASE ADD TABLE DBGETPROP() MODIFY PROCEDURE ALTER TABLE DBSETPROP() MODIFY STRUCTURE APPEND PROCEDURES DELETE CONNECTION MODIFY VIEW CLOSE DATABASE DELETE DATABASE OPEN DATABASE COPY PROCEDURES DELETE VIEW PACK DATABASE CREATE CONNECTION DISPLAY DATABASE REMOVE TABLE CREATE DATABASE INDBC() SET DATABASE CREATE SQL VIEW LIST DATABASE VALIDATE . 6. 2fi Всплывающее меню.1 ... W » j в|д! й.ilore ийп (л з й м N c 4 |..plH Vi qih | Г□> ГгЬ El* вчп №*w loci* e»aww1 решим» адьсЫ и * » ______________ p|t»|u|а|а|. F M sm n llbl Ifflh'^hV-.converted to PDF by HupBaH9I Vfciim конструктора бваЫ д ан ч ы * Раскрывающийся список открыты* баз данных wic Ш■.>| ^1-1 t [ l « b .1 . Hefp.|*1 *я|»ПМ ^ СшйЬаьв t>esEgner Am a.1 приведены команды и функции.

если база данных не была явно открыта до этого. базы данных. Вы можете включить таблицы в базу данных. Удалить базу данных с диска можно с помощью Project Manager или командой D ELETE . однако Visual FoxPro не устанавливает Auto_Store в качестве текущей базы данных. В то же время не представляет труда использовать информацию и из таблицы.файла DBF. включенного в какую-либо БД. Если данные из какой-то таблицы необходимо использовать в нескольких БД. При этом если таблица включена в БД. но и изменяет обратную связь. выполнив следующие команды: OPEN DATABASE auto_store && Открывается база данных && AUTO_STORE ADD TABLE salesman && В нее добавляется таблица SALESMAN Чтобы сделать таблицу частью базы данных. Visual FoxPro изменяет заголовок файла таблицы. для исключения дублирования информации наиболее простой путь . включите опцию DELETE в команду REMOVE TABLE. расположенной в другой БД. то она не может быть включена ни в какую другую БД. Для таблиц. необходимо явно включить ее в базу данных. Изменение структуры свободной таблицы не вносит ее автоматически в базу данных. Данные из существующего файла DBF можно использовать. включающее нужную таблицу. выполните следующие команды: USE Auto_Store!Salesman BROWSE В предыдущем примере база данных Auto_Store открывается автоматически при выполнении команды U SE. можно установить ряд свойств. что важной особенностью Visual FoxPro является то обстоятельство. либо в виде таблицы базы данных . которыми не могут обладать свободные таблицы.не включать эту таблицу ни в какую БД. поскольку эта информация связывает таблицу с владеющей ею базой данных. создав их внутри открытой базы данных или добавив туда уже существующие таблицы. выделите имя таблицы и выберите команду Rem ove из меню D atab ase. Если вы работаете в Конструкторе баз данных. Этот путь и имя файла базы данных называются обратной связью. Символ "!" надо использовать для ссылки на таблицу из другой. Как получить доступ к таблице из другой базы данных? Создайте в базе данных представление. Открытая таким способом база данных автоматически закрывается. когда вы закрываете таблицу. Процесс удаления таблицы из базы данных не только удаляет ссылку на таблицу и ассоциированную с ней информацию из словаря БД Visual FoxPro. даже если сделать это при открытой базе данных с помощью команды M O D IFY STRU CTU R E. Не забудьте. затем выполните команду Add. Это такие свойства. не ассоциированный ни с одной из баз данных. Когда вы добавляете таблицу в базу данных. Если вы хотите одновременно удалить таблицу из базы данных и DBF-файл с диска. если вы хотите просмотреть таблицу Salesman из базы данных Auto_Store. Или получите доступ к таблице с помощью команды U SE и разделительного символа "!". Вы можете удалить таблицу из базы данных интерактивно или с помощью команды REMOVE TA B LE . правила на уровне полей и записей и постоянные отношения между таблицами. При удалении таблицы из базы данных вы можете и физически удалить файл таблицы с диска.converted to PDF by HupBaH9I DATABASE CREATE TABLE При создании БД не забудьте. ассоциированных с базой данных. не включая его в базу данных. Программным путем то же самое можно сделать. представляющей собой файл DBF. как триггеры. а оставить ее свободной. чтобы отметить таблицу как свободную. что вы можете ассоциировать таблицу только с одной базой данных. Последовательность действий по удалению таблицы Salesman из БД Auto_Store программным путем показа в следующем примере: OPEN DATABASE Auto_Store REMOVE TABLE Salesman Удаление таблицы из базы данных автоматически не удаляет файл таблицы. Как добавить существующую таблицу в базу данных? В Project Manager выберите пункт Tables из вкладки АН или Data. включая туда информацию о пути и имени файла базы данных. Например. В Project Manager выберите имя таблицы и нажмите кнопку Remove. не текущей. что каждая таблица может существовать в одном из двух состояний: либо в виде свободной таблицы.

если она была открыта одним из следующих способов: • • В Project Manager в расширенном режиме просмотра содержимого базы данных. автоматически становятся частью текущей базы данных. в диалоговом окне Use выберите опцию Other. Если одновременно открыто несколько БД. Еще один способ закрыть базу данных и другие открытые объекты . Закрыть базу данных можно в Project Manager или командой C LO SE D ATABASE. В следующем примере закрывается база данных Auto_Store: SET DATABASE ТО Auto_Store CLOSE DATABASE Оба указанных способа закрывают базу данных автоматически. Команды и функции. В Project Manager выделите имя базы данных и выберите команду Close. поиск продолжается в пути по умолчанию. и ее имя отображается на экране с помощью функции D B C (): OPEN DATABASE Auto_Store OPEN DATABASE Connect_Data OPEN DATABASE Count_Data SET DATABASE TO Auto_Store ? DBC() В Visual FoxPro одна или несколько баз данных открываются автоматически при выполнении запроса или формы. Все уже открытые базы данных так и остаются открытыми. Вы можете объявить текущей любую из открытых БД с помощью раскрывающегося списка на стандартной панели инструментов Visual FoxPro или командой S E T DATABASE.converted to PDF by HupBaH9I DATABASE. Для того чтобы не потерять управление в программе. Например. В следующем примере открываются три базы данных. Для удаления базы данных с диска всегда используйте один из вышеуказанных методов. старые не закрываются. либо сошлитесь на таблицы в закрытых базах данных. Все таблицы или другие объекты. запущенной в собственной Data Session. Выполнение команды C LO SE DATABASE в окне Command не приведет к закрытию базы данных. которые вы создаете. Формой. оперируют с текущей базой данных. и вы не сможете их использовать. В этих случаях БД остается открытой до тех пор. Команда D ELET E DATABASE не удаляет файлы таблиц с диска. Как открыть несколько баз данных? В Project Manager выделите имя базы данных и нажмите кнопку Modify или Open. Если объект не найден. вы можете установить текущую базу данных и выбирать таблицы из нее без указания конкретной ссылки. Когда база данных открыта. первая объявляется текущей. останутся ссылки на уже несуществующую БД. Если вы хотите одновременно с базой данных удалить и файлы таблиц. то в таблицах. как это было показано ранее. приведенные ниже команды всегда найдут таблицу Model в базе данных. а последняя открытая БД становится текущей. явно объявите текущую базу данных. принадлежащих БД. в зависимости от вашей цели. если таблица Model ассоциирована с базой данных Auto_Store. В Visual FoxPro текущая база данных используется в качестве первичной области видимости для именованных объектов типа таблиц. Когда вы открываете новую базу данных.включить предложение ALL в команду C LO SE. а только помечает их как свободные. В приложении Visual FoxPro можно использовать несколько баз данных одновременно. OPEN DATABASE Auto_Store . включите опцию DELETE TABLES в команду D ELET E DATABASE. в которых используются несколько баз данных. любые запрашиваемые объекты типа таблиц. Если вам нужна таблица. такие как ADD T A B LE и D B C (). Или последовательно используйте команду OPEN DATABASE. Удаление базы данных с помощью диспетчера проектов или по команде D ELET E DATABASE автоматически обновляет обратные связи в файлах таблиц базы данных. не входящая в открытую базу данных. связей ищутся сначала в текущей базе данных. Если вы удалите БД с помощью какой-нибудь утилиты работы с файлами. Для этого либо одновременно откройте все требуемые вам БД. пока она не будет закрыта в Project Manager или пока не будет закрыта соответствующая форма. манипулирующие с открытыми БД. представлений. Как выбрать таблицу из текущей базы данных? Выполните команду U SE со знаком вопроса "?" В диалоговом окне Use выберите нужную таблицу.

Не изменяйте системные поля в файле DBC. В этом файле хранится вся информация о базе данных. индексного тега. Как добавить поле к файлу DВС? 1. Однако ссылки на таблицу только по ее имени могут значительно повысить производительность приложения. В следующем примере открывается окно просмотра. включая имена файлов и объектов.это визуальное представление структур таблиц и установленных отношений между ними. удаления таблиц из базы данных. DBC EXCLUSIVE MODIFY STRUCTURE При добавлении нового поля в файл базы данных начинайте имя этого поля с символов "U_" для обозначения поля пользователя. изменения структуры таблицы. Когда вы создаете базу данных. Конструктор баз данных является концептуальным представлением схемы базы данных. где вы можете добавить поле в файл AUTO_STORE . Файл базы данных содержит записи для каждой таблицы. Любая ошибка при изменении файла DBC может разрушить базу данных и привести к потере информации. CLOSE DATABASE Auto_Store USE AUTO_STORE. В каждом файле DВС имеется поле примечаний с именем User. ассоциированных с ней. поскольку в Visual FoxPro доступ к именам таблиц из базы данных осуществляется гораздо эффективней. добавив туда поля. добавления существующей таблицы в базу данных.DBC: USE AUTO_STORE. Схема открытой базы данных отображается в окне Конструктора баз данных. вы можете пролистать файл базы данных. если вы не знакомы со структурой файла DBC. представления. содержащая все хранимые процедуры базы данных. Любые такие изменения могут нарушить . Откройте файл DВС для монопольного доступа командой USE. Visual FoxPro создает и открывает для монопольного использования файл с именем БД и расширением DВС (DataBase Container). В Конструкторе баз данных панель инструментов Database можно использовать для создания новой таблицы. Можно сделать это. индекса. Выполните команду M O D IFY STRU CTU R E. Вы можете также расширить файл DВС. выполнив команду U SE для файла DBC неоткрытой базы данных. если вас не устраивают изменения в местонахождении таблиц. имеющего расширенные атрибуты. DBC EXCLUSIVE BROWSE Не используйте команду BRO W SE для модификации файла базы данных. Хранятся только пути к файлам таблиц. в котором вы можете хранить собственную информацию о каждой записи базы данных. установленных отношений и связей. ее поиск вне базы будет происходить в пути по умолчанию. проверить базу данных и даже расширить файл DВС. куда выводится содержимое файла базы данных Auto_Store в табличном виде. Для изменения структуры файла DBC вы должны открыть его для монопольного использования. чтобы открывать ее вне зависимости от ее принадлежности к какой-либо базе данных. чем по полному пути файла. В следующем примере открывается Конструктор таблиц. чтобы удовлетворить свои собственные потребности разработчика. посмотреть схему. Сами объекты верхнего уровня типа таблиц или полей в файле DBC не хранятся. 2. В файле хранится и запись. однако вам может потребоваться просмотреть содержимое файла базы данных непосредственно. Всегда можно указать полный путь к файлу таблицы. Схема базы данных . Это поможет вам избежать конфликтов с любыми возможными изменениями структуры файла DBC. а также записи для каждого поля таблицы или представления. Для того чтобы увидеть структуру базы данных.converted to PDF by HupBaH9I ADD TABLE C:\MYPROJECT\MODEL. Здесь же вы можете редактировать хранимые в базе процедуры. ассоциированных с базой данных. например.DBF USE Model В следующем примере поиск таблицы Body производится в текущей базе данных: USE Body Если таблица Body не принадлежит текущей базе данных.

Вы можете создавать хранимые процедуры для обработки информации в базе данных. Заголовки полей. Хранимые процедуры используются. Постоянные отношения между таблицами базы данных. затем нажмите одну из кнопок: New. отображаемых в окнах просмотра и в виде заголовков столбцов сетки. Комментарии для каждого поля. что строки файла базы данных хранят правильные метаданные о базе. Хранимая процедура представляет собой код Visual FoxPro. Аппарат поддержания ссылочной целостности позволяет избежать следующих неприятных ситуаций: • • Добавления записей в подчиненную таблицу. Хранимые процедуры. такие как длинные имена полей. Локальные и удаленные представления. редактирования или удаления хранимой процедуры в Project Manager выделите имя базы данных. если вы меняете местоположение базы. правила на уровне полей и записей. Вы можете проверить целостность базы данных с помощью команды V A L ID A T E DATABASE. Правила на уровне полей и правила на уровне записей. в качестве функций пользователя. Эти процедуры оперируют только с данными конкретной базы данных. Для этой же цели в Конструкторе баз данных выберите из меню Database команду Edit Stored Procedures. записанный в файле DBC. поскольку вам не нужно больше управлять файлами процедур пользователя отдельно от файла базы данных. И спользование словаря данны х Базы данных Visual FoxPro используют словарь данных. Связи с удаленными источниками данных. триггеры. который повышает эффективность разработки и использования базы данных и освобождает вас от необходимости писать собственные программы обеспечения правил на уровне полей и записей или проверки уникальности значений первичных ключей. Первичные ключи и ключи . первичные и ключикандидаты. но становятся доступны в процессе создания таблицы или представления. значения по умолчанию. таблицы и базы данных.converted to PDF by HupBaH9I целостность базы данных. в основном. Поддержание ссылочной целостности предусматривает построение набора правил для сохранения установленных отношений между таблицами при вводе или удалении записей. Для создания. код этой функции записывается в файл DBC и автоматически перемещается с ней. хранятся в файле DBC. Словарь данных Visual FoxPro позволяет создавать следующие элементы: • • • • • • • • • • • • Длинные имена таблиц. Значения полей по умолчанию. Хранимые процедуры загружаются в память во время открытия базы данных и выполняются намного быстрее. Длинные имена полей. на которые можно ссылаться в правилах уровня полей или записей. Использование хранимых процедур повышает переносимость приложений. Триггеры. Изменения значений в главной таблице. В любом случае откроется текстовый редактор Visual FoxPro. если это изменение приведет к появлению не связанных ("одиночных") записей подчиненной таблицы. выберите в списке пункт Stored Procedures. Некоторые элементы словаря. Modify или Remove. .кандидаты . В следующем примере файл базы данных Auto_Store проверяется на целостность: OPEN DATABASE Auto_Store EXCLUSIVE VALIDATE DATABASE Проверка базы данных гарантирует. в котором вы сможете создать или отредактировать хранимую процедуру текущей базы данных. чем процедуры из программных файлов. Когда вы сохраняете функцию в базе данных. если в главной таблице нет записи с соответствующим первичным ключом.

Тип индексного тега или ключа определяет тип устанавливаемого постоянного отношения. прежде чем начнете пользоваться базой данных. постоянные отношения не нуждаются в переопределении при каждом открытии таблиц. Для удаления постоянного отношения между таблицами в Конструкторе баз данных выделите щелчком линию. В отличие от временных отношений. Если не сделать этого. Для работы с Построителем ссылочной целостности откройте Конструктор баз данных. соединяющую две таблицы и обозначающую новую постоянную связь. после совершения которых будет производиться проверка целостности. перезапустите Построитель ссылочной целостности. отмечая выбор отношения между таблицами. Если вы используете Построитель ссылочной целостности. Программно ввести комментарий в базу данных можно с помощью функции D B S ET P R O P (). вы скорее всего получите непредсказуемые результаты. Толщина линии увеличится. если для нее существуют соответствующие записи в подчиненных таблицах. который вы хотите связать. и системные события. или переназначили индексы. Вы можете использовать свои собственные триггеры и хранимые процедуры для поддержания целостности ссылок. для которых необходимо поддерживать целостность. Постоянные отношения .это отношения. Если после этого вы посмотрите на схему базы данных в Конструкторе БД. вы лучше не будете его редактировать? Если вы изменили проект базы данных. например структуры таблиц. поскольку внесенные в проект базы данных изменения никак не отразятся в ее внутренней структуре. то увидите линию. В Конструкторе среды окружения данных (Data Environment Designer) отображать установленные по умолчанию связи для форм и отчетов. Как создать постоянные отношения между таблицами? В Конструкторе баз данных выберите индекс. и перетащите его на индекс связываемой таблицы. соединяющую таблицы.converted to PDF by HupBaH9I • Удаления записей из главной таблицы. После этого нажмите клавишу Del. или включите предложение FOREIGN KEY в команду CR EA TE T A B LE или команду A L T E R TA B LE. В следующем примере вводится новый комментарий для базы данных Auto_Store: . Visual FoxPro сохраняет генерируемый код в качестве триггеров. В следующем примере на экран выводится номер версии базы данных Auto_Store: ? DBGETPROP('Auto_Store'. Вы всегда можете узнать содержание этих свойств с помощью функции D B G ET P R O P (). Построитель ссылочной целостности управляет многоуровневыми цепочками удалений или обновлений. но будьте очень осторожны при попытке его модернизации. и настоятельно рекомендуется в качестве инструмента для поддержания ссылочной целостности. а не на основе связи полей. Постоянные отношения дают возможность выполнять следующие действия: • • • • Автоматически использовать установленные условия объединения в Конструкторах запросов и представлений. открыв с помощью текстового редактора хранимые процедуры для базы данных. 'DATABASE'. Каждая база данных Visual FoxPro содержит свойства Comment и Version. В Visual FoxPro для установки постоянных отношений используются индексы. как это было описано выше. В меню D atab ase выберите R eferen tial In te g rity . То есть вы создаете постоянные отношения на основе индексов таблиц. со стороны "много" вы должны использовать обычный индексный тег или ключ. 'VERSION') Возвращаемое значение является номером версии файла DBC и доступно только для чтения. В Конструкторе баз данных визуально отображать связанные индексы таблиц. Может. Однако Построитель ссылочной целостности Visual FoxPro позволяет определить правила поддержания ссылок. используемые для построения отношений между таблицами. Использовать аппарат поддержки ссылочной целостности. Построитель ссылочной целостности настроит хранимые процедуры и табличные триггеры согласно внесенным изменениям. Вы можете установить постоянные отношения между таблицами базы данных. Для этого используйте опцию COMMENT в функции D B S E T P R O P (). устанавливаемых по команде S E T R ELA TIO N . Вы можете просмотреть код этих процедур. информация о которых хранится в файле базы данных. что позволяет связывать таблицы на основе простых и сложных индексных выражений. которые ссылаются на хранимые процедуры. таблицы. Вы должны использовать первичный или индексный тег-кандидат или ключ со стороны "один" в отношении "один ко многим".

Создание и м одернизация структуры таблиц Созданная база данных сможет хранить полезную для пользователя информацию только после того. 'Это моя первая БД') Функции D B G ET P R O P () и D B S E T P R O P () можно использовать для просмотра и изменения свойств других объектов базы данных.2 .converted to PDF by HupBaH9I ? DBSETPROP('Auto_Store'. Таблицу можно конструировать и создавать в интерактивном режиме с помощью Конструктора таблиц. заголовки полей. 'DATABASE'. Команды создания и модификации таблиц ALTER TABLE CLOSE TABLES CREATE TABLE DELETE FILE REMOVE TABLE Для создания таблицы базы данных в Project Manager выберите базу данных. Таб ли ц а 6 . чтобы вызвать Конструктор таблиц.2. ее также можно создать программно. который доступен из Project Manager или из меню File. о чем мы расскажем позднее. При создании таблиц уточняются типы данных. затем заголовок Tables и нажмите кнопку New. используются команды. приведенные в табл. возможные значения по умолчанию. как в нее будут включены соответствующие таблицы. которые строятся для организации отношений между таблицами. .2. При открытой базе данных вы можете выполнить команду C R EA T E TA B LE. триггеры. Чтобы создавать и модифицировать таблицы из программ. Окно Конструктора таблиц с необходимыми пояснениями показано на рис. 6. а также индексы. 6. 'COMMENT'.

2 . которая открыта в момент создания таблицы. рис 6. Для присвоения таблице базы данных длинного имени в Конструкторе таблиц введите имя в поле Table Name (см. Конструкторе представлений. . что в Visual FoxPro символ "I" обозначает поле с типом данных Integer. Имена таблиц могут состоять из букв. patronymic C(17)) Напомним. которое имеет стандартную длину. например в Конструкторе баз данных. last_name. и она не указывается. можно задать длинное имя таблицы. Новая таблица автоматически ассоциируется с той базой данных. Длинное имя таблицы может содержать до 128 символов и употребляется вместо стандартного имени для идентификации таблицы в базе данных. Visual FoxPro использует длинные имена таблиц (если они заданы) во всех случаях. Если таблица связана с базой данных. Символ "C(17)" обозначает символьное поле с типом данных Character и длиной 17 символов. last_name C(17).2). 6 . а также в заголовке окна Browse. first_name C(17). first_name. В программе используйте предложение NAME в команде CR EA TE . . когда имя встречается в интерфейсе. в Конструкторе запросов. .converted to PDF by HupBaH9I Кнопка перемещения пйрядна расположения полей П р ави ла проверки вводимого значения Рис. цифр и символов подчеркивания и должны начинаться с буквы или символа подчеркивания. patronymic: OPEN DATABASE Auto_Store CREATE TABLE Salesman (key_salmen I. Следующий фрагмент программы создает таблицу Salesman с четырьмя столбцами под именами key_salman.

Первые 10 символов длинного имени запоминаются и в файле DBF в качестве имени поля. В длинных именах не разрешается употреблять пробелы. Использование 10-символьных имен полей для таблицы в составе базы данных невозможно. Для свободных таблиц имена полей могут быть длиной до 10 символов. Можно также установить. В команде C R EA T E T A B LE задается имя того DBF-файла. key_model I. введя в качестве комментария к полю текст "Уникальный ключ модели автомобиля": ?DBSETPROP('Model. . разрешаются или нет значения NULL для поля и значение поля по умолчанию. Если таблица исключается из базы данных. имена полей могут содержать до 128 символов. 'Уникальный ключ модели автомобиля') Для каждого поля таблицы в базе данных может быть задан заголовок. Правила составления длинных имен полей такие же. тип данных и длина поля. символов подчеркивания и должны начинаться с буквы или символа подчеркивания. Например. чтобы общая длина сгенерированных имен составляла 10 символов. что усечения длинных имен до 10 символов не являются уникальными в таблице. то длинные имена ее полей теряются и для ссылок на поля таблицы придется использовать 10-символьные имена. . Следующий фрагмент создает таблицу Automobil и присваивает ей более осмысленное имя Automobile_Passenger_Car: CREATE TABLE Automobil NAME Automobile_Passenger_Car . что содержится в поле key_model таблицы Model. можно пояснить. хранящиеся в файле DBF. 'COMMENT'. Можно использовать длинные имена полей в индексных файлах. если бывшая свободная таблица связывается с базой данных.converted to PDF by HupBaH9I T A B LE . за исключением ограничения длины до 128 символов. который Visual FoxPro создает для хранения новой таблицы. употребляя короткие имена полей. Например. Visual FoxPro запоминает длинные имена полей в записи файла DBC. чтобы облегчить понимание и упростить дальнейшую ее модификацию. так и для свободных таблиц. Однако если индекс был создан с использованием длинных имен полей. исключается из базы данных. для которой он создавался. Например. Visual FoxPro показывает текст комментария при выборе поля в списке полей таблицы в Project Manager. (key_auto I. как и для любых идентификаторов Visual FoxPro. состоящие из первых n символов длинных имен с добавленными к ним последовательными номерами так. 'FIELD'. то длинные имена полей сокращаются до 10 символов. цифр. Visual FoxPro выводит текст этого заголовка в качестве названия столбца для данного поля в окне Browse и в качестве заголовка по умолчанию для колонок объекта Grid формы. следующие длинные имена будут преобразованы в такие 10-символьные: Д линное имя automobile_passenger_car_key_auto Короткое имя automobile automobile_passenger_car_key_model automobil1 automobile_passenger_car_date_issue automobil2 automobile_passenger_car_cost automobi11 Если таблица связана с базой данных. date_issue D.key_model'. для таблиц. связанных с базой данных. Длинные имена могут состоять из букв. cost N(10. то с помощью Конструктора таблиц можно присвоить ей длинное имя. связанных с базой данных. Когда создается таблица базы данных.2)) Для переименования таблиц или для добавления длинных имен таблицам. индекс перестанет работать. Если окажется. Для добавления комментария к полю таблицы базы данных в Конструкторе таблиц введите текст комментария в поле ввода Field Comment или используйте функцию D B S ET P R O P (). то ее поля можно обозначать только длинными именами. а затем таблица. При создании полей таблицы задается имя поля. В этом случае можно удалить индекс и создать его заново. После создания в открытой базе данных таблицы можно добавить к каждому ее полю описание. также используется Конструктор таблиц. . Это имя файла является стандартным именем таблицы как для таблиц. Visual FoxPro генерирует имена. Если таблица удаляется из базы данных. которые создавались без них.

name_model'. 'CAPTION'. 'Наименование модели') В процессе создания полей таблицы производится выбор типов данных. кодов изделий и других чисел. name_fuel_oil C(20)) Наличие значений NULL оказывает влияние на свойства таблиц и индексов. При построении новой таблицы может быть задано. с которыми не предполагается выполнять математические вычисления. где они не допускаются. следующая команда создает и открывает таблицу. Для телефонных номеров. в настоящее время недоступна. Если требуется. 6. Например. Какого рода операции могут производиться над значениями данного поля. следующий программный код создает таблицу. NULL) Можно также определять режим использования значений NULL с помощью команды S E T NULL. связанную с базой данных. В программе используйте предложения NULL или NOT NULL в команде C R EA TE TA B LE. а не тип Numeric. где есть значения NULL. name_body c(20). Объем памяти. отметьте столбец Null для каждого поля таблицы или перед использованием команды C R EA T E T A B LE выполните команду S E T NULL ON. следует задавать тип данных Character. Сможет ли FoxPro выполнять индексирование или сортировку по значениям данного поля (невозможно выполнять сортировку или индексирование по полям примечаний или General). 'FIELD'. то значения NULL будут при копировании рассматриваться или как пустые строки.это число или строка. Например.2). создаваемых в Конструкторе таблиц. то для такого поля можно задать значение по умолчанию. что одно или несколько ее полей допускают значения NULL. но не сможет провести эту операцию с выражениями типов Character или General. для каждого значения типа Currency используется 8 байтов). Как управлять использованием значений NULL для отдельных полей? В Конструкторе таблиц установите или снимите отметку со столбца Null для данного поля. Для того чтобы разрешить использование значений NULL во всех полях таблицы в Конструкторе таблиц. а разрешаются значения NULL в поле name_body: CREATE TABLE body (key_body i NOT NULL. в которой допускаются значения NULL для всех полей: SЕТ NULL ON CREATE TABLE Fuel_oil (key_fuel_oil I. или как нули. что информация. Если столбец Null отмечен. . Например. в таблицу. в которой не допускаются значения NULL в поле key_body. чтобы при добавлении новой записи автоматически заполнялось некоторое поле. Значение поля по умолчанию . если команда APPEN D FROM используется для копирования записей из таблицы. то нет необходимости указывать предложения NULL или NOT NULL. для хранения которых предназначаются поля. Если вы используете поле для размещения уникального цифрового ключа. можно ввести текст "Наименование модели" как заголовок поля name_model в таблице Model : ?DBSETPROP('Model.converted to PDF by HupBaH9I Для добавления заголовка поля таблицы базы данных в Конструкторе таблиц введите текст в поле Caption в разделе Field Properties или используйте функцию D B S E T P R O P (). используйте тип данных Integer. Например. резервируемый Visual FoxPro для хранения значений поля (например. Если команда S E T NULL задана до использования команды C R EA T E T A B LE . рис. Visual FoxPro может находить суммы значений выражений типов Numeric или Currency. которая обычно должна храниться в данном поле или записи. которые служат стандартным заполнением поля при добавлении новых записей в таблицу.. Например. то в поле могут вводиться значения NULL (см. При определении типа данных для поля следует помнить: • • • • Какого рода значения допускаются для данного поля (например. После команды S E T NULL ON Visual FoxPro автоматически отмечает столбец NULL для всех полей. в числовое поле нельзя будет заносить текст). или как пустые поля. Занесение в поле значения NULL констатирует тот факт.

в силу географического положения магазина чаще всего адрес клиентов данного магазина начинается с фразы "Санкт-Петербург". Хранимые процедуры. Значения по умолчанию могут быть заданы для полей любого типа. позволяя пропускать при вводе поля. дающие явные значения в результате вычислений. При удалении таблицы из базы данных удаляются и все связанные с таблицей значения по умолчанию. строк символов. patronymic C(17). 6. отличное от стандартного. д.converted to PDF by HupBaH9I Значения по умолчанию применяются как при вводе данных с помощью формы.3 . tel C(12). . сохраняются и после удаления значений по умолчанию. m Т able D esicjner Jable Name: | customer Database:________________________ " | cApro|ect_book\auto store dbc Table Table Properties. кроме General. first_name C(17). находящееся в группе Field Properties (рис. в Конструкторе таблиц введите значение в поле Default Value. "Санкт-Петербург" Значения по умолчанию могут использоваться для ускорения ввода данных. | Delete [-Field Properties ( address ] Validation Rule: Validation T ext: Default Value: Caption: С-Петербург" | Адрес cAproject_book\custonner. name_customer C(30).3). пока не будут введены другие значения... то задание значения по умолчанию помогает избежать нарушения соответствующих правил проверки полей и записей. juridical L.. или используйте выражение DEFAULT в команде C R EA TE TA B LE. В качестве значений по умолчанию можно задавать как явные значения в виде чисел. В следующем примере создается поле address со значением по умолчанию "Санкт-Петербург": CREATE TABLE Customer (key_customer I. В . last_name C(17). так и выражения. Index Name Type Width DecimalNULL kei)_customer Integer 4 name customer Character 30 address | Character ок d J ~3 tel Character 12 fax Character 12 last_name Character 17 first name Character 17 Cancel insert _d. .. то добавить для него значение по умолчанию можно следующей командой: ALTER TABLE Customer ALTER COLUMN address SET DEFAULT . Для того чтобы задать значение по умолчанию для поля таблицы. для которых не требуется значение. Задание значения по умолчанию в Конструкторе таблиц Предположим.dbf Records: 5 Fields: 10 Length: 145 Рис. comment M) Если таблица Customer уже имеет поле address. Значения по умолчанию могут быть заданы в Конструкторе таблиц или программно. включенной в базу данных. 6 . на которые ссылались удаляемые значения по умолчанию. так и при вводе в окно просмотра с помощью представлений или программно и сохраняются в поле. address C(30) DEFAULT "Санкт-Петербург". fax C(12). дат и т. Если по бизнес-правилам в приложении требуется обязательное наличие значения некоторого поля.

которое будет сравнивать значение. Не следует задавать такие правила проверки полей и записей. будучи установленными для таблицы базы данных.4) или используйте выражение CHECK в команде C R EA T E T A B LE или A L T E R TA B LE. правила проверки распространяются на все приложения. Если тип вычисленного значения несовместим с типом соответствующего поля. Ограничения на уровне поля применяются в тех случаях. В этом случае такую функцию целесообразно записать в хранимых процедурах. и отвергать те значения. связанных с базой данных. когда требуется проверять вводимую в поле информацию независимо от остальной части записи. можно задать правило. Вдобавок. чтобы исключить возможность ввода отрицательного числа в поле. Visual FoxPro производит вычисления для определения типов данных при закрытии определения таблицы. Правила проверки могут задаваться только для таблиц. а также можно определить триггеры. обеспечивающие целостность ссылок или выполняющие какие-либо действия при изменении данных в базе данных. можно задать правила проверки полей и записей. оно отвергается. Для того чтобы обеспечить соблюдение бизнес-правил при вводе данных. Если вводимое значение не удовлетворяет критерию. которые всегда применимы к базе данных независимо от приложения. то генерируется сообщение об ошибке. использующие данную таблицу.converted to PDF by HupBaH9I качестве такого выражения можно использовать и пользовательскую функцию. вводимое в поле key_body. которые предотвращают ввод дублирующих значений полей. чем при использовании выражения VALID при проектировании экранной формы или соответствующего кода в программе. если эти поля и записи являются специфическими для данного приложения. которое должно иметь положительное значение. Правила проверки полей и записей позволяют контролировать ввод информации как в окне просмотра. которые контролируют допустимость вводимых данных в таблицу базы данных. Например. Например. которые не обнаружатся среди допустимых кодов кузовов. можно использовать правило проверки поля. Как задать правило проверки поля? В Конструкторе таблиц введите выражение критерия в поле ввода Validation Rule в группе Field Properties (рис. так и в экранной форме или при вводе данных из программы. Для контроля вводимых данных можно также определить первичные индексы и индексыкандидаты. Можно использовать правила проверки поля и для сравнения вводимого в поле значения со значением из другой таблицы. Правила проверки записей и полей должны обеспечивать целостность данных и бизнес-правила. При прочих равных условиях правила проверки позволяют задать контролирующее выражение лаконичнее. Правила проверки полей и записей контролируют вводимые значения на выполнение заданного критерия. .6. то такое выражение не вычисляется. Если выражение представляет собой определенную пользователем функцию или содержит вызовы таких функций. со значениями из справочной таблицы кузовов.

4 . . Заданное сообщение будет выводиться вместо стандартного сообщения об ошибке в соответствующем диалоговом окне. и значение будет отвергнуто.. Records: 37 Fields: 20 Length: 35 Рис.5). а также определяет сообщение об ошибке: ALTER TABLE Model .. вводимые в поле quantity_drum..converted to PDF by HupBaH9I Ш j j ' T able D esicjner Jable Name: Database:________________________ | model | cApro|ect_book\auto store dbc Table Table Properties.. были не меньше единицы. может быть задано при определении поля. ERROR "Количество цилиндров должно быть больше или равно 1" Если пользователь попытается ввести значение меньше 1. Следующий фрагмент программы вводит для таблицы Model правило проверки.. ALTER COLUMN quantity_drum SET CHECK quantity_drum >>= 1 . содержащее сообщение об ошибке. ALTER COLUMN quantity_drum SET CHECK quantity_drum >>= 1 Если пользователь попытается ввести меньшее значение. были не меньше единицы: ALTER TABLE Model . требующее. 6 . чтобы значения. Index Name Type Width DecimalNULL key_model Integer 4 name_model Character 20 keyjirnn Integer 4 swept_volume Numeric 5 quantity_drunr] Numeric capacity Numeric |2 5 torgue Numeric 5 d OK d Cancel 3 insert V T| | Delete D' -Field Properties ( quan%_drum ] Validation Rule: quantity_drunri=>1 . Default Value: Caption: Field Comment: _ Кол-во цилиндров cAproject_book\model.dbf . Для задания сообщения о нарушении правил проверки полей в Конструкторе таблиц введите сообщение в поле ввода Validation Text в группе Field Properties (рис.. вводимые в поле quantity_drum. Чтобы задать собственное сообщение об ошибке. Validation T ext: "Количество цилнидро . которое выводится при нарушении правил. Сообщение.. 6.4) или используйте необязательный параметр ERROR в выражении CHECK в команде C R EA TE T A B LE или A LT ER T A B LE. чтобы значения. Visual FoxPro выведет диалоговое окно.6. требующее. Задание правил проверки и сообщения об ошибке в Конструкторе таблиц Следующий программный код вводит для таблицы Model правило проверки. можно использовать и выражение SET CHECK в команде A L T E R T A B LE с необязательным параметром ERROR. Visual FoxPro выведет диалоговое окно с заданным сообщением об ошибке и неверное значение будет отвергнуто (рис.

75 Cordoba 2.) или ложь (. для которой эти правила проверяются. COUNT. WHERE MONTH(Sale. поскольку требуется. уникальность первичного ключа. Значением триггера может быть истина (. Не следует включать в правила проверки никаких команд или функций.Т. может привести к повторному срабатыванию правил. Если таблица удаляется из базы данных. A V ER A G E. которые пытаются переместить указатель записи в текущей рабочей области. допустимость пустых значений. UPDATE или DELETE. Триггеры можно создавать в Конструкторе таблиц или с помощью команды C R EA TE T R IG G E R . Триггеры срабатывают после проверки всех прочих ограничений. то есть в той рабочей области. как S E E K . можно задать триггер на операцию Insert для таблицы Sale. UPDATE или DELETE Trigger . PROCEDURE _ _ ri_insert_sale IF DAY(DATE()) = 27 WAIT WINDOW 'Формирование отчета' NOWAIT SELECT * .6 . A PP EN D .INSERT. n PHi«p Flange ftoyer 4.converted to PDF by HupBaH9I jJ E Наименование модеии \Рабочий объем [кдб с м )| К м ч о ^ н т щ р м |Мощность [в с )[У ни Grand Pbix 14 33501 213. S K IP . Триггер устанавливается на операцию INSERT (а не на операцию DELETE или UPDATE).5 . 6 .6).0 F^irg Spur 6. LO CA TE. Для установки триггера в диалоговом окне Table Properties Конструктора таблиц введите в одно из полей ввода .0 Количестве цмлищрсв должно быть больше или равно 1 |ГР' OK kejJ_3wto Hf!p Рис.F.Ё Safrane 3. чтобы триггер срабатывал при добавлении новой записи. Предположим. INTO CURSOR Sale_Month_Current ENDIF ENDPROC i J J J J J m . создавая ошибочную ситуацию. Включение в правила проверки таких команд и функций. В каждый момент времени таблица может иметь максимум три триггера. . Эту функцию необходимо описать в хранимой процедуре: \'y T a b le Properties' Validation Rule: Validation T ext: j IN S E R T T rigger: __ ri_insert_sale() UPDATE Trigger: __ ri_update_sale() D E LE T E T rigger: | __ ri_delete_sale() Рис. таких как правила проверки. При создании триггера можно указать функцию___ri_insert_sale() как триггер вставки таблицы Sale (рис. APPEN D BLA N K. Чтобы этого добиться. 6. содержащей выражение триггера. 6. В отличие от правил уровней полей и записей. то связанные с ней триггеры тоже удаляются. FROM Sale . BRO W SE или R EP LA C E FO R. Для таблицы может быть задано по одному триггеру на каждое из событий: INSERT. при продаже очередного автомобиля 27 числа каждого месяца требуется формировать запрос о результатах продажи за текущий месяц. IN S E R T .date_sale) = MONTH(DATE()). В Visual FoxPro триггеры определяются и хранятся как свойства для заданной таблицы. Такая ситуация называется рекурсией.выражение триггера или имя хранимой процедуры. триггеры не срабатывают для буферизованных данных.). . Программно можно использовать предложение CHECK в команде C R EA TE T R IG G E R . Of ^ITuiJboiGBoxa Т Г У 1У 1 и .

При создании индекса создается файл. чтобы установить порядок записей в таблице. размеры. чтобы установить тот порядок. что и индексируемое поле.MODEL. key_model. Для полей можно добавить. Если требуется перемещаться по записям таблицы. то следует выбрать соответствующий индекс.CDX. Например. так и программно с помощью команды A L T E R TA B LE. чтобы записи в таблице клиентов были отсортированы в алфавитном порядке названий компаний. При просмотре новой таблицы записи видны в том порядке. После создания с помощью команды IN D E X индекса Visual FoxPro автоматически использует этот индекс. Эти имена не обязательно должны совпадать. чтобы вызвать Конструктор таблиц. в котором запоминаются индексные ключи. то следует использовать индекс. типы данных. если ввести данные в таблицу из предыдущего примера и просмотреть ее в окне просмотра. . то связанный с ним FPT-файл. После создания таблицы ее структура и свойства могут быть в любое время модифицированы. USE Model INDEX ON key_body TAG key_body В этом примере тег индексного ключа имел то же имя. key_salman: CLOSE DATABASES CREATE TABLE Order_ (key_order I. В это время не создается никаких индексных файлов. Следующий программный код создает свободную таблицу Order_. поддерживающий указатели на записи в DBF-файле. логически упорядоченных в соответствии со значениями индексного ключа. Записи запоминаются в новой таблице в порядке ввода. Например. . комментарии и заголовки. Например. просматривать их или манипулировать ими в некотором заданном порядке. При создании первого индексного ключа таблицы в предыдущем примере Visual FoxPro автоматически создал новый файл . . правила проверки. Если нужно задать порядок доступа к записям и порядок их просмотра. в котором будут видимы и доступны записи таблицы. а затем нажмите кнопку New. значения по умолчанию. следующий программный код открывает таблицу Model и создает индексный ключ для поля key_body. Ключевое слово TAG и следующее за ним "key_body" задают имя или тег для нового индексного ключа. Тогда можно будет устанавливать порядок записей в таблице в соответствии с индексным ключом и получать доступ к записям таблицы в новом порядке. Для создания свободной таблицы в Project Manager выберите пункт Free Tables. можно изменить структуру связанной с базой данных таблицы Sale с помощью следующих команд: OPEN DATABASE Auto_Store USE Sale EXCLUSIVE MODIFY STRUCTURE После этого открывается Конструктор таблиц. может потребоваться. для индексного ключа можно задать и другое имя. Установите Regular в качестве типа индекса или используйте команду IN D EX . Первоначально при создании таблицы Visual FoxPro создает файл DBF и если имеются поля примечаний и General. в котором они вводились. key_model I. состоящую из четырех полей с именами key_order. . то записи будут отсортированы по полю key_body. Для программного создания свободной таблицы используйте команду C R EA TE T A B LE без открытых баз данных. Индекс Visual FoxPro представляет собой файл указателей. Обычно требуется просматривать записи и иметь к ним доступ в некотором заданном порядке. Как задать для таблицы индексный ключ? В Конструкторе таблиц на вкладке Index введите информацию об индексном ключе. Если требуется работать с записями в некотором порядке.converted to PDF by HupBaH9I Триггеры для событий UPDATE и DELETE задаются аналогично. key_customer I. изменить или удалить имена. Структура таблицы может быть изменена как в среде Конструктора таблиц. key_salman I) Новая таблица является свободной. Индексный файл отделен от файла таблицы (DBF-файла) и не изменяет физический порядок расположения записей в таблице. Например. key_customer. следует создать для таблицы индексный файл путем создания для таблиц первого способа упорядочения или индексного ключа. поскольку в момент ее создания не было открытых баз данных.

в котором уже имеются повторяющиеся значения. изменения или удаления записей таблицы. представляет собой наиболее общий и важный тип индексных файлов Visual FoxPro. он запрещает повторяющиеся значения в заданных полях или в выражении. Тип индекса определяет. Остальные два вида индексов употребляются реже. Visual FoxPro выдает сообщение об ошибке. При попытке задать первичный индекс для поля.7) или используйте команду A L T E R TA B LE. Он также запрещает повторяющиеся значения в заданных полях или выражении. Для создания первичного индекса или индекса-кандидата на вкладке Index Конструктора таблиц выберите тип индекса Primary или Candidate и создайте индекс (рис. 6. уникальные и обычные. который определяет уникальное ключевое значение для ее записей. в котором уже имеются повторяющиеся значения. Для таблицы может быть создан только один первичный индекс. называемый структурным составным индексом. Название "кандидат" относится к основному свойству индекса: поскольку он запрещает дублирующие значения. Однако СDХ-файлы. Обратите внимание на следующие свойства структурного CDX-файла: • • • Автоматически открывается при открытии таблицы. Первичные индексы и индексы-кандидаты создаются с помощью команд C R EA T E T A B LE или A L T E R T A B LE. Автоматически поддерживает операции добавления. кандидаты. В одном индексном файле может содержаться несколько вариантов упорядочения записей или индексных ключей. допустимы или нет повторяющиеся значения полей и записей.это единственный индекс в таблице. . так и индекс-кандидат. Visual FoxPro поддерживает четыре типа индексов: первичные. Индекс-кандидат (Candidate) .IDX-файлы.converted to PDF by HupBaH9I Индексный CDX-файл. Visual FoxPro выдает сообщение об ошибке.это индекс. При попытке задать индекс-кандидат для поля. Visual FoxPro предлагает дополнительно еще два вида индексных файлов: неструктурные СDХфайлы и файлы с одним ключом . то этот индекс можно использовать в качестве первичного индекса для таблицы. который удовлетворяет требованиям к первичному индексу. При определении постоянного отношения типа "один ко многим" или "один к одному" можно использовать со стороны "один" как первичный индекс. но может быть не единственным в таблице. Следовательно. Первичный индекс (Primary) . или структурные составные компактные индексы. представляют наиболее важный вид индексов.

все последующие появления какого-либо значения игнорируются. содержащие определенные пользователем функции. используется определенная пользователем функция. первичным или индексом-кандидатом. Filter OK Cancel Insert Delete cAproject_book\nnodel. 6.FIRM Regular key_firm Ш t t t . но не для обеспечения уникальности данных в этих записях.FUEL Regular key_fuel_oil KEY. каждая из следующих команд делает 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Х-файле данной таблицы. то она может иметь повторяющиеся значения. содержащего только уникальные значения ключей.dbf Records: 37 Fields: 20 Length: 35 Рис.7 . Если таблица проиндексирована уникальным индексом. то выражение обрабатывается таким же образом. если открыта соответствующая таблица. Основной причиной этого является то. как и выражения правил проверки и триггеров. Например. поскольку каждое значение не запоминается более одного раза.. когда установлены свойства "Primary" или "Candidate". который не является уникальным. что файл. Если в индексном выражении. должен быть всегда открытым. Эти типы индексов невозможно хранить ни в неструктурных СDХ-файлах..converted to PDF by HupBaH9I Ш \. Обычный индекс используется также при организации . а также в базе данных.это индекс. В Visual FoxPro уникальный индекс (Unique) не запрещает повторяющиеся значения.TY RE Regular keyjyre Regular key_body t KEY. Обычные индексы используются для упорядочения и поиска записей.J T able D esicjner Jable Name: Database:________________________ | model | cAproject_book\auto store dbc ~™ Table Name Ш t MODEL Index Type Expression Primary key_model KEY. связанном с базой данных. содержащий индексы таких типов. однако уникальный индекс запоминает в индексном файле только первое появление каждого значения. ни в ЮХ-файлах. Обычный индекс (Regular) ... Уникальный тип индексов поддерживается для обеспечения совместимости с предыдущими версиями. Слово "уникальный" относится к значениям индексного файла.BODY Table Properties.

то прикладная программа может создать неструктурный СDХ-индекс с необходимыми индексными тегами. Некоторые программисты предпочитают использовать этот тип индекса при создании многопользовательских приложений. 6. Например. образуется на основе выражений с одним ключом и хранится в файле с расширением ЮХ. а затем удалить неструктурные СDХ-индексы. так как он легче поддается восстановлению в случае аварийных сбоев. когда требуется создать несколько индексных тегов для какой-либо специальной цели. однако нежелательна постоянная поддержка этих индексов. Виды индексов Visual FoxPro Виды О писание Количество О граничения индекса клю чей Структурный CDX Имя файла. отличном от структурного СDХ-файла данной таблицы. что индекс-ный тег должен быть сохранен в файле. . создаваемых или реорганизуемых непосредственно перед использованием. или отдельный индексный файл. простые ЮХ-индексы сохраняют информацию только об одном ключевом выражении. Предложение OF в команде IN D E X используется для указания того. имеет имя файла. Обычно простые индексы используются в качестве временных индексов. следующие команды открывают окно Browse для просмотра данных и выводят записи таблицы Model. отличное от имени файла таблицы Простые IDX Выражения со многими ключами. Например.3 . key_firm. После создания индексных ключей для таблицы Model по полям key_model. просто выбирая нужный индексный ключ.3 систематизируются свойства трех видов индексов. по которому будет упорядочиваться таблица. Для каждой таблицы может быть создано сколько угодно ЮХ-файлов.CDX: USE Firm INDEX ON name_firm TO TAG name_firm OF NSTRFIRM Простой. если приложение содержит некоторый набор отчетов на основе анализа данных в полях. имя вычисляемое файла с выражение расширением . упорядоченные по полю key_model: SET ORDER ТО key_model BROWSE В табл. key_tyre и key_body можно выводить записи в различном порядке. которые в остальное время не индексируются. key_fuil_oil. следующая команда создает тег с именем name_firm для таблицы Firm и сохраняет его в неструктурном СDХ-файле с именем NSTRFIRM.converted to PDF by HupBaH9I постоянных отношений типа "один ко многим" со стороны многих. Команда S E T O RD ER используется для указания того индексного ключа. Например. совпадает с именем таблицы. Таб ли ц а 6 . запустить на выполнение эти отчеты. Для создания неструктурного индексного тега используйте команду IN D E X с параметрами TAG и OF. которые строятся на основе выражений со многими ключами.IDX определяется пользователем Неструктурные СDХ-индексы применяются в тех случаях. называемыми тегами Максимум 240 символов на вычисляемое выражение Должен Одноключевые Максимум 100 открываться выражения символов на явно. называемыми тегами Максимум 240 символов на вычисляемое выражение Выражения со многими ключами. автоматически открывается при открытии таблицы Неструктурный Должен CDX открываться явно. В отличие от СDХ-индексов.

когда она упорядочена по такому ключу. Например. есть вероятность. создав индекс с убывающими ключами или рассматривая обычный индекс в обратном порядке.converted to PDF by HupBaH9I Вы можете упростить организацию поиска данных в приложении. что она оказывается отсортированной по полю last_name. Как создать убывающий индекс? На вкладке Index Конструктора таблиц нажмите кнопку со стрелкой слева от поля Name так. Хранимые же процедуры запоминаются в D B ^ файле и всегда могут быть найдены Visual FoxPro. или используйте предложение DESCENDING в команде IN D E X ON. чтобы преобразовать поле типа дата в символьное выражение. В одном индексном теге можно комбинировать данные различных типов. который указан. Если индексный тег строится для таблицы. в котором бы комбинировались поля date_write (дата выписки счета) и sum _ (сумма оплаты). можно создать индекс для таблицы Customer из базы данных Auto_Store на основе выражения: last_name + first_name + patronymic Если просматривать таблицу Customer. Например. затем по полю first_name и только после этого по полю patronymic.это индексы. что этот файл будет перемещен или удален. а для преобразования числового значения в строку символов . то при выполнении индексирования будет вызываться любая функция с указанным именем. константы или определенные пользователем функции. Если же в индексном выражении используется определенная пользователем функция. что в индексе будет гарантировано использование в точности того кода. Использование хранимых процедур или определенных пользователем функций следует тщательно продумывать. можно использовать функцию d T o S ( ) . Простые индексные выражения . связанной с базой данных. LasFirPat Можно создавать индексы на основе более сложных индексных выражений. отдельном от базы данных. а не определенные пользователем функции. преобразовав компоненты выражения к символьному типу. Выражения могут быть простыми или сложными . Результат вычисления индексного выражения не должен превышать 100 символов для простых (Ю Х) индексов и 240 символов для тегов СDХ-индексов. Вы можете создать индекс с помощью следующей команды: INDEX ON last_name + first_name + patronymic TAG . то можно убедиться. Для индексных тегов могут употребляться встроенные функции Visual FoxPro. Поскольку определенная пользователем функция хранится в файле. если воспользуетесь индексами на основе выражений. ссылающийся на такую функцию. Другим преимуществом использования хранимых процедур в индексных выражениях является то. то предпочтительнее использовать хранимые процедуры.функцию S T R (). чтобы стрелка на кнопке указала вниз. можно создать новый убывающий индекс. построенные на основе одного поля или сложения нескольких символьных полей для формирования составного ключа. поскольку это увеличивает время создания индекса. Пусть требуется создать индексный тег для таблицы Account. тогда можно использовать следующее индексное выражение: INDEX ON DTOS(date_write) + STR(sum _) TAG DatSum Вы можете расширить возможности индекса. Индексные выражения Visual FoxPro могут содержать функции Visual FoxPro. При создании индексов других видов можно использовать только второй способ. При создании структурного составного индексного файла можно использовать оба метода.это зависит от задачи. Вы можете просматривать записи по убыванию ключа. и просматривать таблицу в таком порядке при помощи следующего программного кода: USE Account INDEX ON sum _ TAG sum _ DESCENDING BROWSE . упорядочивающий таблицу Account от больших к меньшим значениям поля sum _. если будете использовать в индексном выражении хранимые процедуры и определенные пользователем функции. оказавшаяся в области видимости Visual FoxPro. Например. а это приведет к неработоспособности индексный тег.

converted to PDF by HupBaH9I Возможность читать индекс по убыванию ключа позволяет воспользоваться существующим индексом. Expression SUM Filter OK Cancel sum>30000 Insert Delete cAproject_book\account. Если создать фильтрующий индекс.могут использоваться с опцией ASCENDING. Как создать фильтр? На вкладке Index Конструктора таблиц введите фильтрующее выражение в поле ввода Filter нужного индекса (рис. созданный с помощью следующего программного кода: USE Account INDEX ON sum _ TAG sum _ По умолчанию порядок будет возрастающий. Однако обе команды . m .8 . а если необходимо. вместо того чтобы создавать новый. удовлетворяющих значению фильтра.8) или используйте необязательное предложение FOR в команде IN D EX . Следующий программный код создает фильтрующий индекс и выводит отфильтрованные данные в окне просмотра: USE Account INDEX ON sum _ FOR sum_>>30000 TAG sum _ . удовлетворяющие критерию фильтрующего выражения. можно добиться значительной гибкости приложения. Например.if.Тable Designer Table Name: Database:________________________ account | cApro|ect_book\auto ?tore dbc Table Index Name Type t ACCOUNT Regular account t KEY_CU ST0 t KEY_AUT0 t number_rec Regular key_customer Regular key_auto Primary nunber recorc il Table Properties. Пусть имеется индекс. то индекс будет действовать на таблицу. Вы можете ограничить множество доступных данных только необходимыми данными.. 6. использовав фильтрующий индекс. Если в команду IN D E X ввести необязательное предложение FOR. при создании индекса можно указать опцию ASCENDING или DESCENDING для наиболее часто используемого порядка. то видимы и доступны будут только записи.dbf Records: 7 Fields: 7 Length: 36 Рис. Индексные ключи будут создаваться в индексном файле только для записей. 6. как фильтр. в команде SET O R D ER можно указать противоположный порядок.S E T O RD ER и IN D E X . Просматривать таблицу в порядке убывания ключа можно с помощью следующего программного кода: USE Account SET ORDER ТО sum _ DESCENDING BROWSE В предыдущих примерах внимание было сосредоточено на доступе к информации по убыванию ключа. Комбинируя разные варианты употребления этих команд. упорядочивающий таблицу Account по полю sum _.

когда требуется задать временное условие. открывающихся автоматически вместе с таблицей. чтобы быть доступными.') && Комментарий к БД * Создание таблицы Model CREATE TABLE Model (key_model i. здесь мы приводим ключевые фрагменты.2) и спроектированной во второй (раздел 2. используется команда S E T F IL T E R . открытые в текущей рабочей области. Если индексный файл оказался устаревшим. torgue n(5. top_speed n(5. Visual FoxPro распознает все виды индексных файлов (составные СDХ-файлы.1) NULL. . 'field'. то его можно обновить командой R EIN D EX . Например.1) NULL.1) NULL. .. Особенно полезна эта команда в тех случаях. key_tyre i DEFAULT 1. пришло время вернуться к нашей задаче. Например. 'Наименование модели') . 'caption'. key_firm i DEFAULT 1. name_model c(20). особенно для больших таблиц. * предварительно выделив пункт Databases во вкладке Data) CREATE DATABASE auto_store && Создание БД Auto_Store ? DBSETPROP('auto_store'. чтобы показать только счета с суммой оплаты больше 30000. чтобы отфильтровать таблицу Account так. 'Уникальный ключ модели') ? DBSETPROP ('Model. 'database'. Перестройка индексов требует временных затрат.2). . Для каждой открытой таблицы может быть установлен свой фильтр. После того как выдана команда S E T F IL T E R . quantity_drum n(2) NULL. описанной в первой главе (раздел 1. 'comment'. 'field'. . 'Автоматизация управления работы дилера по продаже легковых автомобилей.key_model'. expense_90 n(4. Следующий программный код описывает создание базы данных Auto_Store. Обновляются все теги в СDХфайлах и структурных СDХ-файлах. поддерживая индексы в актуальном состоянии (соответствующим данным в таблицах) и используя в них оптимизируемые выражения. expense_120 n(4. в таблице будут доступны только записи. 'caption'. height n(4) NULL.. отличными от Visual FoxPro. .1) NULL. Вы можете повысить производительность при работе с индексированными таблицами. width n(4) .1) NULL. которому должны удовлетворять записи таблицы. . quantity_door n(1) NULL. можно использовать следующие команды: USE Account SET FILTER ТО sum _ >> 30000 BROWSE Команда S E T F IL T E R воспринимает в качестве фильтра любое допустимое логическое выражение Visual FoxPro. Как перестроить индексный файл? В меню Table выберите Rebuild Indexes или используйте команду R EIN D EX .name_model'. если таблица открывается без соответствующего индексного файла и в ее ключевые поля вносятся изменения.1) NULL. удовлетворяющие условию фильтра. исключая однотипные операции: WAIT WINDOW "Один момент. . а также в результате редактирования таблицы программами. следующий программный код обновляет индексный файл для таблицы Account: USE Account REINDEX Команда R E IN D E X обновляет все индексные файлы. Перестройку индексов следует производить только при необходимости. структурные СDХфайлы и простые ЮХ-файлы) и соответственно их перестраивает. Индексный файл может оказаться устаревшим. Все команды доступа к таблицам действуют с учетом установленного командой S E T F IL T E R критерия. starting n(4. Итак. .converted to PDF by HupBaH9I BROWSE Для того чтобы временно отфильтровать данные без построения специального фильтрующего индекса. Индексные файлы могут также оказаться недействительными в результате аппаратных сбоев. Полностью программа записана на прилагаемой к книге дискете. NULL.1) NULL) * Установка заголовков (для таблицы model) ? DBSETPROP ('Model. . length n(5)<|>NULL. capacity n(5. . key_body i DEFAULT 1. . quantity_sead n(2) NULL. key_fuel_oil i DEFAULT 1. expense_town n(4." NOWAIT * После выполнения данного кода не забудьте БД * "Auto_Store" включить в проект (с помощью клавиши Add. swept_volume n(5) NULL.

cost n(10. возможно. ADD FOREIGN KEY key_fuel_oil TAG key_fiuel REFERENCES . 'Уникальный ключ автомобиля') * Создание первичного ключа * (для таблицы Automobile_Passenger_Car) ALTER TABLE Automobile_Passenger_Car ADD PRIMARY KEY . . Строят связи между таблицами. . в котором таблицы и создавать не надо. 'Уникальный ключ фирмы') ? DBSETPROP ('Firm. и не рассказывайте нам сказки про связи. Если нужен какой-нибудь "наворот". Авторам известен случай. они уже давно созданы. то используют макросы. В Access можно сконструировать 90 % приложения из данных вам "кубиков". ERROR "Значение рабочего объема не должно быть . 'Уникальный ключ страны') * Создание первичного ключа (для таблицы Firm) ALTER TABLE Firm ADD PRIMARY KEY key_firm TAG key_firm * Создание таблицы Automobile_Passenger_Car CREATE TABLE Automobile_Passenger_Car (key_auto i. В этом параграфе мы рассмотрим визуальные методы создания баз данных в MS Access. key_country i) * Установка заголовков (для таблицы Firm) ? DBSETPROP ('Firm. 'caption'. через таблицы Firm') * Создание первичного ключа (для таблицы Model) ALTER TABLE Model ADD PRIMARY KEY key_model TAG key_model * Формирование правил и сообщений об ошибке * (для таблицы Model) ALTER TABLE Model ALTER COLUMN swept_volume SET CHECK . 'field'. . 'caption'. key_auto TAG key_auto *Создание постоянных отношений ALTER TABLE Automobile_Passenger_Car . 'field'. что без программирования даже в Access не обойтись. что это АСУ. было наличие твердых и уверенных познаний электронных таблиц известного производителя программных продуктов.name_firm'. swept_volume>>0 . ADD FOREIGN KEY key_model TAG key_model REFERENCES Model ALTER TABLE Model .key_firm'. значит. Да и почему нет .key_firm'. страшный поклонник Excel. создают изощренные запросы и на их основе проектируют формы и отчеты.key_auto'. Казалось бы.key_firm'. . что-нибудь получилось. quantity_drum >>= 1 .2)) * Установка заголовков * (для таблицы Automobile_Passenger_Car) ? DBSETPROP ('Automobile_Passenger_Car. Основой любой системы обработки систематизированных данных являются таблицы. ERROR "Количество цилиндров должно быть больше или равно 1" * Создание таблицы Firm CREATE TABLE Firm (key_firm i. К сожалению. которые легко и непринужденно создают достаточно сложные приложения.converted to PDF by HupBaH9I ? DBSETPROP ('Model. когда директор одного из заводов. до конца проследить за этой историей не удалось. Fuel_Oil 6. если сказали. это АСУ.key_country'. СУБД Microsoft Access предназначена для конечных пользователей. что это вполне возможно. . 'По данному полю можно определить наименование фирмы . 'comment'. . 'caption'. date_issue d. key_model i. 'field'. 'caption'. хотя мы уверены. 'caption'. 'Уникальный ключ фирмы') * Создание комментария (для таблицы Model) ? DBSETPROP ('Model. 'field'. ADD FOREIGN KEY key_firm TAG key_firm REFERENCES Firm ALTER TABLE Model . Сразу оговоримся. Access Согласно сложившемуся мнению. 'field'. требовал от специалистов по информационному обеспечению построить автоматизированную систему управления документооборотом на основе Microsoft Excel. которые здесь .в конце концов. name_firm c(20). .2. 'field'. живем в свободной рыночной стране. сущности и уж тем более про ODBC. . 'Наименование фирмы') ? DBSETPROP ('Firm. Критерием приема на работу на этом заводе программиста. отрицательным" ALTER TABLE Model ALTER COLUMN quantity_drum SET CHECK . да и любого другого специалиста. вслед за этим может последовать вопрос: а почему бы не использовать Excel.

на который в принципе не стоит обращать внимания. ] Inmin т облица Рин. которые предоставляют различные варианты создания таблицы. чтобы создать контейнер базы данных. это был просто маленький пример. При этом используете одни и те же таблицы в формате FoxPro 2. показанное на рис. Возможны контраргументы . Для начала рассмотрим обычный случай.96 Волга 56 12. уже прошло. например.J|:. а объекты их обработки и вывода . В списке справа перечислены пять пунктов.в другой. Не делает EXE-файлы. чем их создание. Access . Следует отметить одно "но" . В таком случае вы либо используете присоединенные таблицы. В Контейнере БД перейдите на вкладку Таблицы и нажмите на кнопку Создать. Наберите какие-нибудь табличные данные.10. на FoxPro. показывающий интеграцию Access в Microsoft Office. Очевидно и.9 .IU Q h -M режиметвйпииы ОК Отмене Рис. То есть вы работаете на Access. У нее есть один недостаток.96 Мерседес 34 17. в таком случае.текстовые поля всегда имеют длину в 255 символов. либо программным способом создаете запросы к таблицам и используете их в своих формах. Выполнив операцию Вставить. возможно."больно медленный продукт". Подобная же ситуация может сложиться. Вы решили хранить таблицы в одной базе данных. 6.12.03. Либо воспользуйтесь значком с изображением белого листка бумаги. когда тот работает с данными. Если у вас еще не открыт Access. Эта операция не намного сложнее. Вы используете данные с сервера. 6. вам не придется создавать таблицы.создание таблицы. но насколько важный? Время.навой то&пииы о Свчзь С Т з б п -. Рассмотрим другой случай.converted to PDF by HupBaH9I называются объектами. с чего рекомендуется начинать . Например. Откройте любую таблицу в Excel. то откройте его. когда надо было "работать с дисковода". выберите в меню Файл команду Создать. поэтому переходим на страницу Таблицы. Объекты каждого типа располагаются на своих страницах. и дописать немножко кода для особо требовательных процессов.показать. как показано на рис. . используя присоединенные таблицы.ш ИмпортrcfinI'M Создание. Минус. Наша цель . В контейнере.формы и отчеты . мы получаем новую таблицу. Первое.23 Теперь выделите область с данными и скопируйте ее в буфер. чем Delphi.04. который представляет собой графическое средство работы с базой данных. . Мы не призываем вас сразу же переводить таблицы из Excel в Access. которые в ней содержатся. Попро-буйте провести следующую операцию. банально. можно сказать. Перед вами появится диалоговое окно Новая таблица. как строить базы данных в Access и как работать с ними.09. Для того.достаточно тесно интегрированный в Microsoft Office продукт.:I п . а все остальные. если на вашем предприятии применяют приложения.9. как в следующей таблице: First Second Third Вольво 2 12.структура вашего приложения может быть достаточно сложной и не всегда вписываться в рамки простых стандартов. использующие другие процессоры данных. В первом случае на экран будет выведена готовая таблица для заполнения ее данными. Приведем несколько примеров. Конструктор М э:т?р тзбп-. Нас интересуют таблицы. отображаются все объекты. Вы можете совместно обрабатывать их. не медленней. а надо присоединять таблицы с сервера.96 Тойота 78 14. Мы не будем никого разубеждать и что-либо доказывать.6. который может охватить достаточно широкий круг задач. 6. во всех приложениях Microsoft означающим "создать новый файл". Уверяем вас.

не хранится. но не редактируйте записи. вызов которого происходит посредством задания одноименной команды в меню Сервис. а в ней область с заголовком Размеры полей по умолчанию. а для чего какое-то поле появилось. Размеры по умолчанию вновь создаваемых текстовых полей можно установить с помощью диалогового окна Параметры. В третьей колонке настоятельно рекомендуем как можно подробнее описать. Опыт подсказывает. Вы можете узнать.1 0 .. 6 . с какой целью это поле появилось в таблице.ED SUM QftTQ/bptr'iP Л о г и ч е с к и й Д е и з м е н и й QiJWNtTiV Числовой DATEJfcWTE Опмоежв Jj С в о й с т в епэг-р ОЕщиа | Поитанс*№ | Рммер nonq Цлмнте теле? Формат поля ЧИЯЮ0«ЧТИЧИ»Г ЭНЖС1 Авто Маасй емдл Подпись Знамение по умолчаний ytnowie нвзиеиениэ См&щвние oft ошибке Обязательное поле Нвт Индексироннна&попв Да (Догу&виотея мепаленив) и' 6-4 ■■' ' 1' ИL |' П О ч ПйПёй КвЖмИГа . что бесполезно давать полю имя. Увеличьте размеры текстовых полей. Необходимо использовать сжатие базы данных. !§£Ac?airtt:Tiiljfirtii Ими поля KEV^jccaurfr Тип ленных KEY CUSTOMER СМатчик Числовой K£Y_AimO ЧИСЛОВОЙ SEU. Можете провести эксперимент. что довольно часто найти оптимальную длину поля невозможно.fr. 6 . . число символов в котором более 64. Структура файла MDB такова. не занятое символами.самое длинное значение. свойство "длина поля" редактировать придется часто. что лишнее пространство в поле. которая выводится в правом нижнем углу. Для каждого типа поля в левой нижней части экрана высвечивается свой набор свойств. Но не навсегда .*] x v i >л Рис. Пробелы могут быть внутри названия.converted to PDF by HupBaH9I I ►1 L_L Пм* J j 1 L-_ —гi . . которым вы должны руководствоваться. 6. в котором есть команда С луж еб н ы е програм мы . можем перейти к конструированию.. Можете особо не жалеть места. п _—1 i Li . выбрать тип из предлагаемого списка. восклицательный знак и квадратные скобки. должно "чувствовать себя в нем комфортно" и не быть усеченным. как следует из ее названия. поэтому какое бы значение по умолчанию вы ни установили... j аятгеи H ! 1J _______ J_JH. ■ ' Рис. Главный принцип. Вооруженные знаниями типов полей. которое вы введете в это поле. что нельзя использовать точку. которые мы получили в главе 3. А если нажмете на клавишу F1. Для текстового поля обязательно укажите длину. ^ L i lu .11.. окно которого показано на рис. Для этого в первой колонке нам надо ввести название поля. а во второй. Потом проверьте размер. Если таблиц много. Во втором случае на экране появляется Конструктор таблиц. Он изменится. как это продемонстрировано на рис. В этом диалоге выберите вкладку Таблицы/запросы.12. но нельзя использовать их в начале имени. то узнаете. Обратим ваше внимание на полезную информацию. одна из которых и . 6. Эта операция доступна с помощью меню С ер ви с.есть способ вернуть его к прежнему размеру. то вы можете проявлять сколь угодно бурную фантазию при выборе названия поля и все равно однажды не сможете вспомнить.1 1 .

шт Клавиатура Модуль Другие Вид Общие Правка/поиск Режим таблицы Т аблицы/запросы Формы/отчеты Конструктор таблиц . Эту операцию надо проводить периодически.converted to PDF by HupBaH9I сможет сделать базу данных более компактной.Размеры полей по умолчанию---- Тип поля по умолчанию: Текстовое: Iекстовын \ш Автоиндекс при импорте/создании: Числовое: |шиФр. то есть вот так: (812)259-4277. Например.это Подпись поля. Для некоторых типов полей вы можете воспользоваться встроенными значениями форматов. чтобы увидеть в нем команду С луж еб ны е програм мы .служит для вывода значений поля в более удобном виде. Эту проблему можно решить с помощью свойства Маска ввода. Следующее свойство . так как.их достаточно много.ключ. но без скобок и дефисов. Установка размеров поля в Access по умолчанию Следующее свойство поля . При этом . необходимо закрыть базу данных. Поэкспериментируйте . Наберите то же самое. Тогда наберите в строке Формат следующее выражение: (000)00-00000 Теперь данные будут выводится так. то есть то. Подпись .это альтернатива названия поля. оно будет выглядеть так: \(0\-000\)000\-00\-00 Если вы хотите подробнее ознакомиться с символами. Меню Сервис динамически меняет свое содержимое и для того. в английской версии Caption. хотя храниться будут совсем по-другому. то приготовьтесь потратить время . 6 . Особенно много их у поля типа "дата и время". пока вы не выполните сжатие. Для данного поля лучше использовать текстовый тип данных. На первых порах советуем вам распечатать темы файла контекстной справки по этим свойствам.Формат . Access сам отредактирует введенное вами значение. а хранить в таблице в виде того же набора цифр. Когда мы начнем вводить данные или редактировать их. вам хочется выводить телефонные номера в общепринятом виде.1 2 . то снова увидим строку типа 8125250495. что и для свойства Формат.номер (Длинное целое d Конструктор запросов Р Вывод имен таблиц V Вывод всех полей Автоматическое объединение При запуске предоставляются права— f Владельца (* Пользователя ок 1 Отмена 1 1 11 11Г||Н|т!*зН! Ь Рис. что мы привыкли называть заголовком.поймете почему. ваша база данных автоматически не уменьшится. как мы привыкли видеть телефонные номера. даже если вы удалите таблицу размером в пять мегабайт. которые используются при создании значений свойств Формат и Маска ввода.код.

а затем использовать его для связи таблицы с другими таблицами. что свойство имеет строчный тип данных. Если вы установите значение этого свойство равным "Да". вам придется очень много общаться с заказчиком или постановщиком задачи и чертить различные схемы. вы хотите знать дату и время появления новой записи в вашей таблице. используйте свойство Индексированное поле. Учтите. может быть индексировано. Свойство Обязательное поле требует. Все это. Для того чтобы создать индекс. которая позволяет использовать контроль целостности данных. естественно. где какие данные будут . Допустим. а во второй колонке последовательно указать поля. не совсем так просто. Это можно легко преодолеть. В таком случае сделайте значение поля по умолчанию равным функции N o w (). 6 . чтобы в поле было введено какое-нибудь значение. Но тем не менее вам удастся навести порядок в обработке ваших данных. то при просмотре таблицы оно будет выводиться вместо заголовка поля. свойство Значение по умолчанию становится еще более сильным ограничителем для желающих вводить фальсифицированные данные. которые добавляете в индекс (рис. Теперь вы четко можете отследить. бесплатное объявление в Санкт-Петербургской газете "Реклама-Шанс" не должно превышать 80 символов). как вы уже поняли. которые состоят из значений одного поля. Причем это будет связь. то сможете вводить значения типа NULL. в противном случае. используйте команду И ндексы из меню Вид. возвращаемому какой-либо функцией. допустить повторение значений в индексированном поле. Можете сделать его равным значению. обсуждать. Для того чтобы создать сложные индексы. Когда вы будете создавать базу данных. Каждое поле. кроме полей примечаний и объектов OLE. будет выводиться название поля. Установите свойство Условие на значение равным следующему выражению: << = Now() And >>Now()-1 Теперь никто не сможет отредактировать данные в этом поле и. Свойство Пустые строки не противоречит свойству Обязательное поле. так как вы можете использовать 2048 символов (к примеру. в какой момент была добавлена новая запись. к примеру. После того как пользователь попытается нарушить Условие на значение. Здесь вы можете в левой колонке ввести название индекса. но замедляет ввод и обновление данных. оно тоже должно быть строчным. Создание сложного индекса в Access Можно сделать поле первичным ключом. напротив. который не может иметь дублирующих друг друга значений в разных записях или.1 3 . конечно. установив значение свойства Сообщение об ошибке.converted to PDF by HupBaH9I ограничение на количество символов значительно превосходит аналогичное для название поля здесь можно написать целое произведение. выведется стандартное сообщение Microsoft Access. не каждый любитель так называемого "взлома" сможет добраться до них. Но таким образом вы можете создать только простые индексы. то есть отсутствие какого-либо значения. Если вы введете значение для этого свойства. при этом вы можете создать индекс. провести какуюнибудь операцию задним числом. В сочетании со свойством Условие на значение. 6. поэтому данное значение вводите в кавычках. Свойство Значение по умолчанию удобно использовать в различных случаях. а в сочетании со средствами защиты вы сможете предохранить свои данные от любых дальнейших изменений. Иi-Ui&KLCui autQtabJ^ Индекс fompl Порядок сортировки Имя поля First Second Third По возрастанию По возрастанию По возрастанию Свойства индекса Ключевое поле Уникальный индекс Да Пропуск пустых полей Нет Да Имя данного индекса Каждый индекс может Рис.13). что значительно ускоряет поиск.

Графическая схема созданной базы данных в Access Все вышеизложенное можно проделать с помощью объектов доступа к данным. установив правила для полей. В этом параграфе мы рассмотрим программные методы создания БД в Visual Basic. в котором описывается построение БД в Microsoft Visual Basic.DAO. обратитесь к следующему параграфу данной главы. так как в этом случае становятся доступными средства контроля целостности данных. Этот способ рекомендуется использовать при импорте данных из других приложений и переносе таблиц Excel в базу данных Access. Создав. Обычно для связи используют ключевые поля.14. 6. вы решили львиную долю задачи. с контролем целостности данных. Если у вас еще не выработался универсальный способ общения с пользователем и воплощения выработанных идей. Visual Basic Visual Basic. 6 . как таблицы будут связываться. если это необходимо. Из схемы данных. Для того чтобы узнать об этом. обращая особое внимание на такой важный компонент. например каскадное обновление и каскадное удаление связанных записей. Рис. если вы помните. построив индексы и ключи и на их основе постоянно хранимые связи. что он использует общий с Access процессор БД и. так что к этому тоже надо быть готовым. то есть если он заметит. Правда. не имеет значения. к тому же. с которой вы связываетесь.3. то есть создать таблицы и установить их свойства с помощью кода. Для того чтобы вывести ее на экран выберите команду Схема данных в меню Сервис или значок с изображением связанных таблиц в Стандартной панели инструментов. что пожелания пользователя могут меняться до самого последнего момента разработки. который позволяет разбить данные из одной таблицы на несколько. Visual Basic позволяет использовать два метода для работы с данными: . вы можете воспользоваться средством Анализ таблиц. подключив или импортировав таблицы. В появившемся всплывающем меню выберите нужную команду.converted to PDF by HupBaH9I храниться. что какие-то значения часто повторяются. Соответственно. которая приведена на рис. предоставляет весьма скудные средства для визуальной работы с БД. приходится отметить. то предложит вынести их в отдельную таблицу. используйте Схему данных. выберите поле в графическом изображении таблицы и с помощью мыши перетащите на соответствующее поле в таблице. Для того чтобы связать две таблицы. они должны содержать данные. Для работы с другими форматами данных можно использовать ODBC. При этом Access руководствуется принципом избыточности данных. являясь универсальным средством разработки пользовательских программ. Это не покажется вам неестественным. для того чтобы таблицы могли разделяться. 6. Создав таблицы. Для этого выделите таблицу и нажмите правую клавишу. кое-где.1 4 . как объекты для доступа к данным . следовательно. создана БД в Access или Visual Basic. вы легко можете попасть в Конструктор таблиц.

Внутренний механизм процессора данных транслирует эти операции с объектами для доступа к данным в физические действия над файлами БД.х и Windows for Work-groups). путем применения объектов для доступа к данным (DAO . добравшись до главы 8. что обеспечивает программе максимальную гибкость и скорость работы. то использование объектов для доступа к данным хотя и требует программирования. потому что вы можете использовать те же самые объекты. которые моделируют структуру реляционной базы данных. которые можно разбить на три категории: • • • Базы данных Visual Basic. И если вам необходимо перейти от одного формата базы данных к другому (например. Модель управления данными. Изложенный подход упрощает вашу прикладную программу и позволяет обойтись значительно меньшим количеством строк кода. для доступа к ним требуется несколько более сложная технология с использованием отдельных драйверов ODBC.converted to PDF by HupBaH9I • • с помощью специальных элементов управления для работы с данными. Написание прикладной программы для обработки данных в Visual Basic схематично состоит из создания объектов для доступа к данным. таких как Btrieve. Чтобы создать приложение для управления данными в архитектуре клиент-сервер. свойства и методы при работе с разнообразными поддерживаемыми форматами баз данных. основанная на объектах DAO.5 предназначена для написания программ. которые могут использоваться для доступа к данным в этом случае и которые описаны в главе 8 . из программы на сервер необходимо передать команды SQL. обратите внимание на специальные методы. к информации которой вы хотите получить доступ. представляет собой коллекцию классов. TableDef.Indexed Sequential Access Method). которые позволяют выполнять все необходимые операции для управления базой данных. что программист перед проектированием прикладной программы должен выбрать один из методов. включая ее создание. dBASE III. д.для 32-битовой ОС (Microsoft Windows 95 или Windows NT). так и второй способ работы с данными. впрочем. осуществляется с помощью метода последовательного доступа (ISAM . Если элементы управления данными позволяют практически без программирования обеспечить элементарные возможности по просмотру и редактированию информации в существующих БД. а так же избавляет от необходимости непосредственного манипулирования и поиска необходимых данных. для этого потребуется сделать лишь небольшие изменения в программном коде. Таким же образом может осуществляться использование текстовых файлов или электронных таблиц формата Microsoft Excel и Lotus 1-2-3. перемещения по записям таблиц. которые соответствуют различным составляющим физической БД. Microsoft FoxPro и Paradox. В дальнейшем мы постараемся дать четкие рекомендации по использованию этих двух методов в различных ситуациях. Доступ к форматам БД внешних СУБД для персональных систем. но зато предоставляет самые широкие возможности по управлению базой данных. Управление этими БД осуществляет непосредственно процессор данных Visual Basic. как Database. почти наверняка в своей прикладной программе вы будете использовать как один. об этом вы прочитаете чуть позже. При этом не стоит думать. В том случае. . например. о чем более подробно речь пойдет в главе 8 . версия 3. Это наиболее простой вариант технологии ODBC. работающих в 16-битовой операционной системе (Windows 3. хранящиеся на сервере. возникающих при проектировании прикладной программы. при перенесении базы данных Visual FoxPro на SQL Server). которые будут соединять таблицы из двух и более различных баз данных в одном запросе или отчете.0 . Эти объекты имеют свойства и методы. таких. Данные. аналогичный Microsoft Access. dBASE IV. Наоборот.Data Access Objects). описание таблиц. Field и Index. написанного вручную. Таким образом вы даже можете создавать прикладные программы. используют формат. если вам интересны технологии клиент-сервер. выполнения запросов и т. Увидеть результат выполнения операций и обеспечить редактирование данных пользователем можно с помощью экранных форм. С помощью Visual Basic вы получаете доступ к БД. Visual Basic имеет две отдельные версии процессора данных и библиотек объектов для доступа к данным: • • версия 2. в которых будут использоваться соответствующие элементы управления. можно выполнять необходимые операции с базой. связей между таблицами. Программа становится более гибкой. полей и индексов. Используя соответствующие свойства и методы созданных объектов.

Например. Единственная цель объекта коллекции состоит в том. 6. Рис. всегда относятся к одному и тому же виду. например. для ссылки на который используется переменная oWksp. Этот способ хранения объектов реализуется с помощью специального вида объекта. На основе определенного класса в программе мы создаем объект. а только его прообраз. 6. чем "класс". термин "объект" используется чаще. Так как главной темой обсуждения в этом параграфе является поведение объектов. Объекты. Напомним.это не реальный объект. которые. принадлежат другому классу выше в иерархии. что в строгой формулировке. в которой большинство классов относится к коллекциям классов. содержащиеся в данной коллекции. термин "объект Database" означает "объект класса Database".1 5 . 6 . которые создаются в программе для обеспечения заданной функциональности. Например. Обратите внимание. большинство объектов доступа к данным представляется и . Иерархия объектов для доступа к данным в Visual Basic Мы поместили этот рисунок не для того. Только не забудьте. в свою очередь.converted to PDF by HupBaH9I Объекты для доступа к данным имеют иерархическую организацию. который называется коллекцией. Полная структура объектов для доступа к данным приведена на рис. что класс .15. в коллекции Indexes могут содержаться только объекты Index. который тут же готов выполнять предусмотренные в классе функции. который может выполнять в программе какие-то действия. после такой строки в программе: Dim oWksp As Workspace создается объект на основе класса Workspace. чтобы содержать другие объекты. чтобы напугать вас мудреными словами "иерархия объектов".15. Как вы можете видеть на рис. что элементы иерархии объектов DAO на самом деле являются классами.

На самом верху иерархии . как и в других объектно-ориентированных языках программирования. предпочтительнее использовать разделитель ! (восклицательный знак). В Visual Basic. д. в то время как процедуры.процессор данных.Fields("Customer") MyTableDef. Это позволяет использовать в программе более простой код.Workspaces(0) Set MyDB = MyWS. следующие выражения эквивалентны: MyTableDef.TableDefs(1) и т. относящиеся к отдельному объекту. . сохраняются все вместе внутри объекта.TableDefs(0). что данные и процедуры. На второй объект TableDef можно сослаться как MyDatabase. коллекцией по умолчанию для объекта Recordset будет являться коллекция Fields. написание программы с использованием объектов для доступа к данным заключается в создании переменной. и как коллекция. относящиеся к объекту (установки и атрибуты). может содержать один или большее количество объектов Workspace. Каждый объект Workspace имеет коллекцию Databases. соответствующее имени нужного индекса . в отличие от ссылки по индексу. некоторые коллекции. при явной ссылке на объект. MyWS As Workspace. Таким образом. д. MyRS A s_ Recordset * Открываем таблицу Clients в БД ACCOUNTS. Доступ к отдельным объектам коллекции может быть осуществлен по его номеру.Databases(0). Объект DBEngine имеет коллекцию Workspaces (имя коллекции всегда имеет множественное число от имени содержащихся объектов).Workspaces(0). Таким образом.Fields_ "Customer") Как видно из этого примера.converted to PDF by HupBaH9I как объект.Fields!Customer Использование заданных по умолчанию коллекций упрощает код в прикладной программе. данные. которому присваиваем значение.TableDefs(0).MDB") Set MyRS = MyDB. Основная идея объектно-ориентированного программирования заключается в том. Нумерация объектов в коллекции начинается с нуля. Например. Например. называются методами. потому что при использовании вложенных ссылок на объекты заданные по умолчанию коллекции и составляют основную иерархию "пути" до объектов. чем Cust = MyRecordset. а затем в манипулировании объектом путем выполнения соответствующих методов и установки требуемых значений свойств. мы ссылаемся на объект коллекции Fields по значению свойства Name объекта Field. так как в этом случае не требуется явного указания имени коллекции при ссылке на объект из коллекции по умолчанию.ClientID.MDB Set MyWS = DBEngine. которая в свою очередь.OpenDatabase("ACCOUNTS. которая будет выполнять функции ссылки на объект. помимо цифрового индекса. Объекты в иерархии должны указываться с полным перечнем "пути" от самого верхнего объекта. который не может быть включен в какой-то другой объект.Fields!Customer Большинство объектов для доступа к данным имеют коллекции по умолчанию. на первый объект TableDef в базе данных с именем MyDatabase можно сослаться как MyDatabase. с помощью которых выполняются какие-либо действия над объектами. называются свойствами.OpenRecordSet("Clients") * Устанавливаем порядок вывода записей MyRS. В этом случае. например: DBEngine. Для получения значения поля Customer вы можете написать: Cust = MyRecordset!Customer что короче. Это единственный объект доступа к данным. который представляется объектом DBEngine. В качестве примера давайте рассмотрим следующий фрагмент программы: * Определяем переменные для ссылки на объекты Dim MyDB As Database. которая содержит один или большее количество объектов Database и т. Требуемый логический порядок вывода записей мы устанавливаем с помощью свойства Index. Обеспечить доступ к записям таблицы Clients призван метод OpenRecordset. Например. для ссылки на конкретный объект допускают ссылку по имени.Index = "ClientID" Для открытия базы данных мы используем метод OpenDatabase объекта Work-space и привязываем к ней переменную MyDB с целью обеспечения дальнейших ссылок.

не предусмотренные стандартно в языке. которые можно использовать для объектов каждого вида. Этот объект может быть инициализирован с помощью свойств Username и Password перед активизацией объекта DBEngine. T a b le D e f Каждый объект TableDef в коллекции TableDefs описывает соответствующую таблицу в текущей БД или присоединенную таблицу во внешней БД. D B E n g in e Этот объект верхнего уровня ассоциируется с процессором данных. а также для открытия объекта Recordset. Этот объект является временным. W o rk sp a ce Используется для поддержки транзакций.5 . выделяя текущую. Коллекцией по умолчанию является Fields. В табл. при описании методов работы с данными. а все ассоциированные с ним данные из памяти. установить его параметры и выполнить запрос. Коллекцией по умолчанию является TableDefs. Seek и Find. но если вы хотя бы немного помните. удаляется из коллекции. что делали на уроках английского языка в школе. 6. Коллекцией по умолчанию для этого объекта является Workspaces. чтобы вы смогли получить представление о тех возможностях. внешней БД или соединением ODBC. Курсор запоминает необходимые данные в виде набора записей в буфере и обеспечивает перемещение по этим записям с помощью методов Move.converted to PDF by HupBaH9I Для большинства объектов доступа к данным программист может задать новые свойства. Теперь пришло время остановиться на каждом из объектов для доступа к данным. которые могут быть реализованы с их помощью в прикладной программе. Он устанавливает системные параметры процессора данных и обеспечивает возможность работы с БД за счет автоматического создания объекта Workspace с номером 0. Коллекцией по умолчанию является Fields. Эта возможность позволяет гибко настраивать объекты в пользовательской программе и как угодно расширять перечень данных. D a ta b a s e Этот объект корреспондируется с базой данных Visual Basic. как только в программе задается первая ссылка на объекты для доступа к данным. который используется для отображения данных из таблицы БД или результата запроса. то уже сейчас сможете сделать некоторые выводы. Q u e ry D e f Этот объект является описанием сохраняемого запроса.4 приведен список свойств. обновлять или удалять необходимые данные. связей и запросов к БД. сохраняемый в запросе. F ie ld . который представляет собой объектный код с операторами SQL. а в табл. Коллекцией по умолчанию для этого объекта будет являться коллекция Databases. изучив названия приведенных в таблицах свойств и методов. мы дадим более подробное описание перечисленных свойств и методов. Объект по умолчанию коллекции Workspaces Workspaces(0) создается автоматически. Он используется для определения таблиц. С помощью этого объекта мы можем просмотреть и отредактировать при необходимости код. и как только он закрывается. Коллекцией по умолчанию является Fields. В последнем случае с помощью этого объекта мы не можем изменить описание внешней таблицы.список методов. R e co rd se t Представляет собой курсор. 6. В дальнейшем. сохраняемых вместе с объектом. является контейнером для открытой БД и обеспечивает секретность работы с данными. что позволяет просматривать.

Коллекция объектов Field представляет собой запись в курсоре объекта Recordset. как TableDef или QueryDef. Каждый пользователь в группе наследует те права доступа. Нужный индекс может быть установлен с помощью свойства Index. Это облегчает управление доступом к данным для нескольких пользователей. относящийся к объектам TableDef или Recordset. имеющих одинаковый тип и свойства. все объекты Field в коллекции автоматически обновляются новыми значениями данных. основанному на таблице. In d e x В этом объекте хранится индекс. Каждый объект Database имеет единственную коллекцию объектов Relation. Данные в курсоре могут быть прочитаны и изменены с помощью свойства Value объекта Field. G ro u p Представляет собой коллекцию пользователей с одинаковыми правами доступа к данным. При этом сохраняются как встроенные в язык свойства. определяемые пользователь-ской программой. Коллекция Parameters объекта QueryDef позволяет получить или установить параметры для выполняемого запроса.converted to PDF by HupBaH9I Этот объект ассоциируется с колонкой данных. которые предоставлены группе. с помощью этого объекта может быть назначен индивидуально для конкретного пользователя. Каждый объект User создается с именем и паролем. Каждый объект Database может иметь только одну коллекцию объектов Container. Процессор данных использует информацию о связях для определения возможности обновления и удаления данных без потери целостности данных в БД. P ro p e rty Запоминает значения свойств какого-либо объекта. P a ra m e te r Запоминает параметры для параметрического запроса. Свои свойства можно описать для следующих объектов: • • • • • • Database TableDef QueryDef TableDef. размещаемых в БД. R e la t io n Этот объект используется для хранения данных о связях между полями двух объектов TableDef. U ser Используется для описания и поддержки условий доступа пользователей к информации. .Field C o n t a in e r Этот объект используется для соединения с объектами Document и перечисления объектов. Как только указатель записи в курсоре перемещается на новую запись. включая объекты. Объект DBEngine поддерживает коллекцию пользователей. Добавление или удаление членов коллекции Users соответственно создает или стирает бюджеты пользователей. так и добавленные для данного объекта программистом. хранящейся в БД.Field QueryDef. Объект DBEngine поддерживает коллекцию групп пользователей. Доступ к таким объектам.Index TableDef.

Например. В таблицах 6. права пользователя для доступа к данным могут быть установлены в этих объектах для получения или уничтожения определенных привилегий.4 .5 используются следующие условные обозначения: 1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 DBEngine Database QueryDef Field Parameter Group Property Workspace TableDef Recordset Index User Relation Container Document Таб ли ц а 6 .converted to PDF by HupBaH9I D ocum ent Позволяет заносить данные в объект Container.4 и 6. Свойства объектов для доступа к данным Свойства 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AllowZeroLength + AllPermissions + Attributes + + BOF + Bookmark + Bookmarkable + CacheSize + CacheStart + Clustered + + + CollatingOrder + ConflictTable + + Connect + + + Container + CreateGroup CreateUser CurrentUsers + DateCreated + + ++ DataUpdatable + + Default User + Default Password + DefaultValue + DesignMaster + EOF + Fields + Filter + Foreign + ForeignName + ForeignTable + IgnoreNull + Index + Inherited IniPath + + LastModified + LastUpdated + LockEdits LoginTimeout + ++ + + .

converted to PDF by HupBaH9I Name + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + NewPassword NoMatch + OrdinalPosition + Owner + Password + + + ++ PercentPosition + Permissions + PID + Primary + + Owner QueryTimeout + RecordCount + + ReplicaDescription + ReplicaID + ReplicaSetDescription + + Required + Restartable + + ReturnsRecords + Signature + Size + Sort + SourceField + SourceTable + SourceTableName + SQL + SystemDbPath + Table + Transactions + + Type + + ++ ++ ++ Unique Updatable + + ++ ++ UserName + + ValidateOnSet + ValidationRule + + ++ ValidationText + + ++ Value + + ++ Version + + Таб ли ц а 6 .5 . Методы объектов для доступа к данным Методы 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AddNew + AppendChunk BeginTrans + + Clone + Close + ++ CommitTrans + ++ + CompactDatabase + CopyFields CreateDatabase + + CreateField CreateGroup CreateInde+ + + ++ ++ + ++ .

мы можем обсудить. На этапе разработки прикладной программы можно использовать самый простой способ .16. добавить или отредактировать хранящиеся в ней данные. С его помощью вы также можете внести в структуру БД необходимые изменения. В его окне в меню File выберите команду New Database. Задайте имя для создаваемой БД и выберите папку. когда вы получили представление о концепции использования объектов доступа к данным и процессора данных для управления БД. как это видно на рис. . В Visual Basic существует несколько способов создания БД. 6. в которой она будет располагаться. После запуска Visual Basic в меню Add-Ins выберите команду Data Manager. В окне Data Manager появится окно с именем новой БД.с помощью Data Manager. как использовать этот инструментарий для создания базы данных.converted to PDF by HupBaH9I CreateProperty + ++ ++ CreateQueryDef + CreateRelation + CreateReplica + CreateTabledef + CreateUser CreateWorkspace ++ + + + ++ + Delete + Edit + Execute + ++ FieldSize + FillCache + FindFirst + FindLast + FindNext + FindPrevious + GetChunk + GetRows Idle + + Move + MoveFirst + MoveLast + MoveNext + MovePrevious + MoveReplica + NewPassword OpenDatabase OpenRecordset + ++ ++ + + RefreshLink + RegisterDatabase + RepairDatabase + Requery Rollback + + Seek Synchronize Update + + + Теперь.

Дополнительно к объектам DBEngine и Workspace. не забудьте убедиться.0. для типа процедуры выберем Sub. созданной в любой другой СУБД при наличии соответствующего драйвера.converted to PDF by HupBaH9I f j f Date Man ago г .Main. Естественно.D:\My DocumcrHo\DOC\Ncw 8ook\aulostore. не приемлемы. Создадим в проекте программный модуль путем выполнения команды Module в меню In s e rt. посредством технологии ODBC мы можем создать.Public.1 6 . Field для каждого поля каждой таблицы. Поэтому использование объектов доступа к данным для создания БД обеспечивает максимальную гибкость и самые широкие возможности в работе. Создание базы данных с помощью Data Manager Второй способ создания БД основывается на использовании в Visual Basic формата хранения данных Microsoft Access. если в соответствии с заданной функциональностью необходимо создание БД в процессе работы прикладной программы. После в этом же меню выполним команду Procedure.mdb OIb И Н П iiyidow tldp □nl-cibose: ПЛМу Doc(imenls\DCC\Newr BttDk\aulo(stare mdti Рис. После нажатия кнопки OK появится шаблон. 1. Index для каждого индекса таблицы. созданная в СУБД Access 7. которые определяют рабочую среду. может быть "полнокровно" использована в программе. а в дальнейшем управлять из программы Visual Basic базой данных. Используйте оператор Dim для создания новых переменных. Перед тем как использовать объекты для доступа к данным. готовый для написания программного кода. TableDef для каждой таблицы. . Далее необходимо выполнить следующие действия. Тем самым любая БД. В меню Tools при задании команды References в появляющемся диалоговом окне должна быть помечена библиотека Microsoft DAO 3. как это показано на рис. 6. Назовем проект Create_DB. Перечисленные варианты.17.0 Object Library. написанной на Visual Basic. как правило. что установлена ссылка на соответствующую библиотеку. с помощью которых будет выполняться ссылка на соответствующий объект. необходимо иметь: • • • • Один Один Один Один объект объект объект объект Database. а для диапазона действия . Для создания новой БД в меню File Visual Basic выберем команду New P ro ject. 6 . включенный в БД. В появившемся диалоговом окне напишем имя создаваемой процедуры .

Workspaces(0) Set oAutoDB = oAutoWs.CreateDatabase("AUTOSTORE. S o u rce .указывает имя таблицы внешней БД.CreateTableDef([cName [. которому может предшествовать указание пути доступа к файлам. мы должны определить следующие переменные: Public Sub Main() ' Определяем переменные Dim oAutoDB As Database. Оно должно начинаться с буквы и иметь не более 40 символов.CreateTableDef("Customer") . oAccountIdx(2) As Index Dim oAutoRel As Relation Dim oIndexFld(3). состоящего из двух связанных таблиц Customer и Account.имя переменной для ссылки на объект TableDef. которая будет являться источником данных. Например. Options]) где • • • • • o D BV ar .задает дополнительные параметры для БД. соответствующей стандартной таблице расположения символов. используя следующие строки: Set oCustomerTd = oAutoDB.converted to PDF by HupBaH9I Таким образом. можно использовать константу dbEncrypt для шифрования данных в создаваемой БД.имя переменной для ссылки на объект Database.имя переменной для ссылки на объект Workspace.MDB". Для этого надо использовать константу dbLangCyrillic. В имени таблицы не должно использоваться знаков пунктуации и пробелов. oAccountTd As TableDef Dim oCustomerFlds(8) As Field.имя переменной для ссылки на БД. oAutoWs As Workspace Dim oCustomerTd As TableDef. O ptions . Для создания БД Autostore используем следующий код: Set oAutoWs = DBEngine. 3. можно использовать операторы C hD rive и ChDir. oAccountFlds(7) As Field Dim oCustomerIdx As Index. для создания фрагмента БД Autostore.]CreateDatabase(cDataBaseName . которая устанавливается заданием константы dbLangGeneral. Source [. cN am e . в основном используемые для внешних источников данных. соответствующей русскому алфавиту. cD ataB aseN am e . A ttrib u te s . Attributes [. o D BV ar . или последовательности.определяет характеристики соединения в случае использования внешнего источника данных.имя создаваемой таблицы. C onnect . Locale [. Lo cale .]]]]) где • • • • • • oTD V ar . Для России наиболее подходящим может быть использование последовательности. Создадим две таблицы в БД Auto_Store.устанавливает дополнительные характеристики для создаваемой таблицы._ dbLangGeneral) Чтобы создаваемые файлы при записи на диск оказались в нужном месте.имя создаваемой БД. oW SV ar . Используйте метод CreateTableDef объекта Database для создания таблиц в БД: Set oTDVar = oDBVar . oRelFld As Field Для непосредственного создания БД используйте метод CreateDatabase объекта Workspace: Set oDBVar = [oWSVar .последовательность расположения символов в таблицах БД при сортировке или индексировании данных.

o dbLongBinary . 6. oTD V ar .имя переменной для ссылки на объект Index.тип создаваемого поля. o dbInteger . как для имени таблицы.целое положительное число. Size]]]) где • • • • • o FV ar . o dbLong .имя переменной для ссылки на объект Field.CreateField([cName [.символьная строка для ссылки на OLE-объект. для того чтобы указать. Правила его задания такие же. табл.CreateField("KEY_CUSTOMER") .CreateTableDef("Account") 4.символьное.ширина создаваемого поля. Type [. S iz e .целое число (2 байта).converted to PDF by HupBaH9I Set oAccountTd = oAutoDB.255).4). Этот параметр необходимо указывать только для символьных полей (1 . Необходимые характеристики для создаваемого индекса можно задать с помощью соответствующих свойств объекта Index (см. Для таблицы Customer создание первичного индекса может быть выполнено следующим образом: Set oCustomerIdx = oCustomerTd.CreateIndex("CUSTOMER_ID") oCustomerIdx.Unique = True Теперь следует с помощью метода CreateField создать поле. Для создания индексов используйте метод CreateIndex объекта TableDef: Set oIVar = oTDVar .CreateField("NAME_CUSTOMER".имя создаваемого поля. Проиллюстрируем использование этого метода на примере создания нескольких полей для таблицы Customer: Set oCustomerFlds(0) = oCustomerTd. o dbDouble . какое поле будет использовано в качестве ключевого. Для создания полей в таблице используйте метод CreateField объекта TableDef: Set oFVar = oTDVar.Attributes = dbAutoIncrField Set oCustomerFlds(1) = _ oCustomerTd.имя переменной для ссылки на объект TableDef.CreateIndex([cName]) где • • • o lV ar . o dbMemo . o dbText . o dbByte . o dbCurrency . o dbSingle . 100) 5.поле примечаний. Правила задания имени поля такие же. как для имен таблиц.CreateField("KEY_CUSTOMER".имя индекса. В Visual Basic вы можете использовать следующие константы для указания типа поля: o dbDate .денежное выражение.числовое.дата и время. cN am e .целое число двойной точности (4 байта). cN am e .имя переменной для ссылки на объект TableDef. o dbBoolean . oTD V ar . dbLong) ' Установим для этого поля автоматическое приращение ' значения с помощью свойства Attributes объекта Field oCustomerFlds(0). dbText.Primary = True oCustomerIdx.числовое с плавающей точкой двойной точности. как это показано в следующем примере: Set oIndexFld(0) = _ oCustomerIdx. T yp e .логическое (значения Yes/No).

не имеющие соответствующих записей в родительской таблице. будет выглядеть следующим образом: ' Добавляем поля в таблицы oCustomerTd. cParentTable [. Collection . После создания отношения необходимо создать поле для отношения в родительской таблице и указать соответствующее ему поле в дочерней таблице. o dbRelationUpdateCascade . o dbRelationDontEnforce .Fields.Append oVar где • • Collection .имя переменной для ссылки на добавляемый объект. cP a re n tT a b le . o dbRelationRight . как это показано в следующем примере: ' Создание связи между таблицами "Один ко многим" Set oAutoRel = oAutoDB. o D BV ar .в отношении будет поддерживаться каскадное обновление.в отношении будет поддерживаться каскадное удаление. а затем создать его заново с требуемыми значениями свойств и после этого добавить в коллекцию. cN am e .Append oIndexFld(2) .CreateRelation("CustToAcc".отношение существует не в текущей БД между двумя присоединенными таблицами. o dbRelationInherited . а таблицы и отношение в БД с помощью метода Append. "Account") Set oRelFld = oAutoRel. cChildTable [. cC hild T ab le .Append oCustomerFlds(1) ' Добавляем поля в индексы oCustomerIdx. A ttrib u te s . Добавьте созданные поля и индексы в соответствующие таблицы. не имеющие соответствующих записей в дочерней таблице. Attributes]]]]) где • • • • • • o R e lV a r .в отношении не поддерживается целостная ссылочность. что после добавления объектов в соответствующие коллекции большинство их свойств не может быть изменено.имя переменной для ссылки на объект Relation. в которую добавляется объект. Установите отношение между таблицами.отношение "один к одному".задает тип создаваемого отношения за счет использования следующих констант: o dbRelationUnique . o dbRelationLeft .Fields. Для этого используйте метод CreateRelation объекта Database: Set oRelVar = oDBVar.Append oIndexFld(1) oAccountIdx(1).имя дочерней таблицы в создаваемом отношении. обеспечивающий добавление объектов в коллекции. o V ar .Append oIndexFld(0) oAccountIdx(0)._ "Customer". Правила его составления такие же.в дочерней таблице могут оставаться записи. Для нашего примера фрагмент кода.ForeignName = "KEY_CU STOMER" 7.Fields.CreateRelation([cName [.Fields. Обратите внимание.в родительской таблице могут оставаться записи.converted to PDF by HupBaH9I 6.имя коллекции. как для таблицы.имя создаваемого объекта. Для изменения свойств в этом случае вам придется сначала удалить соответствующий объект с помощью метода Delete.имя родительской таблицы в создаваемом отношении.Append oCustomerFlds(0) oCustomerTd.CreateField("KEY_CUSTOMER") oRelFld.Fields. o dbRelationDeleteCascade .имя переменной для ссылки на объект Database.

посредством редактора Microsoft ISQL/w. После создания БД вы можете использовать объекты доступа к данным для программного изменения ее структуры.Append oCustomerIdx oAccountTd. являющиеся составными частями отношения.OpenDatabase("AUTOSTORE.TableDefs. существующие в БД объекты могут быть удалены.Delete "Новая таблица" Следует иметь в виду.Append oAccountTd ' Добавляем отношение в БД oAutoDB.TableDefs.Workspaces(0). добавляя новые объекты TableDef или новые поля и индексы.CreateField("Новое поле". Программный путь создания БД посредством одной из составных частей MS SQL Server редактора Microsoft ISQL/w . а после его добавления в коллекцию . 6.Indexes.Fields. Вы также можете добавлять в БД новые таблицы. В этом параграфе мы опишем создание базы данных как программным путем.Indexes.Relations. 6. используйте для модификации БД операторы этого языка.реализуется простым набором команд.Close ' Закрываем БД Естественно. На практике обычно для сокращения объема кода используют одну и ту же переменную сначала для создания объекта.Indexes.Append oNewFld oDB. dbInteger) ' Добавляем новое поле в таблицу oNewTd. добавляя новые объекты Field и Index в существующие таблицы. нажав кнопку с треугольником в верхней правой части окна.TableDefs. Лишь после этого вы сможете удалить объекты Field или TableDef. находясь в Microsoft SQL Enterprise Manager.Append oAccountIdx(0) oAccountTd. что при удалении индексного поля сначала следует удалить сам индекс и связанные с ним объекты Relation. которые мы выполняли при ее создании.Append oCustomerTd oAutoDB. программно посредством технологии SQL pass-through из клиентского приложения и путем наращивания (upsizing) локальной БД. как это показано на рис.Append oAccountIdx(1) ' Добавляем таблицы в БД oAutoDB. MS SQL Server Создать базу данных в MS SQL Server можно несколькими путями: визуально. которые мы можем тут же запускать на выполнение. если она . Если вам больше нравится SQL.MDB") Set oNewTd = oDB. так и с помощью процесса наращивания.Append oAutoRel Для ясности в примере мы использовали различные переменные для каждого объекта доступа к данным.Fields. Редактор ISQL/w имеет несколько страниц.для ссылки на следующий объект.Append oRelFld ' Добавляем индексы в таблицы oCustomerTd. Модификация БД очень похожа на те действия. В большинстве случаев для добавления объектов достаточно использовать те же самые методы Create и Append.CreateTableDef("Новая таблица") Set oNewFld = oNewTd.4. Давайте посмотрим на следующий простейший пример добавления таблицы в существующую БД с помощью объектов DAO: Dim oDB As Database ' Переменная для нового объекта TableDef Dim oNewTd As TableDef Dim oNewFld As Field' Переменная для нового объекта Field ' Открываем БД Set oDB = _ DBEngine. На вкладке Results вы можете просмотреть результат выполнения команды.18. добавленной в БД в предыдущем примере: oDB.TableDefs.converted to PDF by HupBaH9I ' Добавляем поля в отношение oAutoRel. На прилагаемой к книге дискете помещен полный код программы для создания БД Auto_Store в Visual Basic. на первой из которых мы можем набирать необходимые команды.Append oNewTd' Добавляем таблицу в БД oDB. Набранную команду можно тут же запустить на выполнение. программно. Мы можем использовать метод Delete для удаления таблицы.

RUBEN21auto_slore\sa tl Oueiies1 Queiy 5"'_EIT-i...**.1.....i/uti ч а г и " l|l^'|Sloshes yO ......... 1 ConnecliQns T 0 & 30...1 9 ..-чНМ + — Li i i ® L t U ..? 67F.. Просмотр результатов выполнения команды в SQL Server ....fi ::: n v C &) AJIk Ih I) 0 & C o n n e c ts 11 1 l^/H Рис.... 6.nll I5QI {w F_itc L riil Q uery W indo w Help Query ■I:I..I HEHESm [i=^t? f i n model ЗЙС J i u y A } Гюип ‘ 'iltOriO' n 6 Ы12 6 ii :'n1 \n--П*-hI J i■ Б00 з i bOOl J-snqe J ь r i y in g ip 'ir 6 ?S Ihc^roloT F o rd O S i 1иш1 L in c o ln tl-?II. ii....f b y r a A 300 ■ 1to: '... Вы можете убедиться в этом.converted to PDF by HupBaH9I предусматривает вывод данных (рис. 6 .. I'lj J 'j ....riJti-r-E*rN” Itel t& i-Pd ri1: ПввдеBm£i R o l i в. 6.. Набор команды в редакторе SQL Server M..44j Ji..11 N !"..21... взглянув на рис...NL ■1 J 4?S? ■155.20 и 6...1 8 .!h Hl i n i r .. Ц E>ei:uie£ Hie current Queiyietf Рис..100 Of тГе..-. 6 ..19).11Ifr'i-..-1П “ Г-: m an *o d *i n n и H CPE a s e l e i r Uo s f f i » м N [■ m o [ f s l - | :-..111111 :.. 7 r....rv[^. Microsoft ISQUw F rlc F flil O iir iy W in d o w H e lp Query . 11..... Остальные вкладки обеспечивают возможность очень наглядного графического представления условий выполнения команды.......t 1 Г Fi [SI I^В Sha^prjEl г..

При этом необходимо учитывать..jl ■■ 1Д I Rhnwplun ELECT ■ .. ^ 1 S E L E C T m odal ь в ш в _ т й QlMiy 1 St ewelflu S con CehmiI I ■sj R e d d s 4-lfv ' H ■ ■ -..2 0 . S IZ E = nValue2 [. либо создать подобное устройство. 6 .■ : 1 Рис..2 1 .---||.converted to PDF by HupBaH9I MiacktDfi \тш file Edit Q u ery W in J ew IHie'lp й и нг у -RUBEMP\*iiln_ElDfB\fla jg jr s ij О цтвз. Графическое представление выборки в SQL Server M IcrotoftlSQUw | N il* E d it Q u e ry W im ir jw H e lp Q u ery - № !!" u. заранее резервируя место на диске. необходимо решить. 6 . Устройство создается следующей командой: DISK INIT NAME = cLogicalName. ijn Quary SM | 2 R U B E M \ s u i a js I q г в \ а а R ssuN T I - I '. Размер Device указывается уже при его создании.liii. на каком из существующих устройств .Device наша база данных будет храниться.■ •I' j '. PHYSNAME = cPhysicalName. Device . который MS SQL Server использует для размещения одной или нескольких баз данных. то есть Device может хранить часть базы данных..файл. Графическое представление отношение в выборке между таблицами в SQL Server Прежде чем создать БД.. VDEVNO = nValuel. что база данных может находиться на нескольких устройствах. 5ш i Рис. VSTART = Adress] Описание опций этой команды приведено в следующей таблице: .

DA" h D E IN & BINN П Г Н А Р З E ГЗ D SAMP_LIB. SIZE Количество 2-килобайтных блоков.DAT'.[i AT Q M'jDE. который является хранилищем устройства: DISK INIT NAME = 'Rdev_lib'.Q REFLOAT A L О SAMPL ГА P i lj=imp Cn “ OGLT.22. Его название должно удовлетворять требованиям операционной системы. которая будет храниться в устройстве. VDEVNO Уникальный номер устройства между 1 и 255.=n . 6. VSTART Смещение первой базы данных. В качестве примера создадим устройство Rdev_lib.*. которое будет использоваться внутри SQL для обращения к нему.DAT . Не может превышать 30 символов. В - C:\SQL_BD\DATA\*.Q vpp Ш Рис.n D MASTER.[RUBIC] 4. _ Q Progiam Files ^ainple £tl :l: U L_L. 6.OAT D MSDELOG. который мы можем увидеть в File Manager Windows NT.22 приводится результат создания устройства. PHYSNAME = 'C:\SQL_60\DATA\SAMP_LIB. где SAMP_LIB. в котором устройство будет храниться. S IZ E = 5120 На рис.I. VDEVNO=1.DAT □ SAM Pjni^ DAI Cj DLL Q INSTA. PHYSNAME Дисковый файл.имя файла. .converted to PDF by HupBaH9I Описание П редлож ение NAME Название устройства. Далее обязательно необходимо создать устройство Rdev_log для журнала транзакций БД: DISK INIT . .. Минимальное число .500 блоков или 1 Mбайт. По умолчанию 0.£7] u.

converted to PDF by HupBaH9I NAME = 'Rdev_log'.их отображение в Server Manager.H d e v jn g Name Jog OK: Mirro' dig _| [lefadt Oenc S ire | M61: Hep Device Space Usage auto store IP MB Рис. Синтаксис команды.2 4.24 показаны характеристики вновь созданных устройств. 6 .Rdev lib Рис. 6 . где числа 10 и 4 обозначают резервируемое пространство в мегабайтах.DAT'. с помощью которой создается база данных: Edit Database Devices . t ( lit D a la b a s e D e v ic e s . PHYSNAME = 'C:\SQL_60\DATA\SAMP_LOG.23 и 6. которая будет размещаться на двух устройствах: Rdev_lib и Rdev_log.2 3 . Теперь мы можем создать базу данных Auto_Store. VDEVNO=2. S IZ E = 2048 На рис. .25 . а на рис. 6. 6.

Создадим в ней две таблицы: Country и Firm.O) \..converted to PDF by HupBaH9I S e rv e r M a n a g e r Server: RU BEN 2 Microsoft S Q L Servers Ё = fj Mygroup EI-aR RUBEN2 (SQL Server G. tim e s_ tim estam p) . но пока она совершенно пуста. nam e_country varchar(20) NOT NULL. 6 . CREATE DATABASE DatabaseName [ON {D EFA U LT | DatabaseDevice} [= Size ] [.B termpdb 3 ___ | Login? S Q L G. PRIMARY KEY CLU STER ED .ш S Q L EH8CLjtiV8 £}■ 0 3 D atabase D ev ice s ^ = j master M S D B D a ta g M SD BLog g B y ^ R d e v jo g Ej3--(^J Dump D e v ice s £ J D a tab a se s i й -е ■auto_slQre ! ш -Ё master ! Й. вы можете установить с помощью ключевого слова LOG ON.1) .. никто не сможет ни случайно. резервируя определенный размер на каждом устройстве. Можно указать более. вы можете распределить базу данных между несколькими устройствами.] [LOG ON DatabaseDevice [= Size] [. Если вы укажете ключевое слово DEFAULT. Если вы указываете опцию FOR LOAD. которое определено в таблице Sysdevices.B model ! ш -Е msdb I f i. то есть вы можете написать: ON DEFAULT = 5. чем одно устройство.. ни преднамеренно редактировать базу данных между временем создания базы данных и ее загрузкой. связанные по полю key_country. Опция FOR LOAD резервирует базу данных для перезагрузки предыдущей копии базы.. Устройство.2 5 . Как мы уже упоминали и это видно из приведенного синтаксиса. DatabaseDevice [= S iz e ]].O Рис. то база данных будет создана на устройстве по умолчанию. DatabaseDevice [= S iz e ]]. U SE Auto_Store Создаем таблицу Country: CREATE TABLE Country (key_country smallint ID EN TITY(1. где будет храниться журнал транзакций базы данных. CREATE DATABASE A uto_Store ON Rdev_lib = 10 LOG ON Rdev_log = 4 База данных A uto_Store сущ ествует.] [FO R LOAD] Аргумент D atab aseN am e указы вает имя вновь создаваемой базы данных.

Manage Tables ■RUDCN^juta_sEoTC 20 2 numeric 5.1 :m sllril 2 Jif . n: kej_lyne ktv_badj^ v'' i4if№K 5._d ■■ numeric 1. 6.гтцЦп1 11II1■ III ■ . 111 2 V­ I I i г ■. name_firm varchar(20) NOT NULL. tim es_ timestamp) На рис.1 y" Lonjjc numeric- 5.0 v'' numeric- 1.26 приведен результат выполнения команд C R EA TE T A B L E и A L T E R T A B L E для таблицы Model. а на рис..27 . Отображение данных для таблицы Model в Manage Tables .П numeric 1.список всех созданных таблиц в Server Manager. numeric 5.2 6 .converted to PDF by HupBaH9I Создаем таблицу Firm: CREATE TABLE firm (key_firm smallint ID EN TITY(1.---- 111 [II ■ <L- Рис.1 / Kw_lucLoil :.0 / quwlity^eed 1г*фЬ IKifmtrx .o 5.1' -. key_country smallint REFERENCES country(key_country).0 numeric 20 |4 1.0 ■1. 6 . 6.1) PRIMARY KEY CLUSTERED.

Например: CREATE TABLE Таблица_с_русскими_полями (код smallint ID EN TITY(1. зарезервированы для локальных переменных. 5. имя таблицы также может быть русским. Названия должны быть длиной от 1 до 30 символов.28 приведен результат выполнения данного примера. Названия полей должны быть уникальными для одного и того же пользователя в одной и той же таблице. 6. После создания таблиц необходимо позаботиться о привилегиях доступа пользователей к той или иной таблице или полю. а идентификаторы.converted to PDF by HupBaH9I S e r v e i M anager ZR 5»уаг. Первым символом может быть буква или знаки "_". 3. Пробелы внутри названий не допускаются. 4. "#". прекрасно поддерживают эту возможность.1) PRIMARY KEY CLUSTERED. Эти привилегии. которые начинаются с "@". Самое время сделать несколько замечаний относительно использования русского языка в названиях таблиц и полей. Остальными символами могут быть буквы. работающие под управлением Windows 95. также позволяет создавать таблицы с русскими полями.2 7 . Естественно. время timestamp) На рис. такой на порядок более серьезный продукт. Идентификаторы. Названия колонок должны быть уникальными внутри одной таблицы.0] !^ = . как . наименование varchar(20) NOT NULL. как SQL Server. Оказывается. Привилегии доступа выделяются пользователям или группам посредством оператора GRAN T и изымаются с помощью оператора R EV O KE. |ftuaEN2~ (^ Microsoft SQL 5erveis 1= Mygrcup L-i R L I0 E N 2 [SO L S e rve r Б. Приведем правила SQL Server для присвоения идентификаторов полей: 1. Не возникает проблем и при наращивании БД (upsizing) с русскими названиями полей и таблиц в архитектуру клиентсервер. знаки "#" или "$". которые начинаются с "# ". SQ L E x e c u tiv e L+i _ J Database Devices И j D u m p D e v ic e t 0 О Datsba:*: 4 ^ ^utD_at>ofe *1 U Publics iOrlF i! G ro u p s /U s e rs Objects id -1 ■ [TTj] эссоигу (dbo) ГнЗ au(omobJe_paMen5ei_car(dbo) : ■ Ь о ф [dbDj Щ country (db&l I7T5 customer (cto) О [dboj НПЗ fiiel_oil Idbo] fiT^ model (dba) : ГПИ c/deL [dba[ ■ sa1e №о] - ■|Щ tjne ldbo| Щ wlesman [cJboJ |j C_| Views T1 : "~l Stored Piocedmes_________________ Рис. 6 . более того. зарезервированы для временных объектов. цифры. "@". что все рассматриваемые СУБД. 2. 6.

Lena key_country tim es_ Karina Karina Lena Karina Lena Lena Lena Lena Karina Lena Karina Lena Karina Lena Lena Lena Для назначения указанных полномочий создаем группу Piter_group: sp_addgroup piter_group Последовательно создаем процедуры регистрации с именами login_lev1. auto_store Созданные процедуры регистрации появляются в списке. Допустим. REFERENCES . как это показано на рис.2 8 . UPDATE .право на удаление данных. Karina и Lena.29. DELETE . IN SERT .администратор базы данных). указанные в табл. которые входят в одно подразделение Piter_group. auto_store sp_addlogin login_lev2. login_lev2 и соответствующими им паролями lev1. Manage Tables ■RUBENZ^utn Яогс Рис. ссылающихся на данную таблицу (можно указать определенные столбцы). 6. присваивает владелец соответствующих объектов (он же . lev1. 6 . разрешенные для обновления). Применительно к таблицам и представлениям можно управлять следующими правами доступа: • • • • • SELECT . который можно просмотреть в Server Manager. lev2 для БД Auto_Store: sp_addlogin login_lev1.6 . что у нас в системе два пользователя.право на добавление данных.право на выборку данных. Lena tim es_ key_firm name_firm Karina. lev2. . Образец назначения привилегий доступа для пользователей Таблицы Поля S E L E C T IN S E R T D E LE T E U PDATE Country key_country Karina Karina Firm name_country Karina. Т аб л и ц а 6 . и нам необходимо предоставить полномочия. 6.converted to PDF by HupBaH9I правило.право на использование внешних ключей.6.право на обновление данных (можно указать определенные столбцы.

Список Logins . как это показано на рис.■ +! master :+] modd ?! ^ nnEdb +i E. что является результатом хранимых процедур sp_addgroup.i' | _ j Dump Devices !Databases Г+: ^ aul»„slone . 6.результат выполнения хранимой процедуры sp_addlogin Создаем пользователей с именами Karina и Lena для группы Piter_group: sp_adduser login_lev1. piter_group Пользователей в новой группе вы можете увидеть в соответствующем списке Server Manager. . 6 . karina. sp_adduser.converted to PDF by HupBaH9I Server Manager ID Seiran RUGEN2 ^ 0 Miciosdi SQL Seivers Wygioup 3 RU BEN 2 |SQ L Servef £ □ ] = r SOL EKSCutive if' Database devices . lena.2 9 . Появились новые пользователи.30. piter_group sp_adduser login_lev2. ' J lernpdb Logins \*mxm ■ ■' f j j Iggintev? ■ ■( J j login Iev3 login_Sev4 login_lev5 m 5 3 pobe repLpuMshei feDL^ubicnber га Й i^) SQL Ы ) Рис.

6 . delete ON country TO Karina REVOKE insert. key_country.RLJBENZfSQLSerwH SQ1 ' i==t SQL Ёxecuhve l+f L J D atabase D eeres l+i L J Dump Devices 1=1 ^ Databases j :. С помощью команд GRAN T и R EV O KE устанавливаем привилегии: GRANT insert. delete ON firm FROM Karina REVOKE insert.^ auto_siare ti _ J Publication? 0 ^ Gioups/Usefs -: ffcpiter_group Elena lid Karins Lena ® Ruben SfcDubyo Obiecte T .t. delete ON country FROM Lena GRANT update. 6. как это показано на рис.3 0 . IT masbef Рис. Lena GRANT update. select ON firm (nam e_firm ) TO Karina. .31. Lena Появившиеся права доступа отображаются в Редакторе управления правами доступа. как это показано на рис. Lena REVOKE update.converted to PDF by HupBaH9I S erver M a n a g e r Ш U |b J RUBEM2 Mtcrosoft SQL Serveis Mygioup □ ■0 .sbtei LJ ir j Stored Piocedures |__J Rules DefauJs i ~l Us* Defmed Datatypes : . delete ON firm TO Lena GRANT insert.32. а более детальную информацию можно получить. tim es_) FROM Karina. Lena REVOKE update. select ON country (name_country) TO Karina.select ON country (key_country. 6.select ON firm (key_firm . tim es_) FROM Karina.

u J V ff T Colirtfin Seleit Uptat* Co^... возможно.3 2 . . dbo HE w m dbo ПЦ dbo ffl dbo dbo Ш rtf dbo Ш vT №se Insert Updatt Ek k j I + & V* ■ щ Г.это процесс..fUJ6EN£\eut»_store By Object by Utet Object E 3 cusitofner№ □) Group Sei User Name Selecl pitei_group И Elena Inseal Update Delete Ex _J J Grant All _4 Revoke All Ira Kaina г Lena Rub^n 1 _____ ж 1 public dbo i _ Г ____ Cfllumrs Level Permissions.i 1 .converted to PDF by HupBaH9I Object Permissions . 6 . kjei)_HJ-itorrie j f c n ame custon У - address Ы lax la stjiam * lifst_name patronymic s f V T Help Рис. u J - _____ . например Visual FoxPro. со многими другими атрибутами. 1 com m ent J tan lirst_nem e В V jufidical V* tre^m stom e УГ V last name V! n am s_cysl(* M v+ (All Help Рис. 6 .iobile_ body coimlr}) Icuittxnsr firm fueLoil model ordei_ OiNFier Tvpt SiJectl dbo m lJ _ dbo и dbo m Ж . Si ■ _ г____ 4 Column 9 fftll Co^.3 1 . Планирование процесса наращивания Наращивание (upsizing) . с теми же данными и.. в ходе которого на внешнем сервере создается база данных с той же табличной структурой.irmns] S e JK t ’I Updat. Object Permissions . Column L e v d Permissions: Object account autor.. что и у исходной локальной базы данных.fUJBENftauti» store By User User/Group: I Ey Qbiett ut»|eet Object rm s 0 £ Lei4 l 5 bles + ^ Views ^ Member of: Set A | Object D^eclsGra^ d G rani All to Revoke All Skiied Pdocedu.innnsl dddre-.

и оцените скорость. Мастер наращивания создает базу данных SQL Server. до которых база данных может расти. он резервирует фиксированную область пространства для этой базы данных на одном или нескольких устройствах. Преобразовать таблицы локальной базы данных и локальные представления в таблицы внешней базы данных и внешние представления. достаточно ли места на диске сервера. Мастер наращивания просит выбрать устройства для базы данных и для журнала. Чтобы создавать новые устройства. Осуществить миграцию локального приложения в приложение клиент-сервер. в которой для описания данных используются таблицы и представления Visual FoxPro. что вы обладаете необходимыми полномочиями для доступа к серверу. необходимо предпринять определенные действия в том случае. прежде чем будет исчерпано все место. Чтобы построить новую базу данных. . вы можете создать приложение клиент-сервер для любого внешнего источника данных ODBC. создается приложение. В среднем. чтобы они использовали не локальные данные. в каком сможет их создать. Чтобы оценить размер базы данных. оценить размер базы данных и проверить. которое работает на локальном компьютере или файл-сервере. В первую очередь убедитесь. С помощью Мастера наращивания можно выполнить следующие действия: • • • Переместить локальные данные на внешний сервер. Хотя Мастер наращивания обращается к серверам SQL Server.использование Мастера наращивания (Upsizing Wizard). Рассмотрим процесс наращивания приложения.converted to PDF by HupBaH9I С помощью наращивания на базе существующего приложения. Вы также можете переадресовать представления Visual FoxPro. Для серверов. отличных от SQL Server. функционирующее в архитектуре клиентсервер. Кроме того. 1. насколько это возможно. Чтобы запустить Мастер наращивания. чтобы добиться максимальной производительности работы на внешнем источнике данных. Для переноса баз данных и содержащихся в них таблиц и представлений из локального прототипа на внешний сервер MS SQL Server самый простой путь . базы данных и таблицы с помощью средства администрирования SQL Server. Когда вы создаете новую базу данных. оставив на сервере базу данных и устройства в том объеме. нужно иметь определенные полномочия на работу с сервером SQL Server. Размер базы данных просто определяет границы. каковы размеры файлов DBF в Visual FoxPro для таблиц.1. он прекратит работу. которые вы намерены наращивать. созданного в Visual FoxPro. необходимо так выбирать особенности проектируемой архитектуры приложения и программной модели. которое вы собираетесь наращивать. которая. Диапазон требуемых полномочий зависит от круга решаемых задач: • • • Чтобы провести наращивание в существующую базу данных. с какой будет расти новая база данных на сервере SQL Server. можно с помощью функций сквозного запроса SQL создать внешние таблицы. по крайней мере. Если Мастер наращивания исчерпает все дисковое пространство на сервере. дублирует функциональные возможности таблиц базы данных Visual FoxPro. а вновь созданные внешние данные. что на диске сервера достаточно свободного места. осуществляющие доступ к таблицам сервера. Локальный прототип представляет собой рабочую модель приложения. Не вся эта область обязательно будет использована базой данных. как вы продумаете все детали работы приложения клиентсервер и будет готов локальный прототип.3 . После создания базы данных на SQL Server можно увеличить ее размер. Когда сервер SQL Server создает базу данных. Вы можете удалить неудачно созданные устройства. вы должны быть системным администратором. нужны полномочия CREATE TABLE и CREATE DEFAULT. каждый мегабайт данных Visual FoxPro требует. Нужно также установить размер базы данных и устройств. Создавая приложение. нужны полномочия CREATE DATABASE и SELECT на доступ к системным таблицам базы данных Master.5 мегабайт в среде SQL Server. Перед проведением наращивания следует убедиться. Этот процесс можно начинать сразу после того. а затем с помощью Visual FoxPro создать внешние представления. если наращивание производится на нескольких дисках или устройствах. на который будет осуществляться наращивание. посмотрите.

1. Новые устройства должны иметь размер. который является устройством главной базы данных Master. Чтобы создать устройство. чем требуется для базы данных. Если какие-либо таблицы нельзя открыть для монопольного использования. Однако в Мастере наращивания можно задать только одно устройство для базы данных и одно для журнала. задайте для устройства больший объем. Перед проведением наращивания было бы разумно создать резервную копию базы данных (файлов DBC. на котором объем свободного пространства не меньше. Вы можете в любой момент нажать кнопку Cancel и прекратить процесс. 6. а работает с файлом DBC непосредственно. но только на одном физическом диске . используемых в Visual FoxPro. 2. Если это возможно. Размер устройства изменить нельзя. а журнал базы данных . что у Мастера наращивания будет достаточно пространства для наращивания базы данных и даже останется место для увеличения объема ваших данных в дальнейшем. При сбое диска у вас будет больше шансов восстановить базу данных в том случае. Перед созданием новой внешней базы данных убедитесь в наличии источника данных ODBC или именованного соединения в базе данных Visual FoxPro. В меню T o o ls выберите команду Wizards. Запустите Мастер наращивания. принимаемые по умолчанию. в привычном стиле Мастеров. переименовывая таблицы и представления при создании новых удаленных представлений. заменив модифицированные файлы DBC. сделайте эти устройства (и только их) устройствами. а затем выберите Upsizing. по крайней мере не меньший. можно создать устройства до запуска Мастера наращивания. что на обоих дисках имеются достаточно большие устройства. Мастер наращивания показывает. Последующий процесс выполняется в диалоговом режиме. сколько свободного места имеется на существующих устройствах SQL Server. увеличьте величину этого коэффициента.выбор локальной БД. Все базы данных и журналы SQL Server размещаются на устройствах. если на сервере имеется несколько дисков или если вы хотите разместить базу данных или журнал на нескольких устройствах. убедитесь. DCT и DCX). На рис. тем самым резервируя на диске определенную часть пространства для собственных нужд. чтобы вы смогли впоследствии расширить ее или поместить на то же самое устройство другие базы данных или журналы.на другом. необходимые для размещения базы данных или журнала. В большинстве случаев Мастер наращивания обеспечивает контроль над устройствами SQL Server в более чем достаточном объеме. открывая его время от времени как таблицу. Мастер наращивания выдает соответствующее сообщение. Чтобы задать несколько устройств для базы данных или журнала. Мастер наращивания позволяет создавать новые устройства. можно создать новое устройство с помощью Мастера наращивания. Открытие таблиц перед наращиванием в монопольном режиме позволяет предохранить их от попыток пользователей модифицировать записи. Выберите устройство. DCT и DCX копиями с исходным содержимым и отменив тем самым все переименования и создание новых представлений. Тем не менее. Убедитесь в том. Затем запустите Мастер наращивания и выберите Default для устройства базы данных или журнала. и при необходимости создайте новые устройства. можно разместить базу данных на одном диске. Устройство . умножьте размер своих таблиц Visual FoxPro на два. а если какие-либо таблицы уже открыты и имеют статус совместного пользования. После того как вы создали источник данных ODBC и сделали все необходимые приготовления на компьютере клиента и на сервере. SQL Server допускает размещение баз данных и журналов на нескольких устройствах. . Если ни одно из существующих устройств не обладает достаточным количеством свободного пространства. можно приступать к наращиванию. Если вы сделали копию базы данных. Если для новой базы данных или журнала SQL Server не требуется использовать все устройства. чем оценочный размер базы данных. SQL Server создает файл. принимаемыми по умолчанию.converted to PDF by HupBaH9I Если на диске сервера много места. что вы создаете достаточно вместительные устройства.это одновременно и логическая область.на том. Если вы рассчитываете добавлять много информации в базу данных. Это гарантирует. если она разведена с журналом по разным физическим дискам. На сервере не выполняется никаких действий. SQL Server задействует только устройства. в которую заносятся базы данных и журналы. Чтобы разместить базу данных и журнал на отдельных дисках. Если на сервере установлено более одного физического жесткого диска. пока не нажата кнопка Finish. чем оценочный размер базы данных. осуществляющей доступ к серверу SQL Server. то сможете возвратить ее в состояние. Мастер наращивания пытается открыть все таблицы в базе данных для монопольного пользования. то Мастер наращивания закрывает их и открывает вновь в монопольном режиме. предшествовавшее началу наращивания.33 приведен первый шаг работы . Мастер наращивания не модифицирует файлы DBF. и физический файл.

которые вы намерены редактировать в Visual FoxPro. являются обновляемыми. SQL Server назначает своей базе данных и ее объектам набор полномочий. Чтобы завершить процесс наращивания на сервере.3 3 . что позволило избежать утомительного ожидания и горячих споров. Мы. чтобы пользователи имели доступ . Первый шаг при использовании Мастера наращивания 3. Большинство ошибок связано с недостатком места на устройстве базы данных или журнала на используемом сервере или с недостаточным объемом внешней базы данных. В нашем случае после удаления из таблиц полей примечаний процесс переноса занял чуть более 3 часов. Чтобы таблицу можно было обновлять в Visual FoxPro. он выдает запрос. являются обновляемыми. Убедитесь. Если вы хотите сократить время переноса БД на сервер. что таблицы. требуемой для наращивания. каждая из которых содержала более ста тысяч записей. Мастер наращивания начинает экспортировать базу данных на сервер. что на выбранных устройствах много свободного места и что размер базы данных установлен достаточно большим. Например.■ Upsizing Wizard 11 Ш 1 -Local Database Selection Which local database do you want to upsize? [Database to Upsiie: auto_stGre Cancel 1 Баск Next Finish j 1 Рис. Установите полномочия для внешней базы данных. но не в состоянии создать такой индекс.converted to PDF by HupBaH9I . объема сетевого трафика и количества запросов. Наращивание может занять много времени. схитрили и запланировали этот грандиозный процесс на ночь. Убедитесь. одновременно обрабатываемых сервером. когда же нажимать клавиши C trl+ A lt+ D el. сделав новую базу данных восстанавливаемой на случай повреждения или потери данных.генерируется отчет об ошибках. Если нажать кнопку Finish до того. конечно. она должна иметь уникальный индекс. БД. что таблицы. нужно ли сохранять информацию об ошибках. советуем вам при возможности удалить из таблиц поля примечаний и поля типа General. Если сохранять информацию нужно . Если в процессе экспортирования данных Мастером наращивания возникают какие-либо ошибки. Кнопка Finish становится доступной после введения основной информации. принимаемые по умолчанию. как будут пройдены все экраны мастера. вы можете выполнить следующие действия: • • • Убедиться. у авторов переносилась на сервер дольше 8 часов. состоящая из трех таблиц. которая не в состоянии принять данные. если он отсутствует. что зависит от величины данных. которые вы намерены редактировать в Visual FoxPro. чтобы пользователи могли получать доступ к нужным объектам. 6 . принимаемых по умолчанию. экспортируемые на сервер. Б