Вы находитесь на странице: 1из 205

Министерство транспорта Российской Федерации

Федеральное агентство железнодорожного транспорта

ГОУ ВПО «Дальневосточный государственный


Университет путей сообщения»

Г.А. Гурвиц

Разработка реального
приложения в среде
клиент-сервер

Рекомендовано Дальневосточным региональным


учебно-методическим центром в качестве учебного пособия
для студентов направления 230200
«Информационные системы» ВУЗов региона

Хабаровск
Издательство ДВГУПС
2005
УДК 004.451.83(075.8)
ББК З973.2-018.2 я73
Г 950
Рецензенты:
Кафедра “Информатика и информационная безопасность”
Петербургского Государственного
университета путей сообщения
Заведующий кафедрой доктор технических наук
профессор Корниенко А.А.

Кафедра «Автоматика и системотехника»


Хабаровского Государственного технического университета
Заведующий кафедрой доктор технических наук
профессор Чье Ен Ун
Гурвиц Г.А.
Г 950 Разработка реального приложения в среде клиент-сервер.
Учебное пособие. – Хабаровск:
Изд-во ДВГУПС, 2005. – 204 с.: ил.

Учебное пособие соответствует Государственному образовательно-


му стандарту направления 230200 “Информационные системы” специ-
альности 230201 “Информационные системы и технологии”.
Рассматриваются основные этапы создания реального приложения
для работы с реляционными базами данных. Описывается работа с Mi-
crosoft SQL Server (сервер) и Microsoft Access (клиент).
Пособие предназначено для студентов, изучающих курсы “Управле-
ние данными”, “Базы данных” и “Корпоративные информационные сис-
темы”. Главы 1-6 могут быть использованы студентами всех специаль-
ностей в курсе “Информатика”.
УДК 004.451.83(075.8)
ББК З973.2-018.2 я73

Все названия программных продуктов являются зарегистрированными торговыми


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

ISBN 5-262-00208-0
© Издательство Дальневосточного государственного уни-
верситета путей сообщения (ДВГУПС), 2005
© Гурвиц Г.А. 2005
© Гурвиц Ю.Г. (Обложка) 2005

2
ПРЕДИСЛОВИЕ

Microsoft Access 2003 – последняя версия продукта корпорации


Microsoft – является самой распространенной в мире системой управле-
ния реляционными базами данных для персональных компьютеров. Она
предоставляет разработчикам комбинацию мощных современных тех-
нологий и развитых средств для создания прикладных программ нового
поколения.
Тот, кто уже знаком с современной компьютерной литературой по
разработке приложений, возможно, удивится, не обнаружив на каждой
странице двух-трех десятков строк кода. Обилие картинок в пособии
вполне соответствует новому мышлению. Теперь процесс разработки
программы проще показать, чем рассказать о нем.
Автор, используя весь свой богатый опыт практических разработок,
предлагает собственный подход к освоению нового инструмента, делит-
ся с читателем своим видением уникальных перспектив Microsoft Access.
Изучив его, начинающий разработчик несомненно освоит основы созда-
ния приложений и получит навыки выбора нужных инструментов Micro-
soft Access для достижения наилучшего результата.
В Microsoft Access 2003 реализовано огромное количество новейших
концепций, технических приемов и инструментов. Независимо от того,
является ли читатель новичком в мире визуального программирования
или делает огромный шаг вперед, опытный наставник рядом значи-
тельно ускорит процесс обучения, поможет быстрее сориентироваться и
достичь высокой производительности в среде Microsoft Access. Главный
упор в пособии сделан на поэтапное – шаг за шагом – освоение нового.
Значительная часть учебного пособия посвящена переводу уже гото-
вого приложения на платформу клиент-сервер. В качестве сервера вы-
бран MS SQL Server – самая лучшая на сегодняшний день серверная
СУБД, выгодно отличающаяся от других соотношением цена – качество.
Вполне возможно, что читатель найдет лучшее решение проблем,
поднятых автором, - это нормально, значит, пособие подтолкнуло к по-
иску самых оптимальных решений!

Анатолий Корниенко
Заведующий кафедрой
“Информатика и информационная безопасность”
доктор технических наук профессор

Петербургский Государственный
университет путей сообщения

3
ВВЕДЕНИЕ

Назначение этой книги состоит в том, чтобы помочь


из огромной массы материала вычленить ключе-
вые вопросы и важнейшие решения. На протяже-
нии всего изложения я старался честно и в меру
своих сил объяснять, что и почему происходило.
Уинстон Черчиль. Мировой кризис.

Реально работающее приложение лучше всего подходит для изуче-


ния проблем, с которыми не раз доводилось сталкиваться в процессе
работы с новым программным продуктом. Именно на этом и сделан осо-
бый акцент в пособии. Надеюсь, что вы найдете в нем простые приемы
создания приложений для работы с базами данных, позволяющие избе-
жать тупиковых решений и ненужных усилий, обычно ведущих к напрас-
ной потери времени. Перед вами руководство по быстрому освоению
базовых возможностей Microsoft Access и Microsoft SQL Server. Поэтому
не ищите в нем подробных экскурсов в теорию программирования. В по-
следнее время широкое распространение получил унифицированный
язык моделирования – UML, который предназначен для описания, ви-
зуализации и документирования объектно-ориентированных систем и
бизнес-процессов с ориентацией на их последующую реализацию в ви-
де программного обеспечения. Ввиду небольшого масштаба предпри-
ятий, предложенных в качестве вариантов к курсовой работе (курсовому
проекту) в данном пособии, этот язык и его реализации (CASE-
инструментарии) не рассматриваются.
Сначала мы просто создадим несложное приложение в Microsoft Ac-
cess, и в процессе работы Вы получите опыт использования возможно-
стей рассматриваемой СУБД (системы управления базами данных). Со-
ветую Вам заглянуть в папку:
C:\Program Files\Microsoft Office\Office11\Samples\
Здесь вы найдете несколько приложений-примеров, входящих в ба-
зовую поставку Microsoft Access 2003. Начинающим разработчикам бу-
дет очень полезно изучить возможности базы данных Борей.mdb. По-
ищите здесь и другие приложения, выберите те, на которые хотите сде-
лать похожими ваши собственные, и разберитесь как они устроены. Вы
удивитесь: масса вещей, требующих написания текста программы до
появления Microsoft Access, теперь просто встроены в меню СУБД.
Затем мы рассмотрим процесс перевода нашего приложения на
платформу клиент-сервер. Уверяю Вас, что рассматриваемый в пособии
Microsoft SQL Server, является самой выгодной серверной СУБД среди
существующих, исходя из соотношения цены и качества. Информацион-
ные системы уровня предприятия, построенные с использованием Mi-
crosoft SQL Server, выгодно отличаются невысокой суммарной стоимо-

4
стью владения, а богатые возможности этой СУБД являются одним из
самых важных критериев при выборе продукта, который будет использо-
ваться на предприятии при построении баз данных.
“С появлением Windows 2000 и SQL Server 2000 компания Microsoft
сделала первый и очень важный шаг в реализации своей мечты о таком
программном обеспечении, которое можно было бы горизонтально мас-
штабировать от web-уровня до уровня приложения и уровня базы дан-
ных, - сказал Билл Гейтс, главный архитектор программного обеспече-
ния Microsoft. – Феноменальные результаты эталонных тестов доказы-
вают правильность нашей стратегии, и эти новшества принципиально
изменят игровое поле для платформ приложений масштаба предпри-
ятия”. Microsoft объявила результаты серии тестов, ярко подтвердивших
лидерство MS SQL Server. Для теста TPC-C – 227029 транзакций в ми-
нуту, практически в два раза опередив ближайшего конкурента. Кроме
того, установлены мировые рекорды по эталонному тесту TPC-H. Полу-
ченный результат – 1291 запрос в час применительно к базе данных
объемом 100 Гбайт. Результаты остальных тестов можно найти по адре-
су: http://www.eu.microsoft.com/rus/press/2000/february/new_word_record
В настоящем пособии Вашему вниманию будет предложен самый
легкий способ создания базы данных Microsoft SQL Server – конвертация
созданной и успешно работающей базы Microsoft Access в Microsoft SQL
Server средствами Access. Процесс работы конвертора займет несколь-
ко минут, независимо от количества таблиц, индексов и связей между
таблицами в Вашей базе данных.
Занимаясь разработкой прикладного программного обеспечения дея-
тельности различных предприятий на протяжении многих лет, могу от-
метить, что в 90 случаях из 100 заказчик сам не знает, чего хочет, и в 99
из 100 случаях постановку задачи приходится воспринимать на слух, в
процессе работы неоднократно уточняя те или иные моменты созда-
ваемой программы. Более того, при очередной встрече с заказчиком,
связанной с демонстрацией уже выполненных этапов, очень часто от-
крываешь для себя все новые и новые горизонты предстоящей работы,
требующие существенного изменения как структуры данных, так и ин-
терфейса будущего приложения. Но это не самый худший вариант. Ино-
гда уже через день после итоговой встречи заказчик переосмысливает
свои цели, после чего задача меняется коренным образом, и следующий
визит заставляет начать всю работу заново. Именно по этой причине я
рекомендую вам, внимательно выслушав заказчика, попросить его опи-
сать задачу в письменном виде, на основании чего самостоятельно
сформулировать постановку задачи и еще раз обсудить ее с клиентом.
Уверяю вас, если результат окажется положительным, то это будет при-
знанием того, что ваш работодатель действительно нуждается в зака-
занном программном обеспечении, а самое главное, знает, чего хочет.

5
1. ПОСТАНОВКА ЗАДАЧИ

Итак, к делу. Вам предстоит работа в информационно-аналитическом


отделе дистанции гражданских сооружений (НГЧ-3). Первое ваше зада-
ние – разработка прикладного программного обеспечения деятельности
отдела по учету недвижимости, находящейся на балансе предприятия. В
связи с реорганизацией станционного хозяйства, объектов в ведении
НГЧ-3 теперь около полусотни. Квартир порядка трех тысяч, в них про-
живает около десяти тысяч человек. Учет недвижимости, а также отсле-
живание квартплаты отныне в ведении этого отдела, но это уже второй
этап работы.
В первую очередь на вас возложена задача компьютерного учета не-
движимого имущества. Объем работы сравнительно небольшой. Не ра-
дуйтесь! Ваш начальник требует, чтобы эксплуатация программного
комплекса, заказанного им сегодня, началась еще вчера. Вы провели в
отделе по учету недвижимости значительное время, но все, что вам
удалось выяснить из разговора с персоналом, – это набор данных, ко-
торые будут храниться в электронном виде, их тип и максимальное ко-
личество в базе (табл. 1.1).
Они сведены вами в таблицу. Надеюсь, что вы предупредили рабо-
тающих о том, что если какой-либо параметр отсутствует в базе данных,
то извлечь его и выполнить какие-либо расчеты с его участием будет в
дальнейшем невозможно. Разумно, если вы выбрали в качестве инстру-
мента Microsoft Access 2002 – рекордсмена среди существующих СУБД
по времени разработки приложения и запланировали перевод базы дан-
ных на платформу SQL Server 2000, так как при отслеживании платежей
по квартплате, число записей в таблице лицевых счетов достигнет 200–
500 тыс., а это уже значительно превышает возможности Access 2002.
Таблица 1.1
Набор данных «Недвижимость»

№ Поле Тип Размер Описание

1 Address Текстовый 50 Адрес здания


2 District Текстовый 15 Район города, где оно расположено
3 Land Числовой 10 Площадь земельного участка
4 Year Числовой 4 Год постройки здания
5 Material Текстовый 15 Материал стен здания
6 Comment Поле Memo Авто Примечания
7 Wear Числовой 2 Износ в процентах
8 Cost Денежный 15 Стоимость здания в рублях

6
№ Поле Тип Размер Описание
9 Line Числовой 5 Расстояние от центра города
10 Square Числовой 10 Площадь нежилых помещений
11 Picture Поле OLE Авто Фото здания
12 Kind Числовой 1 Вид собственности
13 Elevator Логический 1 Наличие лифта
14 Flat Числовой 4 Номер квартиры
15 Storey Числовой 2 Номер этажа
16 Rooms Числовой 1 Количество комнат
17 SquareFlat Числовой Авто Общая площадь квартиры
18 Dwell Числовой Авто Жилая площадь квартиры
19 Branch Числовой Авто Всп. площадь квартиры
20 Balcony Числовой Авто Площадь балкона
21 Height Числовой Авто Высота квартиры
22 Account Числовой 5 Номер лицевого счета
23 FioHost Текстовый 60 Ф.И.О. квартиросъемщика
24 Pasport Поле Memo Авто Данные его паспорта
25 Fio Текстовый 60 Ф.И.О. проживающего в квартире
26 Born Числовой 4 Год рождения проживающего
27 Status Текстовый 20 Льготы и статус проживающего

2. НОРМАЛИЗАЦИЯ ДАННЫХ

Теперь займемся проектированием эффективной структуры данных.


На сегодняшний день известны три модели данных: иерархическая, се-
тевая и реляционная. Так как Microsoft Access 2002 и Microsoft SQL
Server 2000 – это реляционные СУБД, то выбора у нас нет. Теория ре-
ляционной базы данных была разработана в начале 70-х годов Коддом
(E. F. Codd) на основе математической теории отношений. В реляцион-
ной базе данных все данные хранятся в виде таблиц, при этом все опе-
рации над базой данных сводятся к манипуляциям с таблицами. Основ-
ными понятиями в этой теории являются: таблица, строка, столбец, ин-
декс, первичный и внешний ключи, связи. Таблица состоит из строк и
столбцов и имеет уникальное имя в базе данных. База данных содержит
множество таблиц, связь между которыми устанавливается с помощью

7
совпадающих полей. В каждой из таблиц содержится информация о ка-
ких-либо объектах одного типа.
Приступая к созданию нового приложения, главное – самым тщатель-
ным образом спроектировать структуру его таблиц. Если не уделить струк-
туре должного внимания, то в лучшем случае это может проявиться в не-
эффективной работе приложения, а в худшем – в невозможности реали-
зации некоторых требований к системе в целом. И, наоборот, при хорошей
организации набора таблиц будут решены не только текущие проблемы,
но и потенциальные, которые в данный момент вы не могли предвидеть.
В общем, структура данных является определяющим фактором успеха
или провала всего приложения.
Э.Ф. Кодд доказал, что, следуя при создании таблиц и связей между
ними только немногим формализованным правилам, можно обеспечить
простоту манипулирования данными. Его методика получила наимено-
вание нормализации данных. Теория реляционных баз данных основана
на концепции использования ключевых полей для определения отно-
шений между таблицами. Чем больше таблиц, тем больше отношений
требуется определить, чтобы связать их между собой. Из теории Кодда
отнюдь не следует, что каждая таблица должна быть напрямую связана
с любой другой таблицей. Но, поскольку каждая таблица связана хотя
бы с одной таблицей в базе данных, можно утверждать, что все таблицы
в базе имеют прямые или косвенные отношения друг с другом.
Мы установили, какие поля будут включены в базу данных. Следую-
щий этап состоит в разделении их на таблицы. Конечно же, можно было
бы работать с приведенной выше единственной таблицей «Недвижи-
мость», но даже не знающим правил нормализации ясно, что для каждо-
го проживающего в квартире не имеет смысла повторять всю информа-
цию о здании, квартире, ответственном квартиросъемщике и лицевом
счете, а при переименовании улицы – вносить исправления в тысячи за-
писей, содержащих сведения о технических характеристиках квартиры.
Наличие повторяющейся информации приведет к неоправданному
увеличению размера базы данных. В результате снизится скорость вы-
полнения запросов. При многократном вводе повторяющихся данных
возрастет вероятность ошибки.
Представьте себе ситуацию, связанную с вводом данных о прожи-
вающих на Восточном шоссе. Это пять тысяч человек. Вот несколько
вариантов адреса: Шоссе Восточное, Восточное шоссе, ш. Восточное,
ш-се Восточное. А сколько еще вариантов может появиться у оператора,
работающего с вашей программой. О грамматических ошибках и вари-
антах с номером дома, запятыми и точками в адресе позволю себе
умолчать. Какую информационно-поисковую систему мы получим в ре-
зультате? Скорее всего: искать можно – найти нельзя!

8
Воспользуемся практическими рекомендациями теории нормализа-
ции для разработки на основании таблицы «Недвижимость» многотаб-
личной базы данных «Real Estate».
Я хорошо помню своего учителя физики в старших классах школы. В
нарушение всех тогда существовавших методик он давал весь годовой
курс за месяц, а оставшееся время расширял заложенные в наши голо-
вы основы знаний. Его методика мне очень нравится, и я постоянно бу-
ду использовать ее в этой книге. Вот Вам результат ее первого приме-
нения. На рис. 2.1 вы видите то, что у вас должно получиться после всех
манипуляций, кратко изложенных выше и предусмотренных теорией
нормализации. Практический же путь к этому результату смотрите на
следующих полутора десятках страниц.

Рис. 2.1. Окончательный вид базы данных «Real Estate»

Первая нормальная форма. Таблица находится в первой нормаль-


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

9
Приведем наши данные к первой нормальной форме. Выделим са-
мостоятельные группы полей и поместим их в отдельные таблицы. На
первый взгляд их четыре. Это информация об адресе, здании, квартире
и собственниках. Добьемся атомарности всех полей. Поле FioHost, в ко-
торое записывается информация о фамилии, имени и отчестве ответст-
венного квартиросъемщика, заменим тремя полями: Family, Name, Sec-
ond. Также поступим и с проживающими в квартире. Поле Address ра-
зобьем на три: название, признак и порядок их следования в официаль-
ных документах. Получится следующая картина (табл. 2.1).
Таблица 2.1
Информация об адресе (Street)

№ Поле Тип Размер Описание


1 Street Числовой 4 Номер улицы
2 Name Текстовый 30 Название улицы
3 Sign Текстовый 10 Признак адреса
4 First Логический 1 Порядок следования в документах

Street Name Sign First


173 Воронежская Улица Ложь
174 Воронежский проезд Истина
175 Воронежское шоссе Истина
176 Ворошилова Улица Ложь

Если значением поля First является Ложь, то при формировании ад-


реса здания в официальных документах на первое место будет постав-
лен признак: Улица Ворошилова, а если Истина – название: Воронеж-
ское шоссе или Воронежский проезд. Обратите внимание на заполнение
поля Sign. Если в поле First стоит Ложь, то значение признака пишется
с большой буквы.
Обратите внимание на то, как легко будет сейчас решаться проблема
переименования улицы. Допустим, что отныне Воронежское шоссе,
стоящее под номером 175 в таблице Street, переименовано, например,
в улицу Муравьева-Амурского. Вносим исправления только в таблицу
Street. Оставляем этот номер, меняем название, признак и значение по-
ля First c Истина на Ложь. Проблема решена. Так как во всех остальных
таблицах Воронежское шоссе (улица Муравьева-Амурского) фигурирует
под номером 175, то никакие изменения не требуются.

10
Таблица 2.2
Информация о здании (Building)

№ Поле Тип Размер Описание


1 Street Числовой 4 Ссылка на номер улицы
2 House Текстовый 10 Номер дома
3 District Текстовый 15 Район города
4 Land Числовой 10 Площадь земельного участка
5 Year Числовой 4 Год постройки здания
6 Material Текстовый 15 Материал стен здания
7 Comment Поле Memo Авто Примечания
8 Wear Числовой 2 Износ в процентах
9 Cost Денежный 15 Стоимость здания в рублях
10 Line Числовой 5 Расстояние от центра города
11 Square Числовой 10 Площадь нежилых помещений
12 Picture Поле OLE Авто Фото здания
13 Kind Числовой 1 Вид собственности
14 Elevator Логический 1 Наличие лифта

Таблица 2.3
Информация о квартире (Flat)

№ Поле Тип Размер Описание


1 Street Числовой 4 Ссылка на номер улицы
2 House Текстовый 10 Номер дома
3 Flat Числовой 4 Номер квартиры
4 Storey Числовой 2 Номер этажа
5 Rooms Числовой 1 Количество комнат
6 SquareFlat Числовой Авто Общая площадь квартиры
7 Dwell Числовой Авто Жилая площадь квартиры
8 Branch Числовой Авто Вспомогательная площадь квартиры
9 Balcony Числовой Авто Площадь балкона
10 Height Числовой Авто Высота квартиры
11 Account Числовой 5 Номер лицевого счета
12 Family Текстовый 20 Фамилия квартиросъемщика
13 Name Текстовый 20 Имя квартиросъемщика
14 Second Текстовый 20 Отчество квартиросъемщика
15 Pasport Поле Memo Авто Данные его паспорта

11
Таблица 2.4
Информация о проживающих в квартире (Owners)

№ Поле Тип Размер Описание


1 Street Числовой 4 Ссылка на номер улицы
2 House Текстовый 10 Номер дома
3 Flat Числовой 4 Номер квартиры
4 Number Числовой 2 Порядковый номер проживающего
5 Family Текстовый 20 Фамилия проживающего
6 Name Текстовый 20 Имя проживающего
7 Second Текстовый 20 Отчество проживающего
8 Born Числовой 4 Год рождения проживающего
9 Status Текстовый 20 Льготы и статус проживающего

Удовлетворение требованиям первой нормальной формы называет-


ся структурной или синтаксической нормализацией.
Данные разделены (табл. 2.1, 2.2, 2.3, 2.4) на четыре родственные груп-
пы: улицы, здания, квартиры и проживающие (рис. 2.2). Значения всех по-
лей этих таблиц –
атомарные. Все таб-
лицы находятся в
первой нормальной
форме. Однако ос-
танавливаться на
этом не следует. С
такими данными все
еще возможно воз-
никновение проблем.
Прежде всего, в базе
данных много повто-
рений значений – не
внутри одной записи,
а в пределах одной
Рис. 2.2. Таблицы базы данных таблицы. А там, где
есть повторяющиеся значения, возможны противоречия. Посмотрите на
поля Material и District таблицы Building. Та же картина, которая имела
место чуть раньше с названиями улиц. Варианты названий материала стен:
шлакобетон, шлакобетонные, шлб, шл.бет. Уберем название материала
стен и названия районов в отдельные таблицы – справочники (Wall и Dis-
trict), оставив в основной таблице Building ссылки на эти справочники. Ба-
за данных примет более правильный вид (таблицы на рис. 2.3).

12
Рис. 2.3. Таблицы базы данных в первой нормальной форме

Появились еще две таблицы: Wall и District (табл. 2.5, табл. 2.6).
Таблица 2.5
Информация о районах города (District)

№ Поле Тип Размер Описание


1 District Числовой 1 Номер района
2 Area Текстовый 15 Название района

Таблица 2.6
Информация о материале стен здания (Wall)

№ Поле Тип Размер Описание


1 Material Числовой 1 Номер материала
2 Wall Текстовый 15 Название материала

Структура таблицы Building несколько изменилась. Вместо описаний


района и материала стен появились ссылки на соответствующие табли-
цы (табл. 2.7).
Таблица 2.7
Окончательная структура таблицы Building

№ Поле Тип Размер Описание


1 Street Числовой 4 Ссылка на номер улицы
2 House Текстовый 10 Номер дома

13
№ Поле Тип Размер Описание
3 District Числовой 1 Ссылка на район города
4 Land Числовой 10 Площадь земельного участка
5 Year Числовой 4 Год постройки здания
6 Material Числовой 1 Ссылка на материал стен здания
7 Comment Поле Memo Авто Примечания
8 Wear Числовой 2 Износ в процентах
9 Cost Денежный 15 Стоимость здания в рублях
10 Line Числовой 5 Расстояние от центра города
11 Square Числовой 10 Площадь нежилых помещений
12 Picture Поле OLE Авто Фото здания
13 Kind Числовой 1 Вид собственности
14 Elevator Логический 1 Наличие лифта

Вторая нормальная форма. Таблица находится во второй нор-


мальной форме, если она удовлетворяет условиям первой нормальной
формы, и любое неключевое поле однозначно идентифицируется пол-
ным набором ключевых полей.
Настало время поговорить о ключевых полях. Мощь реляционных
баз данных, таких как Microsoft Access, опирается на их способность бы-
стро найти и связать данные из разных таблиц при помощи запросов,
форм и отчетов. Для этого каждая таблица должна содержать одно или
несколько полей, однозначно определяющих каждую запись в таблице.
Такие поля называют первичным ключом таблицы. Если для таблицы
определен первичный ключ, то Microsoft Access предотвращает дубли-
рование значений полей или ввод значений Null в эти поля. В Microsoft
Access 2002 можно выделить три типа ключевых полей: простой ключ,
составной ключ и счетчик. Если поле содержит уникальные значения,
то его можно определить как ключевое или простой ключ. Примеры из
нашей реальной жизни: идентификационный номер налогоплательщика,
однозначно определяющий каждого жителя нашей страны, номер свиде-
тельства пенсионного фонда, кадастровый номер земельного участка,
реестровый номер строения, номер автомобиля – все это уникальные
номера в пределах страны. Поле Street (номер улицы) в таблице Street
также можно определить как простой ключ. Этим же требованиям отве-
чают поля District (номер района) и Material (номер материала) таблиц
District и Wall. Можно смело гарантировать их уникальность в пределах
нашего программного комплекса. С таблицей Building, содержащей ин-
формацию о зданиях, при определении первичного ключа нужно посту-
пить таким образом. К нашим услугам составной ключ. Связка полей –

14
номер улицы плюс номер дома – однозначно определит положение запи-
си, относящейся к одному зданию в этой таблице. С однозначным опре-
делением квартиры в таблице Flat (квартиры) дело состоит чуть слож-
нее. Составной первичный ключ выглядит так: номер улицы плюс номер
дома плюс номер квартиры.
В очень редких случаях с определением первичного ключа для таб-
лицы может сложиться тупиковая ситуация. Не отчаивайтесь, добавьте
в таблицу поле и определите его тип как «счетчик». Все остальное Ac-
cess сделает самостоятельно. В это поле будет автоматически вносить-
ся уникальное число даже при работе с Вашей базой в сетевом вариан-
те (с нескольких компьютеров одновременно). Если до сохранения соз-
данной таблицы ключевые поля не были определены, Microsoft Access
предложит создать ключевое поле автоматически. При нажатии кнопки
«Да» будет создано ключевое поле счетчика.
Третья нормальная форма. Таблица находится в третьей нор-
мальной форме, если она удовлетворяет условиям второй нормаль-
ной формы и ни одно из неключевых полей таблицы не идентифици-
руется с помощью другого неключевого поля.
Посмотрите внимательно на таблицу Flat (квартиры). Она содержит
неключевое поле Account (номер лицевого счета), которое однозначно
определяет ответственного квартиросъемщика (поля: Family, Name,
Second и Pasport) в этой таблице. Уберем все эти поля в еще одну таб-
лицу Account и назначим в ней в качестве простого первичного ключа
поле Account (табл. 2.8).
Таблица 2.8
Информация об ответственном квартиросъемщике (Account)

№ Поле Тип Размер Описание


1 Account Числовой 5 Номер лицевого счета
2 Family Текстовый 20 Фамилия квартиросъемщика
3 Name Текстовый 20 Имя квартиросъемщика
4 Second Текстовый 20 Отчество квартиросъемщика
5 Pasport Поле Memo Авто Данные его паспорта

Осталось установить связи между таблицами, и база данных будет го-


това к работе. Microsoft Access поддерживает четыре типа связей: один к
одному, один ко многим, много к одному и много ко многим.
Связь «один к одному» означает, что каждой записи одной таблицы
соответствует только одна запись другой таблицы и наоборот. В качест-
ве примера рассмотрим связь между таблицами Flat и Account
(рис. 2.4). Одна квартира – один ответственный квартиросъемщик. Связь
между ними поддерживается при помощи совпадающих полей Account.

15
Обратите внимание! У полей, используемых для связи, одинаковое на-
именование (Account) и тип (числовой с 5 разрядами). Всегда придер-
живайтесь этого правила при определении полей для связи любого типа
между таблицами. Хотя, если быть более точным, связь между табли-
цами устанавливается на основании значений совпадающих полей, а не
их наименований.

Рис. 2.4. Схема связей между таблицами

Связь «один ко многим». В качестве иллюстрации данного типа


связи обратимся к таблицам Street и Building. Одной улице в таблице
улиц Street соответствует несколько зданий из таблицы зданий Build-
ing. Связь между ними осуществляется на основании значений совпа-
дающих полей Street. Используется простой первичный ключ таблицы
Street. В качестве других примеров могут быть рассмотрены таблицы
Building и Flat, Flat и Owners. Одному зданию соответствуют несколько
квартир, а одной квартире – несколько собственников. Для связи этих
таблиц используются составные первичные ключи.
Связь «много к одному» аналогично ранее рассмотренному типу
«один ко многим». Тип связи между объектами полностью зависит от
вашей точки зрения. Например, если вы будете рассматривать связь
между собственниками и квартирой, то получите много к одному. Не-
сколько собственников проживают в одной квартире.
Связь «многие ко многим» возникает между двумя таблицами в тех
случаях, когда одна запись из первой таблицы может быть связана бо-

16
лее чем с одной записью из второй таблицы, а одна запись из второй
таблицы может быть связана более чем с одной записью из первой таб-
лицы. Таких связей следует избегать, так как реляционная модель не
позволяет непосредственно работать с ними. Microsoft Access или лю-
бая другая реляционная СУБД в этом случае бесполезны. Всегда мож-
но ввести в базу данных еще одну - две промежуточные таблицы и тем
самым избежать возможных неприятностей при разработке интерфейса
вашего приложения, используя понятные и безотказно работающие свя-
зи «один ко многим». Некоторые варианты заданий из этого пособия мо-
гут привести к связи «многие ко многим» между таблицами базы данных.
Обратившись к материалам главы 3.7, Вы увидите мое видение ре-
шения этой проблемы одного из вариантов.
Что за третьей нормальной формой? Если вы довели уровень
нормализации таблиц вашей базы данных до третьей нормальной фор-
мы и ваша задача – разработка системы масштаба предприятия, то
смело можете переходить к разработке интерфейса. Однако если вы
участвуете в разработке суперхранилища данных под Oracle или DB2, то
разберитесь по специальной литературе с нормальной формой Бойса-
Кодда, четвертой и пятой нормальными формами.

3. РАЗРАБОТКА БАЗЫ ДАННЫХ

3.1. Создание новой базы данных

Запустите Microsoft Access на вашем компьютере. Для этого нажмите


кнопку «Пуск» и выберите в меню «Программы» пункт «Microsoft
Access»–Access 2002 установлен там по умолчанию. На экране появится
главное окно Access 2002 и диалоговое окно, позволяющее создать базу
данных или открыть уже существующую базу данных (рис. 3.1).

Рис. 3.1. Диалоговое окно Microsoft Access 2002

17
В верхней части диалогового окна вы увидите список ранее откры-
вавшихся баз данных. Если Access 2002 запущен в первый раз, то в спи-
ске появится только элемент «Другие файлы». Выберите переключатель
«Новая база данных» и щелкните по кнопке «Ок». Появится окно,
имеющее заголовок «Файл новой базы данных». Определитесь с име-
нем файла и папкой, в
которой он будет рас-
положен. Пусть его имя
– Real Estate. Нажмите
кнопку «Создать». Поя-
вится окно базы дан-
ных с этим именем
(рис. 3.2). База данных
получила свое название
и законное место на же-
стком диске. Отличи-
тельной особенностью Рис. 3.2 Окно создаваемой базы данных
Microsoft Access явля-
ется то, что окно базы данных является отправной точкой, с которой на-
чинается выполнение всех операций над объектами базы данных: таб-
лицами, запросами, формами, отчетами, макросами и модулями. Не менее
интересным фактом является и тот, что все эти элементы хранятся в од-
ном единственном файле. В данном случае – Real Estate.mdb, чего не
скажешь о других СУБД для персональных компьютеров.

3.2. Создание таблиц

Существует несколько способов создания таблиц в Microsoft Access.


1. С помощью мастера таблиц.
2. Путем ввода данных в таблицу.
3. С использованием конструктора таблиц.
4. Путем импорта данных из внешнего файла в текущую базу данных.
5. Создание таблиц в текущей базе данных, связанных с таблицами
внешнего файла.
Первые два способа – для новичков в работе с базами данных, испы-
тывающих сильное желание немедленно создать свою первую таблицу.
Процесс создания таблицы с помощью мастера включает в себя несколько
этапов. Вам будет предложено несколько десятков образцов таблиц дело-
вого и личного применения. Выбирайте нужные детали и проектируйте
свою таблицу! Второй способ еще проще. Access 2002 создаст пустую
таблицу на основе используемой по умолчанию со структурой, имеющей
20 полей и 30 пустых записей. Заносите данные прямо в нее, но помните,
что этот способ пригоден только для таблиц, не имеющих связей.

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

В списке «Объекты» (рис. 3.2)


выберите пункт «Таблицы» –
дальше три пути на ваш выбор.
Все они приведут к цели. Такое
оформление характерно для мно-
гих продуктов фирмы Microsoft.
Моя дочь называет его: «Пересе-
кающиеся каскады».
Каскад первый. Выберите
первый пункт меню, расположен-
Рис. 3.3. Создание новой таблицы в ного в окне таблиц базы данных,
режиме конструктора таблиц который называется: «Создание
таблицы в режиме конструктора»
(рис. 3.3). Самих таблиц там пока еще нет.
Каскад второй. Нажмите кнопку «Создать» на панели инструментов
окна базы данных. Появится окно с названием «Новая таблица».
Выберите в появившемся меню этого окна пункт «Конструктор» и
сделайте щелчок мышью по кнопке «Ok».
Каскад третий. Щелкните по кнопке «Конструктор» (рис. 3.3). Она
расположена на панели инструментов окна базы данных рядом с пикто-
граммой .
Во всех трех случаях увидим окно конструктора таблицы (рис.3.4).

Рис. 3.4. Окно конструктора таблицы

В окне три колонки. Первые две: имя поля и тип данных будут использо-
ваться приложением, а третья: описание – предназначена только для раз-
работчика. Не оставляйте ее пустой! Опишите подробно назначение поля
таблицы. Позже обязательно поймете важность этого совета.
Имена полей должны содержать не более 64 символов и могут вклю-
чать любые комбинации символов за исключением точки, восклицательного
знака и квадратных скобок. Используйте в именах полей только латинские

19
буквы при общей длине имени до 10 символов включительно. В этом слу-
чае у Вас не будет проблем с конвертацией таблиц Microsoft Access в таб-
лицы других СУБД (например, Visual Fox Pro).
Каждое поле таблицы должно иметь уникальное имя, но в различных
таблицах можно использовать одинаковые имена полей. В табл. 3.1 приве-
дены основные типы данных полей Microsoft Access 2002.
Создадим нашу первую таблицу Building. Ее окончательная структу-
ра взята из табл. 2.7. Имейте в виду, что имя поля и его описание вво-
дится с клавиатуры, а тип данных выбирается из списка. Список будет
доступен только тогда, когда курсор попадет в колонку «Тип данных».
Таблица 3.1
Типы данных полей таблиц Access 2002

Вид данных Тип данных Описание


Текст или числа, не требующие проведения расче-
тов. Максимальная длина – 255 символов. По
Текстовый
умолчанию длина текстового поля устанавливает-
ся равной 50 символов
Символьный
Поля типа МЕМО предназначены для хранения
больших текстовых данных. Длина поля может
МЕМО
достигать 64 Кб. Поле не может быть ключевым
или индексированным
Содержит множество подтипов (размеров). От вы-
бора размера зависит точность вычислений. Ис-
Числовой
пользуйте целый тип для полей, которые исполь-
зуются в ссылках на другие таблицы базы данных
Уникальные, последовательно возрастающие чис-
Счетчик ла, автоматически вводящиеся в таблицу при до-
Числовой бавлении каждой новой записи
Содержит одно из двух возможных значений 0 –
Логический для представления значения «нет» и –1 (обратите
внимание: минус 1) для «да»
Позволяет выполнять расчеты с точностью до 15
Денежный
знаков в целой и до 4 знаков в дробной части

Семь видов форматов для отображения даты и


Дата и время Дата/Время
времени
Включает рисунок, фотографию, звукозапись, диа-
Произволь- Поле объекта
граммы, векторную графику, форматированный
ный OLE
текст и т.п.
Адреса WEB Гиперсвязь Содержит адреса Web-страниц

Рассмотрим действия по созданию таблицы подробнее (рис. 3.5).

20
1. Введите в первую колонку имя первого поля: STREET и нажмите
клавишу <Enter>. Курсор переместится во вторую колонку «Тип данных».
По умолчанию будет назначен тип «Текстовый».
2. Нажмите клавишу <F4> для того, чтобы раскрыть список типов
данных. Раскрыть список можно и при помощи мыши. Выберите тип
«Числовой» и нажмите клавишу <Enter>. Мне больше нравится созда-
вать таблицы, не прибегая к помощи манипулятора «мышь», поскольку в
основном данные вводятся с клавиатуры, а переключение между кла-
виатурой и мышью занимает дополнительное время, тем более что та-
кую возможность нам предоставили создатели Microsoft Access. Для
создания таблиц в режиме конструктора они задействовали несколько
функциональных клавиш.

Рис 3.5. Таблица Building в режиме конструктора

3. Заполните колонку «Описание». Не ленитесь, пишите подробнее!


4. Нажмите клавишу <F6> для перемещения курсора в область
«Свойства поля». Сначала он окажется в строке «Размер поля». По
умолчанию там стоит значение «Длинное целое».
5. Нажмите клавишу <F4>. Раскроется список подтипов числового типа. Вы-
берите подтип «Целое» при помощи клавиши < ↓ > и нажмите клавишу<Enter>.
6. Оставьте незаполненным «Формат поля». Перейдите сразу к стро-
ке «Число десятичных знаков» и нажмите клавишу <F4>. Для ссылки на
номер улицы используем четыре десятичных знака. Это дает возмож-
ность работать с 9999 улицами, что вполне достаточно для города с

21
миллионным населением. Кстати, в Хабаровске 1248 улиц, переулков,
проездов, шоссе, кварталов, площадей, бульваров и т.д.
7. Нажмите клавишу <F6> для
перехода в верхнюю часть окна
конструктора таблицы.
8. Повторите шаги 1–7 для всех
оставшихся полей таблицы.

После занесения данных обо всех Рис. 3.6. Ввод имени таблицы
полях таблицы просто закройте окно
конструктора таблиц. Появится диалоговое окно «Сохранение», запраши-
вающее подтверждение
на сохранение струк-
туры таблицы (рис. 3.6).
Вместо названия
Таблица1 введите на-
звание building, и
щелкните по кнопке
«Ок». Наша первая
таблица появится в Рис. 3.7. Окно базы данных
окне базы данных (рис.
3.7). Заполнять сейчас созданную таблицу начинающему пользователю
категорически не рекомендуется, да так и не делается! Посмотрите на
содержимое таблицы 3.2. Это не отдельная таблица, она будет связана
с другими таблицами базы данных Real Estate. Что в ней хранится – по-
ка загадка. Уверен, что большинство цифр Вам просто непонятны.
Таблица 3.2
Информация, содержащаяся в связанной таблице

Street House Flat Storey Rooms Square Dwell Branch Account


14 102 1 1 3 60,8 40 20 3450
14 102 2 1 4 100 70 28 1000
14 102 3 1 4 78 60 16 4321
14 102 4 2 4 90 80 5 666
14 102 5 2 3 100 95 30 778
14 102 6 10 1 200 190 8 9787
14 102 7 10 7 170 150 10 879
179 104 1 1 1 30 20 9 23210
179 104 2 1 2 42 30 11 3267
179 104 3 1 1 27 20 6 6666
179 104 4 2 4 100 90 5 4587

22
Аналогичным образом создадим все наши таблицы, разработанные в
главе 2: Flat, Owners, Account, Street, District и Wall.

3.3. Создание первичных ключей и индексов

Одним из основных требований, предъявляемых к СУБД, является


возможность быстрого поиска требуемых записей. В реляционных СУБД
для реализации этого требования служат индексы. Индекс очень похож
на алфавитный указатель в книге. Например, у вас в руках книга по Ac-
cess 2002 и вы хотите узнать о том, что написано в ней об индексах. За-
гляните в конец книги и найдите в предметном указателе слово «ин-
декс». Так как указатель отсортирован по алфавиту, вы без труда най-
дете нужное слово и ссылки на страницы, где оно встречается в книге.
Индекс работает с таблицей по такому же принципу. Он содержит отсор-
тированные значения указанного поля таблицы и ссылки на номера за-
писей таблицы, где эти значения находятся. При поиске записи система
управления базами данных сначала просматривает индекс, что занима-
ет совсем немного времени, так как для этого используется специаль-
ный алгоритм, находит ссылку на номер записи и по ней – нужную строч-
ку в таблице. Таким образом, отпадает необходимость последователь-
ного просмотра всех записей в таблице.
Индекс можно построить по полю почти любого типа. К счастью,
пользователь не обязан знать, за счет чего достигается такое огромное
увеличение скорости поиска. Достаточно отметить поле как индексиро-
ванное, а система Access 2002 позаботится обо всем остальном.
Хочу предостеречь вас от типичной ошибки начинающего разработ-
чика – создания индексов по всем полям таблицы для достижения мак-
симальной скорости поиска в сложных запросах. Во-первых, в этом про-
сто нет необходимости, а во-вторых – возникнет серьезная задержка при
добавлении записей в таблицу, так как системе придется перестраивать
большое число индексов одновременно.
Простой первичный ключ – это индекс, созданный по ключевому
полю таблицы.
Составной первичный ключ – это индекс, созданный по ключевой
связке полей таблицы.
О том, как выбрать ключевое поле или назначить ключевую связку по-
лей для таблицы, рассказано в подразделе «Вторая нормальная форма»
главы 2.
Первичный ключ у любой таблицы может быть только один. Этого
требует теория нормализации. Кроме первичного ключа таблица может
иметь любое количество обычных индексов. Среди них могут быть и
уникальные, не допускающие повторяющихся значений. Их принято на-
зывать индексы-кандидаты на роль первичного ключа. В нашем примере

23
такой индекс есть. Загляните в таблицу Flat (рис. 2.4) и обратите внима-
ние на поле Account (номер лицевого счета квартиросъемщика). Это
поле однозначно определяет положение любой квартиры в таблице.
Создание обычного индекса по полю таблицы. Порядок созда-
ния как простого индекса, так и уникального (индекса-кандидата) – один
и тот же. Создадим индекс по полю Account таблицы Flat.
1. Откройте таблицу Flat в режиме конструктора (рис. 3.8). Для этого
в окне базы данных Real Estate выделите таблицу Flat и щелкните мы-
шью по кнопке «Конструктор» на панели инструментов окна базы дан-
ных. Она расположена рядом с пиктограммой .
2. Выделите поле Account, нажав на кнопку выделения поля в левой
части бланка структуры таблицы .
3. Сделайте активным свойство «Индексированное поле», щелкнув
по кнопке или нажав клавишу <F4> (рис. 3.8).
4. Поле Account не может содержать повторяющиеся данные, по-
этому в списке необходимо выбрать значение «Да (Совпадения не до-
пускаются)».
5. Перейдите в режим базы данных. Для этого закройте окно конст-
руктора таблиц. Появится диалоговое окно, сообщающее о том, что
структура таблицы была изменена. Подтвердите сохранение.

Рис. 3.8. Создание индекса по полю Account

24
Создание простого первичного ключа. Создадим простой первич-
ный ключ для таблицы Street (улицы). Ключевое поле, однозначно оп-
ределяющее положение любой улицы в таблице улиц, также носит на-
звание Street (рис. 2.1).
1. Откройте таблицу Street в режиме конструктора. Для этого в окне
базы данных Real Estate выделите таблицу Street и щелкните мышью
по кнопке «Конструктор» на панели инструментов окна базы данных.
Она расположена рядом с пиктограммой .
2. Выделите поле Street, нажав на кнопку выделения поля в левой
части бланка структуры таблицы . Строчка, относящаяся к этому по-
лю, будет выделена черным цветом (рис. 3.9).

Рис. 3.9. Выделение поля таблицы


3. Сделайте щелчок мышью по пиктограмме создания ключевого
поля на панели инструментов главного окна Access 2002. Такой же ключ
появится возле поля Street (рис. 3.10).

Рис. 3.10. Простой первичный ключ создан

4. Перейдите в режим базы данных. Для этого


закройте окно конструктора таблиц. Появится
диалоговое окно, сообщающее нам о том, что
структура таблицы была изменена. Подтвердите
сохранение (рис. 3.11).
Создание составного первичного ключа.
Создадим составной первичный ключ для табли-
цы Flat (квартиры). Ранее ключевая связка полей
Рис. 3.11. Подтвержде- для этой таблицы была определена нами так:
ние сохранения номер улицы плюс номер дома плюс номер квар-
тиры.
1. Откройте таблицу Flat в режиме конструктора. Для этого в окне ба-
зы данных Real Estate выделите таблицу Flat и щелкните мышью по

25
кнопке «Конструктор» на панели инструментов окна базы данных. Она
расположена рядом с пиктограммой .
2. Выделите поле Street, нажав на кнопку выделения поля в левой
части бланка структуры таблицы . Строчка, относящаяся к этому по-
лю, будет выделена черным цветом. Нажмите клавишу <Ctrl> и, удержи-
вая ее, щелкните последовательно кнопки выделения напротив полей
House и Flat. Черных строчек станет три (рис. 3.12).

Рис. 3.12. Выделение связки полей таблицы


3. Сделайте щелчок мышью по пиктограмме создания ключевого
поля на панели инструментов главного окна Access 2002. Стилизован-
ное изображение ключа появится напротив всех трех выбранных полей.
Имейте в виду: ключиков три, а первичный ключ таблицы – один – со-
ставной. Вы помните, что ранее по полю Account таблицы Flat мы уже
создали обычный индекс. Давайте посмотрим, что получилось с индек-
сированием нашей таблицы (рис. 3.13). Сделайте щелчок по пиктограм-
ме индексов. Откроется окно «Индексы: flat». Смотрите. Коммента-
рии излишни!

Рис. 3.13. Информация об индексах таблицы


4. Закройте окна индексов и конструктора таблицы и подтвердите со-
хранение сделанных изменений.

26
3.4. Контроль правильности ввода данных

Информация, накапливаемая в базе данных, должна обладать абсо-


лютной достоверностью. Несоблюдение этого правила может порой
привести к печальным последствиям. Например, отдел комплектации не
сделает вовремя заказ на поставку необходимых материалов, владелец
квартиры получит квитанцию для оплаты налога на автотранспорт, кото-
рого у него никогда не было, а пенсионеру будет отказано в выдаче
страхового полиса и т.д. и т.п. Даже самые опытные пользователи, за-
полняющие таблицы, могут допустить ошибку и занести неверные дан-
ные, что, скорее всего, и произошло в перечисленных выше случаях.
Разработчик программного комплекса просто обязан помочь пользо-
вателю избежать большинства ошибок при вводе информации. Ниже
приведены две возможности, которые любезно предоставили в наше
распоряжение авторы Microsoft Access 2002.
Добавление условия на значение поля позволяет проверить кор-
ректность данных только в одном поле, независимо от значений других
полей. Рассмотрим пример, в котором на номер района наложено огра-
ничение. Этот номер не может находиться вне диапазона от 1 до 9, даже
если пользователь этого очень захочет (рис. 3.14).

Рис. 3.14. Свойства поля District (номер района города)

Чтобы добавить условие на значение поля таблицы District (районы):


1. Откройте таблицу District в режиме конструктора. Для этого в ок-
не базы данных Real Estate выделите таблицу District и щелкните мы-
шью по кнопке «Конструктор» на панели инструментов окна базы дан-
ных. Она расположена рядом с пиктограммой .
2. Поместите текстовый курсор в поле «Условие на значение».

27
3. Наберите на клавиатуре >=1 And <10 и нажмите клавишу
<Enter>. Курсор переместится в поле «Сообщение об ошибке».
4. Введите текст сообщения. Номер района должен быть в пределах
от 1 до 9 включительно. Если текст не поместится в поле целиком, то
система прокрутит его влево. Для перехода в начало текста сообщения
нажмите клавишу <Номе>.
5. Закройте окно конструктора таблицы и подтвердите сохранение
сделанных изменений.
При попытке ввода номера района, который не находится в пределах
диапазона 1–9, получим сообщение об ошибке и отказ программного
комплекса от записи в таблицу сделанных изменений (рис. 3.15).

Рис. 3.15. Сообщение при ошибочных действиях оператора ЭВМ

Добавление условия на значение записи. Позволяет сравнить


значения нескольких полей сразу. Рассмотрим пример, в котором произ-
водится проверка соответствия общей площади квартиры сумме со-
ставляющих: жилой, вспомогательной и приведенной площади балкона.
Для того, чтобы добавить условие на значение записи:
1. Откройте таблицу Flat в режиме конструктора. Для этого в окне ба-
зы данных Real Estate выделите таблицу Flat и щелкните мышью по
кнопке «Конструктор» на панели инструментов окна базы данных. Она
расположена рядом с пиктограммой .
2. Щелкните левой кнопкой мыши по пиктограмме «Свойства» . Она
находится на панели инструментов главного окна Microsoft Access. Поя-
вится диалоговое окно «Свойства таблицы» (рис. 3.16). Это же окно можно
активизировать щелчком правой кнопки мыши в любом месте окна конст-
руктора таблицы и выбором последнего пункта «Свойства таблицы» в
появившемся меню.
3. Введите в поле «Описание» краткое назначение выполняемой
проверки: «Проверка общей площади квартиры».

28
4. Переместите курсор в поле «Условие на значение». Появится
кнопка в его правой части. Нажмите ее.

Рис. 3.16. Диалоговое окно «Свойства таблицы»

5. Появится диалоговое окно «Построитель выражений». В нем без


труда вы найдете список всех полей таблицы Flat. Выполните двойной
щелчок левой кнопкой мыши по элементу SquareFlat. В окне создавае-
мого выражения появится [SquareFlat] (рис. 3.17).
6. Введите с клавиатуры знак равенства и выполните двойной щел-
чок по элементу Dwell, чтобы добавить его в выражение. Аналогичные
действия по отношению к элементам Branch и Balcony приведут вас к
окончательному виду: [SquareFlat]=[Dwell]+[Branch]+[Balcony].
7. Закройте окно «Построитель выражений», выбрав кнопку «Ок».
8. Поместите текстовый курсор в поле «Сообщение об ошибке» диа-
логового окна «Свойства таблицы» (рис. 3.16). Введите текст, который
будет появляться всякий раз при нарушении условия равенства площа-
дей: «Общая площадь квартиры не равна сумме составляющих».
Закройте окно «Свойства таблицы».

Рис. 3.17. Построитель выражений

29
10. В случае появления этой ошибки при работе программного ком-
плекса появится одно из сообщений об ошибке (рис. 3.18).

Рис. 3.18. Сообщения об ошибке

3.5. Создание связей между таблицами

Подведем итоги. База данных имеется. Таблицы доведены до треть-


ей нормальной формы и помещены в базу. Первичный ключ есть у каж-
дой таблицы. Индексы созданы. Типы связей между таблицами опреде-
лены. Настало время создания связей между таблицами непосредст-
венно в базе данных. Связи между таблицами назначают и просматри-
вают в специальном окне «Схема данных».
Определим связь между таблицами District (районы) и Building
(здания). Это связь «один ко многим». В одном районе города располо-
жено несколько зданий.
1. Сделайте активным окно базы данных Real Estate (рис. 3.19).

Рис. 3.19. Окно базы данных Real Estate

30
2. Выполните щелчок пра-
вой кнопкой мыши в любом
свободном месте этого окна.
Появится меню (рис. 3.19).
Выберите пункт «Схема дан-
ных». Добраться до схемы
данных можно и по-другому.
Щелкните левой кнопкой
мыши по пиктограмме
главного окна Microsoft Ac-
Рис. 3.20. Схема данных
cess. Появится окно (рис.
3.20).
3. Выполните щелчок
правой кнопкой мыши в лю-
бом месте окна «Схема дан-
ных».
В появившемся меню выбе-
рите первый пункт «Доба-
вить таблицу» (рис. 3.21).
4. Появится диалоговое
окно «Добавление табли-
цы». Раскройте вкладку
«Таблицы». В списке таблиц
выберите District (районы) и
Рис. 3.21. Список таблиц
нажмите кнопку «Добавить».
Нажмите кнопку «Закрыть».
Таблица District появится в окне «Схема данных» (рис. 3.22). Выполните
аналогичные действия с таблицей Building (Здания).

Один ко многим

Рис. 3.22. Создание связей между таблицами

31
5. Связь между таблицами District и Building строится по значению
одноименных полей District. Поместите указатель мыши над полем
District (оно ключевое и поэтому выделено в списке полей полужир-
ным шрифтом), нажмите левую кнопку мыши и, не отпуская ее, «пере-
тащите» появившийся значок поля на поле District таблицы Building.
Отпустите левую кнопку мыши. Появится диалоговое окно «Изменение
связей» (рис. 3.24).
6. Поставьте флажок в поле «Обеспечение целостности данных» и
нажмите кнопку «Создать» для подтверждения создания связи и пере-
хода в окно «Схема данных». Microsoft Access 2002 использует назна-
ченные связи при создании форм, запросов и отчетов, которые требуют
данных из рассмотренных выше таблиц.
Вернемся к рис. 3.22. Важной особенностью Access 2002 является
автоматическое обеспечение ссылочной целостности данных. Если на
связь между таблицами наложены условия ссылочной целостности, то
добавление в связанную таблицу записи, для которой нет соответст-
вующих записей в главной таблице, становится невозможным.
Проверка целостности данных может осуществляться и программ-
ными средствами. Например, при добавлении в таблицу Building описа-
ния нового здания, вы можете проверить, имеется ли в таблице District
район, в котором расположено это здание. Однако более правильным
является определение условия целостности данных на уровне базы
данных, так как в этом случае ни одно приложение не может нарушить
целостность данных. С базой данных может работать несколько прило-
жений, в том числе и не только ваших.
Несколько дополнительных возможностей (см. рис. 3.22).
1. Если Вы поставите флажок в поле «Каскадное обновление связан-
ных полей», то у вас появится возможность исправить номер района
только в таблице District, а в таблице Building все связанные записи
система Access исправит автоматически.
2. Флажок, поставленный в поле «Каскадное удаление связанных за-
писей», позволит вам смело удалить район в таблице District, а все
описания зданий этого района Access 2002 удалит без вашего участия.
Задумайтесь о том, нужен ли вам флажок в этом поле? Удалили одну
запись, а лишились четверти всей базы данных!
Рассмотрим создание связи между таблицами в случае, когда одна
из них имеет составной первичный ключ.
Посмотрите на рис. 3.23. Для этой цели подходят таблицы Flat и
Owners. У таблицы Flat ключевая связка полей выглядит так:
Street+House+Flat. Для построения связи между этими таблицами по-
местите указатель мыши над полем Street таблицы Flat и сделайте
щелчок левой кнопкой мыши. Нажмите клавишу Shift и, не отпуская ее,
сделайте сначала щелчок по полю House а затем Flat. Отпустите кла-
вишу Shift. Будет выделена группа из трех полей: Street+House+Flat.

32
Поместите указатель мыши
над выделенной группой из
трех полей таблицы Flat,
нажмите левую кнопку мыши
и, не отпуская ее, «перета-
щите» появившийся значок
связки полей в любое место
таблицы Owners. Отпустите
левую кнопку мыши. Поя-
вится диалоговое окно «Из-
менение связей» ( рис. 3.24).
В отличие от связывания
таблицы, имеющей простой
первичный ключ (рис. 3.22),
Рис. 3.23. Схема данных где связь District–District
была установлена автомати-
чески, в данном случае необ-
ходимо явно указать, какие
связки полей из таблиц Flat и
Owners участвуют при соз-
дании связи между этими
таблицами. Используя поле с
раскрывающимся списком,
установите нужные вам свя-
зи. Поставьте флажки во всех
трех полях, обеспечивающих
ссылочную целостность. Кас-
кадное удаленние связанных
Рис. 3.24. Создание связи между таблицами записей здесь вполне уме-
Flat и Owners
стно. В последнее время
часто две соседние кварти-
ры приобретает одна семья.
Без третьего флажка (рис.
3.25) удалить данные по
квартире и одновременно по
проживающим нельзя. По-
ставьте его. Этим Вы значи-
тельно облегчите жизнь
пользователю Вашей про-
граммы. Окончательный вид
связи между таблицами Flat
и Owners будет таким (рис.
Рис. 3.25. Окончательный вид связи между 3.25).
таблицами Flat и Owners

33
3.6. Устранение проблем, возникающих при создании ключей
Вы создали свою первую таблицу, и вам, конечно же, не терпится зане-
сти в нее данные, тем более что Access без труда позволяет это сделать.
Не торопитесь! Завершите создание базы данных, назначьте первичные
ключи и установите связи между таблицами. Нарушение этого порядка
может доставить вам массу неприятностей. Вот одна из них.
В таблицу Flat (квартиры) занесена
16291 запись. Первичный ключ у этой
таблицы, конечно же, не создан. На-
чальство торопит с выполнением проек-
та, да к тому же выделило работника
для занесения информации. Вот вам –
результат! Информация обо всех квар-
тирах занесена, вы пытаетесь создать
первичный ключ у этой таблицы, а в ней
есть повторяющиеся записи. Наборщик Рис. 3.26. Сообщение об ошибке
занес одну или несколько квартир более из-за повторяющихся значений в
одного раза. Не удивительно, ведь Ваш индексе
программный комплекс его никак не контролировал. Не отчаивайтесь, а
сделайте следующее.
1. В окне базы данных Real Es-
tate выберите значок «Запросы».
Он находится в списке «Объекты».
Нажмите кнопку «Создать» на па-
нели инструментов окна базы дан-
ных. Появится окно «Новый за-
прос» (3.27).
Выберите пункт «Повторяющие-
ся записи» и нажмите кнопку «Ок».
2. Появится список таблиц базы
данных. Выберите в нем таблицу Рис. 3.27. Создание нового запроса
Flat и нажмите кнопку «Далее».
3. В появившемся диалоговом окне «Поиск повторяющихся записей»
занесите в окно «Поля с повторами» три поля: Street, House, Flat, ис-
пользуя кнопку (рис. 3.28).

Рис. 3.28. Выбор полей

34
4. Нажмите кнопку «Готово» и результат перед вами (рис. 3.29).

Рис. 3.29. Повторяющиеся записи в таблице Flat


(пять квартир из 16291 занесены дважды)

Осталось удалить из таблицы Flat пять квартир, которые занесены по


два раза. Для этого вернитесь в окно базы данных Real Estate, удалите
запрос, который называется «Поиск повторений для Flat», и начните все с
самого начала. Как ни странно – это самый быстрый путь к цели. Выполни-
те пункты с первого по четвертый, а в пятом пункте вместо кнопки «Гото-
во» – нажмите кнопку «Далее». Вам будет дана возможность выбрать до-
полнительные поля, которые будут отображены вместе с повторяющимися
значениями. Советую Вам выбрать все поля, нажав кнопку . После это-
го нажмите кнопку «Готово» и на экране появятся все записи, которые
дублируют друг друга по составному ключу (рис. 3.30).

Рис. 3.30. Расшифровка повторяющихся записей в таблице Flat

На рис. 3.30 хорошо видны ошибки, которые сделал наборщик ин-


формации. Посмотрите на первые две строчки. Квартира номер 1, нахо-
дящаяся в доме 48, расположенном на улице с ссылочным номером 45,
один раз занесена как двухкомнатная с площадью 42,4 м2, а во второй
раз – как однокомнатная с площадью 30,4 м2. Очевидно, что одну из этих
квартир следует удалить. Разберитесь – какую именно и выделите ее,
нажав на кнопку выделения строки таблицы в левой части бланка .
Вся строка после этого будет выделена черным цветом. Щелкните по

35
пиктограмме удаления записи, рас-
положенной в главном окне Access.
Правильно ответьте на запрос системы
(рис. 3.31).
Удалить запись можно и другим
способом. Выделите ее, как было опи-
сано выше. Сделайте щелчок левой
кнопкой мыши по пункту главного меню
Microsoft Access «Правка». В рас-
крывшемся меню выберите пункт Рис. 3.31. Запрос на подтвержде-
ние удаления записи
«Удалить запись».

3.7. Устранение связи «многие ко многим»

В качестве примера рассмотрим функционирование фирмы «Столи-


ца» (часть варианта 8). Особенностью работы этой фирмы является по-
средническая деятельность - стыковка поставщиков товаров и покупате-
лей. Один поставщик связан с несколькими покупателями. Один покупа-
тель, в свою очередь, связан с несколькими поставщиками. По понятным
причинам поставщик «не знает» покупателя и наоборот. Вот Вам пред-
посылка создания связи «многие ко многим» между двумя таблицами:
поставщики и покупатели (рис. 3.32).
Поставщики

ИНН Название Штрих- Название Дата Цена


К-во
поставщика поставщика код товара выпуска за 1 ед.
252206156 «Океан-2» 46052461 Печенье 01.06.04 95-00 200
772654321 «Октябрь» 78690543 Печенье 12.07.04 123-50 450
772654321 «Октябрь» 78695544 Шоколад 15.05.04 43-00 500
772654321 «Октябрь» 78694455 Конфеты 14.06.04 105-00 350
278765433 «Амур пиво» 46052462 Печенье 14.07.04 97-00 600


Покупатели ∞
ИНН Название Название Дата Цена Штрих-
К-во
покупателя покупателя товара покупки за 1 ед. код
276546373 «Татьяна» Печенье 18.07.04 105-00 100 46052462
276546373 «Татьяна» Печенье 18.07.04 140-00 150 78690543
273894756 «Светлый-3» Печенье 21.07.04 110-00 50 46052461

Рис. 3.32. Пример связи «многие ко многим»

36
Как мы уже знаем, реляционная модель не позволяет непосредст-
венно реализовать связь типа «многие ко мно-
гим». Кроме этого, штрих-код товара (рис.3.33),
являясь его однозначной идентификацией, не
может быть назначен в качестве первичного
ключа. В случае если через какое-то время бу-
Рис.3.33 Штрих-код дет закуплена еще одна партия такого же това-
ра, то в таблице «поставщики» появится строч-
ка, имеющая идентичный штрих-код. Аналогичная ситуация возможна и
с покупателем, который приобретет такой же товар из другой партии. И
еще одна проблема: один клиент практически никогда не покупает всю
партию целиком и перед фирмой встает проблема учета остатка товара.
Все эти проблемы (реляционной модели и алгоритма) легко реша-
ются добавлением двух промежуточных таблиц: «Поставленные това-
ры» и «Проданные товары». На рис. 3.34 показан фрагмент схемы дан-
ных превращения «связи многие ко многим» в несколько связей «один
ко многим» с добавлением этих промежуточных таблиц.

Рис. 3.34. Работающий фрагмент схемы данных

37
Преобразование связи «многие ко многим» в несколько связей «один ко
многим» и «много к одному» можно сделать следующим образом. Вме-
сто того чтобы рассматривать множество поставщиков, поставляющих
товары многим клиентам, будем рассматривать одного поставщика и
множество поставляемых им товаров («один ко многим»). Далее будем
рассматривать деление товара одной партии на множество частей, под-
лежащих продаже («один ко многим»). В результете получим множество
товаров, приобретаемым одним покупателем («много к одному»).
Появление таблицы «проданные товары» позволяет решить внут-
реннюю проблему учета остатков товара в фирме «Столица».
Особенностью реализации предложенной схемы является наличие
составного первичного ключа в таблице «Поставленные товары» по
связке полей «штрих-код товара» плюс «номер партии» (GoodsID +
NumberPart).

4. СОЗДАНИЕ ФОРМ ДЛЯ ВВОДА И РЕДАКТИРОВАНИЯ ДАННЫХ

Microsoft Access 2002 дает нам возможность ввода и редактирования


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

4.1. Создание простой формы в режиме конструктора

В этом подразделе мы создадим форму, размещая в ней элементы


различных типов в режиме конструктора. Microsoft Access имеет в своем
арсенале еще одно средство для создания формы за несколько минут –
Мастер форм. Однако позволю себе порекомендовать вам не работать с
ним. Это инструмент для дилетантов. Времени потратите немного, но и
хорошего результата не получите!
Перед Вами самый распространенный вид формы (рис. 4.1), создан-
ной в Microsoft Access. В данном случае она используется для отобра-
жения информации о зданиях (Building) и связана с одноименной таб-
лицей. В любой момент времени в этой форме расположено описание
только одного из 195 зданий. Линейка прокрутки, размещенная в нижней
части формы, дает возможность отобразить в форме любую запись из
таблицы. В центре линейки прокрутки находится номер записи. На рис.
4.1 – это запись номер 1.

38
Рис. 4.1. Наша первая форма, созданная в режиме конструктора
Откроем форму в конструкторе. Для этого в окне базы данных Real
Estate выберите вкладку «Формы». Файл Real Estate.mdb находится на
компакт-диске, прилагаемом к этому учебному пособию. Компакт-диск
можно также взять на кафедре. Щелкните левой кнопкой мыши по фор-
ме Building, а затем по пиктограмме «Конструктор» (рис. 4.2).

Рис. 4.2. Окно конструктора форм

39
На экране дисплея появится три окна. Первое с названием «Building:
форма» – сам конструктор. Второе – с полями одноименной таблицы
(см. табл. 2.7) и третье – панель элементов, которая содержит ряд кно-
пок, предназначенных для размещения в форме элементов. Функции
этих кнопок будут рассмотрены в следующих разделах.

4.1.1. Создание заготовки для формы

Теперь, когда мы в общих чертах знаем c чем придется иметь дело,


предлагаю Вам начать конструирование с самого начала, останавлива-
ясь подробно на каждом элементе создаваемой формы.
Сделайте активным окно базы данных. Выберите вкладку «Формы».
Так как в данный момент мы не создали еще ни одной формы, то вы
увидите в окне списка форм только два приглашения: «Создание формы
в режиме конструктора» и «Создание формы с помощью мастера» (см.
рис. 4.4).
Если вы выбрали первое предложение, то в дальнейшем у вас возник-
нут затруднения с привязкой таблицы к создаваемой форме. Работу же с
«Мастером» мы не рассмат-
риваем вообще. Поэтому
проигнорируйте оба этих при-
глашения и сделайте щелчок
левой кнопкой мыши по пик-
тограмме «Создать».
Появится диалоговое ок-
но «Новая форма» (рис. 4.3).
Выберите пункт «Конструк-
тор» в верхнем окне и табли-
цу Building в поле с раскры-
вающимся списком. В завер-
шение этого этапа нажмите
кнопку «Ок».
На рис. 4.4 приведен вид
окна Microsoft Access 2002
целиком. Рис. 4.3. Создание новой формы
Хорошо видна заготовка
новой формы (пока ее название – Форма1), окно базы данных Real Es-
tate, окно полей таблицы building и панель элементов, на которой уже
выбран элемент: поле со списком. Система готова к построению фор-
мы!
Каждому полю таблицы Building в форме, которую мы позже назо-
вем так же – Building, соответствует определенный элемент. Начнем с
первого поля: Street.

40
Рис. 4.4. Заготовка новой формы в конструкторе форм

4.1.2. Создание поля со списком


Улицу, на которой расположено здание, пользователь должен вы-
брать из списка улиц города, а не вносить с клавиатуры её название.
В Access очень грамотно реализован выбор значения из очень длинных
списков. Вы можете ввести один или несколько символов названия эле-
мента списка (в данном случае улицы) – Access сам найдет в списке
нужный элемент по первым символам и занесет его в текстовое поле.
Поэкспериментируйте с формой Building из файла Real Estate.mdb и
уверен, вам очень понравится такая реализация выбора.
А сейчас – непосредственно построение.
1. Убедитесь, что на панели элементов кнопка с подсказкой «Мас-
тер» нажата. Если нет – «утопите» ее щелчком левой кнопки мыши.
В противном случае Вы очень долго будете обвинять во всех грехах
свой безупречно работающий компьютер. Построитель этого элемента
так и не запустится.
2. Нажмите на панели элементов кнопку «Поле со списком». По-
местите указатель мыши над активной областью формы. Он превратит-
ся в значок поля со списком , снабженный крестиком в левом верхнем
углу. Прицельтесь получше и сделайте щелчок левой кнопкой мыши.
Увидите следующую картину (рис. 4.5).

41
3. Одновременно с этим
откроется первое диалоговое
окно мастера списков с заго-
ловком «Создание полей со
списком». Вам будет предло-
жено выбрать источник значе- Рис. 4.5. В области данных формы появил-
ний. Наши названия улиц хра- ся первый элемент
нятся в таблице Street, поэто-
му сделайте щелчок левой
кнопкой мыши по первой кноп-
ке , рядом с которой имеется
надпись: «Объект поле со спи- Рис. 4.6. Выбор отображаемых полей
ском».
4. Нажмите кнопку «Да-
лее». Появится второе диало-
говое окно, в котором ото-
бражен список всех таблиц,
входящих в базу данных. Вы-
берите таблицу Street и на-
жмите кнопку «Далее». Рис. 4.7. Выбор ширины колонок
5. В появившемся треть- раскрывающегося списка
ем диалоговом окне Access
предлагает выбрать поля
таблицы Street, значения ко-
торых будут отображаться в
раскрывающемся поле со
списком (рис. 4.6). Пусть это Рис. 4.8. Сохранение выбранного значения
будут первые три поля. в поле таблицы
6. Нажмите кнопку «Да-
лее». Появится четвертое
диалоговое окно. Поставьте
флажок в поле с названием
«Скрыть ключевой столбец».
Пользователю ни к чему ви- Рис. 4.9. Поле со списком создано
деть, под каким номером в
таблице Street стоит та или иная улица. Здесь же Вам предоставлена
возможность – установить ширину колонок (рис. 4.7).
7. Нажмите кнопку «Далее». Очень ответственный момент. Надо ука-
зать поле таблицы Building, в которое будет записываться ссылка на
улицу из таблицы Street. Сделайте так, как показано на рис. 4.8.
8. В шестом диалоговом окне предлагается ввести надпись, которая
будет стоять рядом с раскрывающимся списком. Напишите слово «Ад-
рес» и нажмите кнопку «Готово» (рис. 4.9).

42
Не беда, если вам не удалось сразу расположить элемент в нужном
месте формы. Access предоставляет пользователю массу возможно-
стей для форматирования. Во-первых, щелкните правой кнопкой мыши
по надписи «Адрес» и выберите в раскрывшемся меню пункт «Размер»,
а в появившемся подменю пункт – «По размеру данных». Во-вторых, пе-
реместите поле со списком и его метку в нужное место на форме. Для
этого поместите указатель мыши в любую точку на границе выделенного
элемента, отличную от маркеров изменения размеров. Нажмите левую
кнопку мыши и, не отпуская ее, «перетащите» элемент на новое место.
Более точно «выставить» элемент управления и его метку на форме
можно при помощи клавиш клавиатуры с изображением стрелок при на-
жатой клавише <Ctrl>.

4.1.3. Создание текстовых полей


Создадим текстовое поле для отображения номера дома (рис. 4.10).
Это однострочное текстовое поле, присоединенное к полю House таб-
лицы Building. Порядок действий следующий.
1. Если на экране дисплея отсутствует окно списка полей таблицы
Building, выберите в главном меню Microsoft Access пункт «Вид», а в
раскрывшемся подменю пункт – «Список полей».
2. В списке полей выделите поле House. Нажмите левую кнопку мы-
ши и «перетащите» выделенный элемент на форму. В активной области
формы указатель мыши превратится в символ текстового поля, но без ма-
ленького крестика, как это было при создании поля со списком. Располо-
жение символа поля указывает верхний левый угол самого текстового по-
ля, а не на его метки. Если подведете курсор слишком близко к левому
краю формы, то можете потерять метку текстового поля. На экране ее не
будет видно, хотя среди элементов формы она будет присутствовать.
3. «Перетащите» текстовое поле за маркер перемещения к метке и
уменьшите ширину текстового поля.
У вас есть возмож-
ность изменить разме-
ры как элемента, так и
метки при помощи кла-
виатуры. Выделите нуж-
ный объект и клавиша-
ми клавиатуры с изоб-
Рис. 4.10. Текстовое поле ражением стрелок при
нажатой клавише <Shift>
добейтесь необходимых результатов. При помощи клавиатуры такие
действия выполняются гораздо точнее, чем при использовании мыши.
В качестве метки Access применяет название перетаскиваемого по-
ля таблицы. Название метки можно изменить, причем несколькими спо-

43
собами. Проще всего щелкнуть по выделенной метке левой кнопкой
мыши. Указатель мыши превратится в текстовый курсор. Далее исполь-
зуйте клавиатуру для ввода надписи.
Настала очередь создания поля «Примечания» (см. рис. 4.1). Это по-
ле ввода с линейкой прокрутки. Применяется для включения в форму
длинных текстовых полей.
1. Если на экране дисплея отсутствует окно списка полей таблицы
Building, выберите в главном меню Microsoft Access пункт «Вид», а в
раскрывшемся подменю – пункт «Список полей».
2. В списке полей выделите поле Comment (рис. 4.11). Нажмите ле-
вую кнопку мыши и «перетащите» выделенный элемент на форму. В ак-
тивной области формы указатель мыши превратиться в символ тексто-
вого поля. Отпустите левую кнопку мыши.
3. Удалите метку поля и измените размеры текстового поля до тре-
буемых.
4. Сделайте щелчок правой кнопкой мыши по созданному полю. Вы-
берите в открывшемся меню пункт «Свойства».

Рис. 4.11. Создание поля ввода с линейкой прокрутки

5. В появившемся диалоговом окне с заголовком «Поле: Comment»


выберите вкладку «Макет». Найдите в списке этой вкладки свойство
«Полосы прокрутки». Раскройте список свойств и «По вертикали».
Внимание! Вертикальная полоса прокрутки такого поля ввода ото-
бражается только тогда, когда поле получает фокус.

4.1.4. Создание поля типа «Флажок»


Если в таблице находится поле логического типа, принимающее зна-
чение только «да» или «нет», то использование флажка сделает форму
более выразительной и удобной. В нашем случае речь пойдет о поле
Elevator (лифт). Выделите в списке полей таблицы это поле и «перета-
щите» на форму. Остается изменить название метки. Щелкните по ней
левой кнопкой мыши. Указатель превратится в текстовый курсор. Ис-

44
пользуйте клавиатуру для ввода надписи. Этого же результата можно
добиться и другим способом. Сделайте щелчок правой кнопкой мыши по
созданной метке. Выберите в открывшемся меню пункт «Свойства».
В появившемся диалоговом окне выберите вкладку «Макет». Найди-
те в списке этой вкладки свойство «Подпись». Введите текст, который
хотите увидеть рядом с флажком – «Лифт» (рис. 4.12).

Рис. 4.12. Поле типа «флажок» создано

4.1.5. Создание поля типа «Группа переключателей»

В таблице Building (здания) имеется поле Kind – вид собственности.


Собственность может быть только трех типов: муниципальная, краевая и
федеральная. Тип этого поля – числовой. В качестве значений могут вы-
ступать только числа от 1 до 3. Конечно, можно было создать еще одну
таблицу, назначить ключевое поле, установить отношение один ко мно-
гим с таблицей Building по этому ключу, а для отображения в форме ис-
пользовать поле со списком. К счастью, Microsoft Access предлагает нам
более легкий, а с позиции интерфейса и более красивый путь решения
задачи такого типа, когда значений поля немного, и их количество в про-
цессе эксплуатации программного комплекса меняться не будет.
Порядок создания группы переключателей следующий.
1. Убедитесь, что на панели элементов кнопка с подсказкой «Мас-
тера» нажата. Если нет – «утопите» ее щелчком левой кнопки мыши.
Нам понадобится работа построителя.
2. На этой же панели выберите пиктограмму «Группа переключа-
телей». Типичная ошибка начинающих – выбор пиктограммы «Пере-
ключатель». Помните! Набором переключателей в Microsoft Access груп-
пу переключателей сделать нельзя.

45
3. Поместите указатель мыши над активной областью формы. Он
превратиться в значок группы переключателей с крестиком в левом
верхнем углу. Нажмите левую кнопку мыши и, удерживая ее в нажатом
состоянии, переместите курсор по диагонали так, чтобы получилась
рамка требуемого размера. Отпустите левую кнопку мыши. Автоматиче-
ски запустится построитель группы переключателей.
4. Сделайте подписи у переключателей (рис. 4.13) и нажмите кнопку
«Далее». Теперь назначим переключатель, используемый по умолча-
нию. Большинство зданий города находится в муниципальной собствен-
ности. Предоставим возможность пользователю не щелкать мышью по
этому элементу при занесении муниципального здания. Он наверняка
будет нам за это благодарен (рис. 4.14).

Рис. 4.13. Шаг 1

Рис. 4.14. Шаг 2


5. Третий шаг построителя посвящен привязке подписи к значению.
Если ничего не менять, то цифра один будет соответствовать муници-
пальной собственности, два – краевой, а три – федеральной.
6. На четвертом шаге (рис. 4.15) необходимо указать поле таблицы
Building, в которое будет занесена выбранная цифра. Сделайте щелчок
мышью по второй кнопке и не ошибитесь с выбором. Это поле Kind (вид
собственности).

46
Рис. 4.15. Шаг 4

7. Пятый шаг построителя (рис. 4.16) – оформление внешнего вида


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

Рис. 4.16. Шаг 5

8. На последнем шаге необходимо ввести подпись для созданной


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

4.1.6. Отображение фотографий в форме

Все современные настольные СУБД дают нам возможность отобра-


жать фотографии, содержащиеся в таблицах баз данных. В Microsoft Ac-
cess как фотографии, так и другие объекты OLE, отображаются в при-
соединенной рамке объекта. Этот элемент управления представляет
собой контейнер OLE, в котором могут отображаться растровые и век-
торные изображения, звуковые объекты, рисунки с анимацией, видео-
объекты и т.п.

47
Добавим присоединенную рамку объекта в нашу первую форму
(см. рис. 4.1). Напомню, что для хранения фотографий зданий мы пре-
дусмотрели поле Picture (поле OLE) в таблице Building.
1. Выберите на панели элементов пиктограмму «Присоединенная
рамка объекта». Не перепутайте ее с очень похожей на нее свободной
рамкой объекта .
2. Поместите указатель мыши над активной областью формы. Он
превратится в значок присоединенной рамки объекта с крестиком в
левом верхнем углу. Нажмите левую кнопку мыши и, удерживая ее в на-
жатом состоянии, переместите курсор по диагонали так, чтобы получи-
лась рамка требуемого размера. Отпустите левую кнопку мыши.
3. Удалите подпись возле этого элемента управления, которую сге-
нерировал компьютер: «Присоединенный OLE» (рис. 4.17). Нет никакого
смысла переименовывать ее во что-то типа «Фотография» или нечто
подобное. И без нее все предельно ясно.

Рис. 4.17. Размещение фотографии здания в форме

4. Сделайте щелчок правой кнопкой мыши по только что созданному


объекту и в появившемся меню выберите пункт «Свойства». Настала
очередь привязать к объекту поле таблицы. Выберите вторую вкладку
«Данные».
5. Последний этап – масштабирование. В Microsoft Access сущест-
вует три способа масштабирования графических объектов внутри при-
соединенной рамки объекта. Для этого предназначено свойство «Уста-
новка размеров» (рис. 4.18). Его легко найти на первой вкладке окна
свойств с названием «Макет».
Если в качестве значения этого свойства выбрать «Фрагмент», то
фотография будет отображена в ее исходной пропорции. Если фото не
помещается в рамку целиком, то оно урезается снизу и справа.

48
Фрагмент

Вписать в рамку

По размеру рамки

Рис. 4.18. Варианты свойства «Установка размеров»

Второй способ – «вписать в рамку». Фотография будет «втиснута» в


очерченное ранее пространство. Масштаб по высоте и ширине фото-
графии будет установлен отдельно, чтобы заполнить рамку полностью.
Третий способ – «по размеру рамки». Масштаб фотографии будет уве-
личен или уменьшен по ширине и по высоте так, чтобы фото целиком по-
местилось в рамку, и при этом его исходная пропорция сохранилась бы.
Наша первая форма создана. Позже мы разместим в ней еще один
элемент – кнопку «Квартиры» для вызова другой формы (Flats), а сей-
час попробуем добавить запись в таблицу Building, соответствующую
еще одному зданию с помощью нашей формы.
Сделайте активным окно базы данных Real Estate. В окне объектов
выберите вкладку «Формы». Запустите форму на выполнение, сделав
двойной щелчок мышью по ее названию (Building). Появится информа-

49
ция о первом здании (см. рис. 4.1). Найдите на линейке записей пикто-
грамму «Добавление новой записи».
Теперь можно заносить информацию об очередном здании. Займемся
его фотографией. Сделайте щелчок правой кнопкой мыши по месту, где
она должна располагаться в форме, и в появившемся меню выберите
пункт «Добавить объект». Появится диалоговое окно «Вставка объекта».

Рис.4.19. Вставка объекта

В разделе «Тип объекта» необходимо указать: «Точечный рисунок»,


так как все наши фотографии отсканированы в формате BMP, а в раз-
деле «Происхождение» – выбрать пункт «Создать из файла». После это-
го с помощью диалогового окна «Обзор» укажите файл, в котором хра-
нится фотография здания, и нажмите кнопку «ОК». Не устанавливайте
флажок «Связь». Мы не будем редактировать эту фотографию с помо-
щью какого-либо графического редактора. Связь таблицы с файлом и
автоматическое обновление изображения нас не интересуют.

4.2. Создание сложной формы

Наша первая форма Building дает возможность работать с таблицей


зданий. С ее помощью мы можем комфортно добавлять, удалять и коррек-
тировать информацию, относящуюся к какому-либо зданию. Настала пора
добиться такой же комфортности при работе с квартирами, расположен-
ными в здании, и с проживающими в них собственниками. В принципе вы
могли бы создать еще три формы для раздельного отображения инфор-
мации по квартирам, лицевым счетам и по проживающим в этих квартирах
собственникам, но ввиду небольшого количества полей, содержащихся в
таблицах Flat, Owners и Account, есть смысл разместить всю эту инфор-
мацию в одной сложной форме. Дадим ей имя Flats (квартиры).

50
Первая проблема, которую необходимо решить на пути к цели, за-
ключается в следующем. В нашей форме должна отображаться инфор-
мация не обо всех квартирах в городе, а только о тех, которые располо-
жены в выбранном для просмотра здании. Поэтому форма Flats будет
связана не с таблицей Flat, а с запросом Flats, в который мы поместим
данные о квартирах, находящихся в одном конкретном здании, и лице-
вых счетах ответственных квартиросъемщиков. Порядок его создания
следующий.
1. В окне базы данных Real
Estate выберите значок «Запросы».
Он находится в списке «Объекты».
Нажмите кнопку «Создать» на
панели инструментов окна базы
данных. Появится окно «Новый
запрос» (рис. 4.20).
2. Выберите пункт
«Конструктор» и нажмите кнопку
«ОК».
3. Появится список таблиц ба-
Рис. 4.20. Создание нового запроса зы данных. Выберите в нем сна-
чала таблицу Flat и нажмите кноп-
ку «Добавить», а затем таблицу Account. Появится окно «Запрос на вы-
борку».
4. Расположите последовательно все поля из таблиц Flat и Account в
запросе, как это показано на рис. 4.21. Не пропустите ни одного, иначе
Вас ждут неприятности при занесении новых записей по квартирам. Поле
Account (номер лицевого счета), связывающее эти таблицы, заносится
только один раз.

Рис. 4.21. Окно конструктора запросов

51
5. Определите условия отбора записей из таблиц Flat и Account в
запрос (рис. 4.22). Он должен содержать данные только по одному кон-
кретному зданию.

Рис. 4.22. Определение условий отбора записей из исходных таблиц и сортировка

Условия отбора записей по полям Street и House:


[Forms]![Building]![Street] и [Forms]![Building]![House]
можно перевести так. В запрос должны попасть только те квартиры, ко-
торые находятся в здании с номером улицы, отображенном в форме
Building в объекте Street (адрес) и с номером дома, отображенном в
форме Building в объекте House (номер дома). Для полной ясности по-
смотрите на рис. 4.2.
6. Установите порядок сортировки записей, попавших в запрос. Луч-
ше всего, если квартиры в нашей форме будут отображаться в порядке
возрастания номеров. Это поле Flat.
7. Сохраните созданный запрос под именем Flats. Текст запроса на
языке SQL, сгенерированный конструктором запросов, выглядит так.
SELECT flat.STREET, flat.HOUSE, flat.FLAT, flat.STOREY, flat.ROOMS,
flat.SQUAREFLAT, flat.DWELL, flat.BRANCH, flat.BALCONY, flat.HEIGHT,
account.ACCOUNT, account.FAMILY, account.NAME, account.SECOND
FROM account INNER JOIN flat ON account.ACCOUNT = flat.ACCOUNT
WHERE (((flat.STREET)=[Forms]![Building]![Street]) AND
((flat.HOUSE)=[Forms]![Building]![House]))
ORDER BY flat.FLAT;

Обратите внимание на сложность текста запроса и на то, с какой легко-


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

52
такая квартира будет навсегда потеряна, так как не будет отображаться
в форме при повторном запуске на выполнение. Чтобы избежать этой
ошибки необходимо добавить в событие «До вставки» формы Flats про-
цедуру, написанную на языке Visual Basic для приложений (VBA). Если
вы хотите написать хорошее приложение на Access, то знание основ
VBA Вам просто необходимо.

Private Sub Form_BeforeInsert(Cancel As Integer)


Me!STREET = [Forms]![Building]![STREET]
Me!HOUSE = [Forms]![Building]![HOUSE]
End Sub

Первую и последнюю строчку этой процедуры Access сгенерирует сам.


Вторая и третья строчки – на совести разработчика. Для ссылки на
активную форму используется ключевое слово Me (рис. 4.23). После
имени формы добавляют название элемента, разделив их восклица-
тельным знаком.
Теперь квартира, вновь заносимая в базу, получит адрес (Street+House)
и будет появляться в форме в нужном месте и в нужное время.

Рис. 4.23. Текст процедуры обработки события «До вставки»

Третья проблема – создание подчиненной формы. Подчиненная


форма – это форма, находящаяся внутри другой формы. Первичная
форма (в нашем случае Flats) называется главной. Подчиненные фор-
мы очень удобны для вывода информации из таблиц или запросов, свя-

53
занных отношением один ко многим. Одна квартира – несколько прожи-
вающих. При использовании формы с подчиненной формой для ввода
новых записей, текущая запись в главной форме сохраняется при входе
в подчиненную форму. Это гарантирует, что записи из таблицы или за-
проса на стороне «многие» будут иметь связанную запись в таблице или
запросе на стороне «один». Access автоматически сохраняет каждую
запись, добавляемую в подчиненную форму, и никакие специальные
приемы типа обработки события «До вставки» не требуются.
Начнем с конечного результата. На рис. 4.24 показаны две формы.
Building (информация по зданию) и Flats (данные по квартире). Форма
Flats содержит подчиненную форму Owners (члены семьи квартиро-
съемщика).

Рис. 4.24. Основные формы программного комплекса Real Estate

Порядок создания подчиненной формы следующий.


1. Откройте первичную форму Flats в режиме конструктора.
2. Убедитесь, что на панели элементов кнопка с подсказкой «Мас-
тера» нажата. Если нет – «утопите» ее щелчком левой кнопки мыши.
Нам понадобится работа построителя подчиненных форм.

54
3. Нажмите на панели элементов кнопку «Подчиненная форма».
Поместите указатель мыши над тем местом первичной формы, где вы
планируете разместить левый верхний угол подчиненной формы. Указа-
тель мыши превратится в значок подчиненной формы с крестиком в ле-
вом верхнем углу.
4. Нажмите левую кнопку мыши и, удерживая ее в нажатом состоя-
нии, переместите курсор по диагонали так, чтобы получилась рамка
требуемого размера. Отпустите левую кнопку мыши. Автоматически за-
пустится построитель подчиненной формы.
5. Первый шаг работы мастера подчиненных форм – определение
данных, которые надо включить в подчиненную форму. «Утопите» кноп-
ку «Имеющиеся таблицы и запросы» и щелкните по кнопке «Далее».
Появится окно для выбора таблиц и полей. Выберите все поля из таб-
лицы Owners (рис. 4.25).

Рис. 4.25. Первый шаг работы мастера подчиненных форм

6. Второй шаг – определение полей связи между главной и подчи-


ненной формами. Основа главной формы Flats – одноименный запрос, в
который попали данные из двух таблиц: Flat и Account. Подчиненная
форма основана на данных из таблицы Owners. Никогда ранее мы не
устанавливали отношений между запросом Flats и таблицей Owners,
поэтому все, что может предложить мастер подчиненных форм на этом
шаге, нам не подходит. Сделайте щелчок по кнопке «Самостоятельное
определение». Ключевая связка выглядит так: Street+House+Flat (4.26).
7. Шаг три – выбор имени для подчиненной формы. Под этим име-
нем она появится в списке форм базы данных Real Estate. Мы уже усло-
вились, что назовем ее Owners. Введите это имя и щелкните по кнопке
«Готово».

55
Рис. 4.26. Определение полей связи между главной и подчи-
ненной формами

Закройте первичную форму Flats. Дальнейшая работа будет проис-


ходить с формой Owners. Откройте ее в режиме конструктора. То, что
сгенерировал мастер подчиненных форм, необходимо подвергнуть не-
которому улучшению. Посмотрите сами (рис. 4.27).

Рис. 4.27. Подчиненная форма, созданная при помощи мастера

В заголовки колонок вынесены названия полей таблицы Owners. Ко-


нечному пользователю они ни о чем не говорят. Наличие ключевых полей
Street, House и Flat в подчиненной форме вносит настоящую путаницу.
Кнопки перехода по записям подчиненной формы в данном случае просто
мешают работе. Не пытайтесь изменить шрифт заголовков колонок. Фор-
ма сгенерирована в режиме таблицы, у вас просто ничего не получится.
Для начала сделаем подчиненную форму ленточной. В окне свойств
этой формы выберем вкладку «Макет», найдем свойство «Режим по

56
умолчанию» и изменим его значение на «Ленточная форма». Удалим за-
головок формы и ключевые поля Street, House и Flat. Для удаления эле-
мента сделайте по нему щелчок левой кнопкой мыши и нажмите клавишу
<Delete>. Уберем совсем кнопки перехода по записям. Для этого на
вкладке «Макет» в качестве значения свойства «Кнопки перехода» по-
ставьте «Нет». Немного отформатируем объекты формы. Для этого по-
местите указатель мыши в любую точку на границе выделенного элемен-
та, отличную от маркеров изменения размеров. Нажмите левую кнопку
мыши и, не отпуская ее, «перетащите» элемент на новое место. Более
точно «выставить» элемент управле-
ния на форме можно при помощи
клавиш клавиатуры с изображением
стрелок при нажатой клавише <Ctrl>,
а поточнее изменить размеры эле-
мента можно при помощи клавиш кла-
виатуры с изображением стрелок при
нажатой клавише <Shift>. После про-
Рис. 4.28. Требование параметра деланных манипуляций получим
форму, изображенную на рис. 4.24.

4.3. Добавление кнопки в форму для вызова другой формы

В предыдущем разделе нами была создана сложная форма Flats для


отображения информации о квартирах, расположенных в здании. Если
вы полностью следовали моим советам и выполнили эту работу на ком-
пьютере, то вместо картинки, изображенной на рис. 4.27, после запуска
формы на выполнение получили требование ввести какой-то параметр
(см. рис. 4.28).
В этом нет ничего удивительного. Запускать на выполнение форму
Flats (квартиры) имеет смысл только из формы Building (здание), так как
два параметра адреса – улицу и номер дома – сформированный нами
запрос по квартирам берет именно из этой формы. Добавим кнопку с на-
званием «Квартиры» в форму Building.
1. Откройте форму Building в режиме конструктора.
2. Убедитесь, что на панели элементов кнопка с подсказкой «Мас-
тера» нажата. Если нет – «утопите» ее щелчком левой кнопки мыши.
3. Сделайте щелчок левой кнопкой мыши по пиктограмме на панели
элементов «Кнопка».
4. Поместите указатель мыши над тем местом формы Building, где
вы планируете разместить левый верхний угол кнопки. Указатель мыши
превратится в значок кнопки с крестиком в левом верхнем углу.
5. Нажмите левую кнопку мыши и, удерживая ее в нажатом состоя-
нии, переместите курсор по диагонали так, чтобы получилась рамка

57
требуемого размера. Отпустите левую кнопку мыши. Автоматически за-
пустится построитель кнопки.
Появится диалоговое окно, показанное на рис. 4.29. Выберите кате-
горию и действия так, как показано на этом рисунке, и нажмите кнопку
«Далее>».

Рис. 4.29. Первый шаг работы мастера кнопок

6. На втором шаге работы мастера кнопок необходимо выбрать


форму, которая будет запущена на выполнение после щелчка мышью по
кнопке. Это форма – Flats (рис. 4.30).

Рис. 4.30. Второй шаг работы мастера кнопок

58
7. Третий шаг – отбор сведений для отображения в форме. Так как
запускаемая форма Flats отображает данные, полученные в результате
выполнения запроса по одному конкретному зданию, и никакого допол-
нительного отбора не требует – оставьте появившийся переключатель в
исходном положении: «Открыть форму и показать все записи».
8. Четвертый шаг – оформление внешнего вида кнопки. На ней мож-
но разместить как надпись, так и рисунок, который находится в файле.
При размещении рисунка Access предложит стандартное окно для поис-
ка файла с рисунком.
Последний шаг можно пропустить. Сделайте щелчок левой кнопки
мыши по кнопке «Готово». Компьютер сам присвоит созданной кнопке
имя, под которым она и будет фигурировать как объект VBA в текстах,
сгенерированных Microsoft Access или написанных разработчиком.
Настало время посмотреть на то, что наколдовал Wizard. Так назы-
вается любой построитель (мастер) в оригинальной версии Access. До-
словный перевод этого слова – «колдун». Запустите форму Building в
режиме конструктора и сделайте двойной щелчок по созданной кнопке
«Квартиры». Откроется окно свойств этого объекта. Перейдите на
вкладку «События» и выберите «Нажатие кнопки». Вот результаты ра-
боты «колдуна».
Private Sub Кнопка190_Click()
On Error GoTo Err_Кнопка190_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = «flats»
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Кнопка190_Click:
Exit Sub
Err_Кнопка190_Click:
MsgBox Err.Description
Resume Exit_Кнопка190_Click
End Sub

Признаюсь, что более «навороченного на пустом месте» текста про-


цедуры мне раньше видеть никогда не приходилось. Замените его на :
Private Sub Кнопка190_Click()
DoCmd.OpenForm «flats»
End Sub

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


что в случае возникновения ошибки при работе формы Flats об этом в
первой процедуре сообщит Microsoft Access 2002, а во второй – Visual
Basic for Application 6.3. В обоих случаях будет выведен один и тот же
текст, причем VBA укажет еще и номер ошибки.

59
Итак, кнопка для вызова формы Flats из формы Building создана.
Основная часть нашего программного комплекса готова к работе. Да-
вайте в очередной раз подумаем о конечном пользователе. Попробуйте
полностью от начала до конца заполнить карточку здания. Уверен, вы
будете не очень довольны тем, что после заполнения очередного поля и
нажатия клавиши <Enter> курсор перепрыгивает вовсе не на следующее
поле, а совсем в другой угол формы, и вам приходится прибегать к по-
мощи мыши, чтобы вернуть его в нужное место.
Исправим сложившееся положение. Запустите форму Building в ре-
жиме конструктора. В главном окне Microsoft Access выберите пункт ме-
ню «Вид», а в открывшемся подменю – строчку «Последовательность
перехода». Откроется диалоговое окно, в котором отображен список
всех объектов, имеющихся в форме (рис. 4.31). Причем отображены они
в той последовательности, в какой попали в форму (рис. 4.31). Послед-
ней находится наша кнопка с именем «Кнопка190». У нас есть возмож-
ность «перетащить» любой объект в любое место окна. Выделите его
щелчком левой кнопки мыши и творите!

Рис. 4.31. Изменение последовательности перехода

Вполне очевидно, что наилучший порядок перехода фокуса между


элементами формы – естественный. Если все элементы формы распо-
ложены один под другим, то нажмите кнопку «Авто» и статус-кво будет
восстановлен. После внесения изменений не закрывайте окно щелчком
левой кнопкой мыши по крестику, расположенному в правом верхнем уг-
лу окна, так как в этом случае вся ваша работа пойдет насмарку. Для
сохранения сделанных изменений обязательно нажмите кнопку «ОК».

60
4.4. Первые результаты

Мы создали две формы, которые позволяют добавлять и корректиро-


вать данные по описаниям зданий, квартир, и проживающих в них, но не
предусмотрели возможность удаления и поиска информации. Поспешу
вас обрадовать – эти функции реализованы в Microsoft Access его соз-
дателями. Ни одна другая СУБД не имеет их в своем арсенале. Если эта
реализация устраивает разработчика программного комплекса, то
больше ничего делать не требуется. Пользуйтесь готовым!
Для удаления описания определяемого здания сделайте так, чтобы
оно было отображено в форме Building. В главном меню Microsoft Ac-
cess выберите пункт «Правка», а в появившемся подменю – строку
«Удалить запись». Если при формировании связей между таблицами вы
указали режим «Каскадное удаление связанных записей», то вместе со
зданием будут удалены все квартиры и проживающие в них, если нет –
то Access выдаст сообщение о невозможности удаления этого здания,
но только при наличии в нем квартир и проживающих.
Возможности поиска, предоставляемые Microsoft Access, необычайно
широки. Рассмотрим их на конкретном примере.
Пример: требуется найти все здания, расположенные не в цен-
тральном районе, 1963 г. постройки с износом до 30 %. Площадь зе-
мельного участка должна быть до 2500 м2. Здания должны находиться в
краевой собственности и иметь лифт.
Решение: запустите на выполнение форму Building. В главном меню
(рис. 4.32) Microsoft Access выберите пункт «Записи». В появившемся под-
меню выберите пункт «Фильтр». Не делайте щелчка мышью, а просто по-
местите на него указатель. Откроется еще одно подменю (рис. 4.33).

Рис. 4.32. Главное окно Microsoft Access

Выберите строку «Изменить фильтр». Появится окно «Building:


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

61
Рис. 4.33. Окно установки фильтра по зданиям

Обратите внимание на профессионализм авторов Microsoft Access. В


список, из которого Вы выбираете значение поля, занесены только те,
которые встречаются в базе данных. Например, если в базе нет зданий
1909 года постройки, то среди предложенных вариантов выбора этот год
отсутствует. Для формирования очень сложных условий внизу окна
имеется вкладка «Или». Сделайте по ней щелчок левой кнопкой мыши,
если в этом есть необходимость, и задайте еще группу условий. Таких
групп условий может быть сколько угодно, но помните, что устанавли-
вать фильтр можно только при числе записей в фильтруемых таблицах
до нескольких тысяч из-за значительного замедления работы компьюте-
ра, особенно при работе в сети.
После ввода всех нужных условий выберите в подменю «Записи»
пункт «Применить фильтр» (см. рис. 4.32). Снова появится форма Building,
но отображаться в ней будут только два здания, удовлетворяющим усло-
виям нашего примера, из 195, имеющихся в базе Real Estate (рис. 4.34).
Не забудьте снять фильтр, когда поставленная задача будет решена.
Для этого в подменю записи сделайте щелчок мышью по пункту «Уда-
лить фильтр».
И еще об одной приятной неожиданности, доставленной нам разра-
ботчиками Microsoft Access – проверке орфографии, причем на довольно
высоком уровне. Этим также не могут похвастаться другие СУБД. На
рис. 4.1 в поле «Примечания» занесен текст, содержащий слово с орфо-
графической ошибкой. Интересно, а вы ее заметили? Поручим компью-
теру найти эту ошибку. Поместите указатель мыши в самое начало поля,
нажмите левую кнопку, и не отпуская ее, переместите указатель в самый

62
конец поля «Примечания». Отпустите кнопку. В главном меню Microsoft
Access выберите пункт «Сервис», а в нем строку – «Орфография».

Рис. 4.34. В фильтр попало описание двух зданий из 195,


имеющихся в базе данных

Появится диалоговое окно. Дальше – смотрите сами. Видно, кто ви-


новат и что делать!

Рис. 4.35. Орфографическая ошибка при заполнении поля примечания

63
4.5. Создание главной кнопочной формы

Последней создаваемой формой всегда является главная кнопочная


форма (рис. 4.36), предоставляющая пользователю прямой доступ к
приложению. Имеет смысл в параметрах запуска Microsoft Access сде-
лать ссылку на эту форму.

Рис. 4.36. Главная кнопочная форма для базы данных Real Estate
Тогда после щелчка мышью по файлу Real Estate.mdb («Проводник»
или «Мой компьютер») пользователь сразу увидит приложение в работе.
Для этого выберите в главном меню Microsoft Access 2002 пункт «Сервис»,
а в открывшемся подменю – строку «Параметры запуска». Появится диало-
говое окно. Щелкните кнопку «Дополнительно», чтобы увидеть окно полно-
стью, как показано на рис. 4.37. Поле со списком «Вывод формы/страницы»
позволяет выбрать форму, которая будет выводиться на экран при откры-
тии базы данных. Задайте заголовок и значок приложения. Access позволя-
ет указать только имя файла значка, если при открытии базы данных он бу-
дет находиться в текущей папке. Например – building.ico. В противном слу-
чае необходимо задать полный путь к этому файлу. Наша главная кнопоч-
ная форма носит название Start. Она и будет запущена на выполнение
после открытия базы данных. Здесь же можно выполнить настройку
главного окна Microsoft Access при работе с базой данных. Просто по-
ставьте или снимите флажки в нужном месте. Создание главной кнопоч-
ной формы (рис. 4.36) не вызовет у вас никаких затруднений, так как
размещение в форме объектов для нас уже пройденный этап. Код VBA
события «Нажатие кнопки» для входа в форму Building имеет вид:
Private Sub Кнопка11_Click()
DoCmd.Close
DoCmd.OpenForm «Building»
End Sub

64
Рис. 4.37. Установка параметров запуска базы данных Real Estate

Кнопка с изображением здания (см. рис. 4.36) носит имя «Кнопка 11».
Первая строка – заголовок процедуры. Вторая строка – закрытие главной
кнопочной формы. Третья – запуск на выполнение формы Building (здание).

5. СОЗДАНИЕ ОТЧЕТОВ

Основная сфера применения форм – обеспечение возможности


просмотра отдельных или небольших групп связанных записей. Отче-
ты же представляют собой наилучшее средство отображения инфор-
мации из базы данных в виде печатного документа. Разработка отчета
очень похожа на разработку формы. Используется та же панель эле-
ментов, тот же список полей и окно свойств. В этом разделе мы по-
строим относительно несложный отчет, пройдя шаг за шагом всю це-
почку его создания.
«Заставим» наш программный комплекс выдавать на печать всю ин-
формацию, которая имеется в базе данных по отдельно взятой кварти-
ре: адрес, технические характеристики, ответственного квартиросъем-
щика, номер лицевого счета и список проживающих. Отчет будет запус-
каться из формы Flats (квартиры) и носить имя Document.
5.1. Построение базового запроса

При создании запроса нам понадобится информация из запроса


Flats и таблиц Street и Owners. Напомню, что запрос Flats содержит
данные по техническим характеристикам всех квартир, находящихся в
отдельном конкретном здании, которое отображается в форме Building.
Назовем базовый запрос так же, как и отчет, который будет построен на
его основе – Document.

65
1. В окне базы данных выберите значок «Запросы». Он находится в
списке «Объекты». Нажмите кнопку «Создать» на панели инструментов
окна базы данных. Появится окно «Новый запрос». Выберите пункт
«Конструктор» и нажмите кнопку «ОК».
2. Появится список таблиц и запросов базы данных. Перейдите на
третью вкладку «Таблицы и запросы». Выберите запрос Flats и нажми-
те кнопку «Добавить». Таким же образом включите в запрос таблицы
Street и Owners. Верхняя часть окна конструктора примет вид (рис. 5.1).

Рис. 5.1. Верхняя часть окна конструктора запросов после добавления таблиц

3. Параметры объединения таблицы Street и запроса Flats Access


установил сам. Объединить Flats и Owners предстоит нам.
4. Поместите указатель мыши над полем Street запроса Flats. На-
жмите левую кнопку мыши и, не отпуская ее, «перетащите» появившийся
значок поля на поле Street таблицы Owners. Проделайте аналогичную
операцию с полями House и Flat этого же запроса и таблицы (рис. 5.2).

Рис. 5.2. Конечный вид окна конструктора запросов

5. Расположите последовательно все поля, которые хотите вклю-


чить в запрос Document из таблиц Street, Owners и запроса Flats, в
первую строчку нижней части окна конструктора запросов.

66
6. В запрос Document должны попасть данные только по одной кон-
кретной квартире. Ее номер отображен в объекте Flat формы Flats. Для
этого добавим условие отбора по полю Flat: [Forms]![Flats]![Flat].
7. Установите порядок сортировки записей, попавших в запрос
Document. Они должны отображаться в документе в порядке возраста-
ния порядковых номеров проживающих. Текст запроса выглядит так:
SELECT street.NAME, street.SIGN, flats.HOUSE, flats.FLAT, flats.STOREY,
flats.ROOMS, flats.SQUAREFLAT, flats.DWELL, flats.BRANCH, flats.BALCONY,
flats.HEIGHT, flats.ACCOUNT, flats.FAMILY, flats.NAME, flats.SECOND,
owners.NUMBER, owners.FAMILY, owners.NAME, owners.SECOND,
owners.BORN, owners.STATUS,street.FIRST
FROM street INNER JOIN (flats INNER JOIN owners ON
(flats.HOUSE = owners.HOUSE) AND (flats.FLAT = owners.FLAT)
AND (flats.STREET = owners.STREET)) ON street.STREET = flats.STREET
WHERE (((flats.FLAT)=[Forms]![Flats]![Flat]))
ORDER BY owners.NUMBER.
8. Сохраните созданный запрос под именем Document. Не забудь-
те, что корректно он будет запускаться только из формы Flats (кварти-
ры), которая, в свою очередь, не может быть запущена без формы
Building (здание).
5.2. Разработка отчета в режиме конструктора

Сделайте активным окно базы данных. Выберите вкладку «Отчеты».

5.2.1. Создание заготовки отчета


Так как на данный момент мы не создали еще ни одного отчета, то
вы увидите в окне списка отчетов только два приглашения: «Создание
отчета в режиме конструкто-
ра» и «Создание отчета с по-
мощью мастера» (см. рис.
5.4).
Проигнорируйте оба этих
приглашения и сделайте щел-
чок левой кнопкой мыши по
пиктограмме «Создать».
Появится диалоговое окно «Но-
вый отчет» (рис. 5.3). Выберите
пункт «Конструктор» в верхнем
окне и запрос Document в поле
с раскрывающимся списком.
При завершении этого этапа
нажмите кнопку «ОК».
Заготовка отчета содержит
Рис. 5.3. Создание нового отчета три раздела: верхний и нижний

67
колонтитулы, между которыми находится область данных. Вы можете из-
менить размер любого раздела. Ширина всех разделов должна быть оди-
наковой. Линейки с сантиметровыми делениями по верхнему и левому кра-
ям отчета помогают расположить данные на странице. Если линейки отсут-
ствуют, то для их появления на экране выберите в главном меню Microsoft
Access пункт «Вид», а в открывшемся подменю строку – «Линейка». Верх-
ний и нижний колонтитулы будут напечатаны соответственно вверху и вни-
зу каждой страницы. Их можно убрать совсем с помощью пунктов меню
«Вид» и «Колонтитулы». Вы можете создать заголовок, который будет
напечатан только в начале отчета на первой странице. Для этого исполь-
зуйте пункт меню «Вид» и строку «Заголовок/примечание отчета».

Рис. 5.4. Конструктор отчетов

5.2.2. Добавление элементов в отчет Microsoft Access


Для создания отчета, показанного на рис. 5.5, выполните следующие
действия.
1. Разместите надпись в самом верху заголовка отчета и введите в
нее текст «Справка». Выделите надпись и установите шрифт Arial раз-
мером 10 пунктов. Подчеркните текст и сделайте его выделенным. Вы-
берите пункт «Формат» в главном окне Access, а затем «Размер» и
строчку «По размеру данных». Размер элемента управления будет на-
строен в соответствии с назначенным шрифтом. Выполните аналогич-
ные действия по размещению второй строки заголовка отчета «Данные
по квартире, расположенной по адресу».

68
2. «Перетащите» поля Name, Sign, House и Flat из списка полей в за-
головок отчета. Выполните форматирование. Для этого выберите нуж-
ные элементы управления, щелкая по ним левой кнопкой мыши при на-
жатой клавише <Shift>. Откройте пункт «Формат» главного окна и пункт
«Выровнять» открывшегося подменю. В появившемся окне вам будет
предложено несколько способов форматирования.

Рис. 5.5. Окончательный вид отчета Document в конструкторе отчетов

3. «Перетащите» поля Number, Family, Name, Second, Born и Status


в область данных. Удалите подписи, которые к ним сгенерирует Access,
и выполните форматирование.
Закончив работу, не щелкайте по кнопке «Предварительный про-
смотр». В автономном виде этот отчет не запустится по изложенным ра-
нее причинам. Добавьте кнопку «Документ» в форму Flats и запускайте
отчет из этой формы. Текст процедуры VBA, сгенерированный мастером
кнопок, для запуска этого отчета имеет вид
Private Sub Кнопка40_Click()
On Error GoTo Err_Кнопка40_Click
Dim stDocName As String
stDocName = «Document»
DoCmd.OpenReport stDocName, acPreview
Exit_Кнопка40_Click:
Exit Sub
Err_Кнопка40_Click:
MsgBox Err.Description
Resume Exit_Кнопка40_Click
End Sub

69
Имя кнопки – «Кнопка 40». Имя отчета – «Document». Отчет запус-
кается в режиме предварительного просмотра – acPreview. В случае
возникновения ошибки при выполнении отчета, о нем сообщит Microsoft
Access, а не VBA – MsgBox Err.Description.

5.2.3. Вывод отчета Microsoft Access на печать


При предварительном просмотре отчета в режиме целой страницы
Microsoft Access выводит его так, как сделал бы принтер. По умолчанию
стандартные поля составляют один дюйм со всех сторон. У нас имеется
возможность изменить параметры печати отчета. Для этого:
1. Откройте отчет в режиме конструктора.
2. Выберите в главном меню Microsoft Access пункт «Файл», а в от-
крывшемся подменю – строку
«Параметры страницы».
3. Откроется диалоговое окно
(рис. 5.6). Для того, чтобы свести к
минимуму расход бумаги при печа-
ти рабочих отчетов, установите
флажок «Печатать только дан-
ные». Верхний и нижний колонти-
тулы, а также заголовок отчета и
примечание отчета печататься не
будут.
4. Задайте в окне «Парамет-
ры страницы» поля страницы, вы-
водимой на принтер. Для того Рис. 5.6 Окно «Параметры страницы»
чтобы распечатать отчет, нахо-
дясь в режиме предварительного просмотра (рис. 5.7), сделайте щелчок
левой кнопкой мыши по пиктограмме , находящейся на панели инст-
рументов главного окна Access. Компьютер незамедлительно напечата-
ет отчет, ис-
пользуя теку-
щие установки
принтера. Ес-
ли вы хотите
изменить те-
кущие уста-
новки принте-
ра или вы-
брать другой
принтер, на-
пример сете-
вой, то выбе-
рите пункт
«Файл» глав- Рис. 5.7. Вид отчета в режиме предварительного просмотра

70
ного окна Microsoft Access, а в нем строку «Печать». На экране появится
стандартное окно «Печать» вашей операционной системы. Можете рас-
печатать отчет целиком или только необходимые страницы. Также име-
ется возможность указать количество экземпляров отчета и отправить
отчет в файл для последующей распечатки.
Справка, полученная в результате работы Microsoft Access, пред-
ставляет собой официальный документ. Инспектору остается только по-
ставить на нем подпись и печать. Однако в таком виде адрес здания в
ней всегда будет начинаться с признака, написанного с большой буквы
(Улица, Переулок, Проспект и т.д.), а это не совсем то, что нам нужно!
Ведь в качестве признака может фигурировать слово, стоящее в адресе
на втором месте и начинаться с маленькой буквы (шоссе, проезд, буль-
вар и т.д.). Об этом уже шла речь в табл. 2.1. и все необходимые атри-
буты для правильной записи адреса нами уже предусмотрены. Вернем-
ся к нашему отчету, и внесем в него необходимые изменения (рис. 5.8).

Рис. 5.8. Работа с адресом здания в справке

Удалим поля и надписи (street.NAME, дом, HOUSE, кв., FLAT). Для


этого надо сделать щелчок мышью по объекту и нажать на клавиатуре

71
клавишу Delete. Поле SIGN переименуем в ADDRESS, увеличив его в
размерах и отцентрировав. Выделите поле мышью, и клавишами кла-
виатуры с изображением стрелок при нажатой клавише <Shift> добей-
тесь требуемых результатов. В окне свойств напротив надписи “Имя”
поставьте ADDRESS. В конструкторе отчета в поле ADDRESS появится
надпись “Свободный”. В окне свойств напротив надписи “Выравнивание
текста” в раскрывающемся поле со списком найдем значение “по цен-
тру”. Сделаем поле ADDRESS вычисляемым, включив в состав выраже-
ния необходимые поля и надписи в требуемом порядке. Для этого в окне
свойств найдем надпись “Данные” и щелчком по кнопке запустим по-
строитель выражений (рис. 5.9).

Рис. 5.9. Начало работы с построителем выражений

Приведем общие сведения о построителе выражений.


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

72
нем поле. В правом поле будут выведены все операторы выбранного
типа.
Элементы выражения. В нижней части окна построителя находят-
ся три поля.
В левом поле выводятся папки, содержащие таблицы, запросы,
формы, объекты базы данных, встроенные и определенные пользовате-
лем функции, константы, операторы и общие выражения.
В среднем поле задаются определенные элементы или типы элемен-
тов для папки, заданной в левом поле. Например, если выбрать в левом
поле Встроенные функции, то в среднем поле появится список всех ти-
пов функций Microsoft Access.
В правом поле выводится список значений (если они существуют)
для элементов, заданных в левом и среднем полях. Например, если вы-
брать в левом поле Встроенные функции и тип функции в среднем, то в
правом поле будет выведен список всех встроенных функций выбранно-
го типа.
Примечание. При вставке идентификатора в выражение построитель
вставляет только те его части, которые требуются в текущем контексте.
Например, при запуске построителя выражений из окна свойств формы
«Building» и вставке идентификатора для свойства Вывод на экран (Visi-
ble) будет вставлено только имя свойства Visible. При использовании
данного выражения вне контекста формы необходимо включать полный
идентификатор: Forms![Building].Visible
Выберите мышью кнопку и сделайте по ней щелчок. Выражение,
создаваемое при помощи построителя, как правило, начинается со знака
присваивания.
Далее используем встроенную функцию:

IIF(expr; truepart; falsepart),

которая в зависимости от значения логического выражения “expr” на-


значит в нашем случае значением поля ADDRESS либо первую цепочку
(название + признак + дом + квартира), либо вторую (признак + название
+ дом + квартира). Критерием выбора цепочки адреса является поле
таблицы улиц FIRST (табл.2.1).
Хочу обратить Ваше внимание на то, что в таблицах Microsoft Access
логическое поле имеет тип “числовой”, значению True соответствует
число –1 (минус один), а значению False соответствует число 0 (ноль).
В таблицах же Microsoft SQL Server логическое поле имеет тип Bit (True
– один, False – ноль). Чтобы избежать проблем при переводе приложе-
ния Microsoft Access на платформу SQL Server, советую Вам не привя-
зываться к конкретным значениям полей таблиц, а использовать кон-
станты True и False, которые построитель выражений Microsoft Access

73
сразу же переведет на русский язык (Истина и Ложь), если Вы рабо-
таете с русскоязычной версией Microsoft Access XP (рис. 5.10).

Рис. 5.10. Выражение для вычисляемого поля готово

Для окончательного построения выражения нам потребуется тексто-


вая функция Trim(stringexpr), убирающая концевые пробелы, и функция
преобразования Str(number), преобразующая число в символы.
Позволю себе привести законченный вид выражения для вычисляе-
мого поля ADDRESS.

=IIF([First]=Истина;
Trim([street.Name]+' '+[Sign]+', дом '+(Trim([House]))+', кв.'+Trim(Str([Flat])));
Trim([Sign]+' '+[street.Name])+', дом '+(Trim([House]))+', кв.'+Trim(Str([Flat])))

На рис. 5.11 показана работа сконструированного нами выражения

Рис. 5.11. Запись адреса по правилам русского языка

Обратите внимание на правила записи выражений. Имена полей


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

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

5.2.4. Операторы Microsoft Access для построения выражений


На этот раз рассмотрим процесс создания выражения без помощи
построителя. Введите комбинацию идентификаторов, операторов и зна-
чений в элемент управления, в котором требуется получить результат.
Например, следующее выражение увеличивает значение элемента
управления Cost (стоимость здания) формы Building на 20 процентов:
= [Forms]![Building]![Cost] * 1,2
Примечания. Оператор ! указывает, что следующий за ним элемент
является элементом, определяемым пользователем (элементом семей-
ства). Перед выражениями, определяющими вычисляемые элементы
управления, всегда следует помещать знак присваивания (=). Некото-
рые выражения дают логические результаты Истина или Ложь.
Арифметические операторы выполняют сложение, вычитание, умно-
жение и деление (табл. 5.1).
Таблица 5.1.
Арифметические операторы

Оператор Описание Пример


+ Складывает два операнда [Dwell]+[Branch]
Вычитает один операнд
- из другого
[SquareFlat]-[Balcony]
- (унарный) Меняет знак операнда -345
* Перемножает два операнда [Cost]*[Wear]
/ Делит один операнд на другой [Cost]/[Square]
Делит целый операнд на другой
\ нацело
[Year]\2
Возвращает остаток от
Mod [Cost] Mod 12
целочисленного деления
^ Возводит операнд в степень [Line]^2

Операторы сравнения сравнивают значения двух операндов и воз-


вращают логические значения (Истина или Ложь), соответствующие ре-
зультату сравнения (табл. 5.2).

75
Таблица 5.2.
Операторы сравнения

Оператор Описание Пример Результат


> Больше 5678>3000 Истина
>= Больше или равно 234>=2341 Ложь
< Меньше 1000<1001 Истина
<= Меньше или равно 6789<=6789 Истина
<> Не равно 567<>567 Ложь

Логические операторы используются для объединения результатов двух


или более сравнений в одно (табл. 5.3).
Таблица 5.3.
Логические операторы

Оператор Описание Примеры Результат


Логическое и Истина And Ложь Ложь
And
(Конъюнкция) Истина And Истина Истина
Логическое или Ложь Or Ложь Ложь
Or
(Дизъюнкция) Истина Or Ложь Истина
Not Ложь Истина
Not Логическое отрицание
Not Истина Ложь

5.2.5. Стандартные функции для Microsoft Access и VBA

Функции, применяемые в выражениях, возвращают значения. В Mi-


crosoft Access и VBA имеется более 150 различных функций. Приведем
особенно часто используемые из них.
Более подробные сведения Вы можете получить из справочной сис-
темы Microsoft Access 2002 (на русском языке) и справочника Access
VBA (к сожалению – на английском в версии 10.3409.3501). Математиче-
ских функций Access (табл. 5.4) вполне достаточно для большинства
инженерных приложений.
Таблица 5.4.
Математические функции

№ Функция Описание функции Пример Значение


Возвращает абсолютную величину
1 Abs() Abs(-345.6) 345.6
числа
Возвращает арктангенс числа
2 Atn() Atn(1) 0.7853982
в радианах
3 Cos() Возвращает косинус угла, в радианах Cos(1) 0.5403023

76
№ Функция Описание функции Пример Значение
4 Exp() Возвращает значение экспоненты Exp(1) 2.7182818
Округляет число до ближайшего ми- Int(-15.2) -16
5 Int()
нимального целого (см. примеры) Int(13.6) 13
Возвращает натуральный логарифм
6 Log() Log(10) 2.302585
числа
0.2895625
Возвращает случайное число в диа-
7 Rnd() Rnd() (произ-
пазоне от 0 до 1
вольное)
Возвращает 1 для положительного Sgn(-10.1) -1
8 Sgn() числа, 0 для нулевого, -1 для отрица- Sgn(0) 0
тельного числа Sgn(10.1) 1
Возвращает синус угла, выраженного
9 Sin() Sin(1) 0.8414710
в радианах
10 Sqr() Возвращает квадратный корень Sqr(2) 1.4142136

Другие, полезные для начинающего разработчика функции, приведе-


ны в таблице 5.5.
Таблица 5.5.
Другие функции

№ Функция Описание функции Пример Значение


Возвращает текущую системную
1 Date() Date() 12.03.2004
дату
2 Day() Возвращает день из значения даты Day(Date()) 12
Возвращает месяц из
3 Month() Month(Date)) 3
значения даты
Возвращает дату и время из сис- 12.03.2004
4 Now() Now()
темных часов компьютера 11:42:28
Возвращает время из системных
5 Time() Time() 11:45:40
часов компьютера
6 Year() Возвращает год из значения даты Year(Date()) 2004
Возвращает как текст знак, соответ- % (про-
7 Chr() Chr(37)
ствующий коду ANSI цент)
8 Lcase() Переводит текст в нижний регистр Lcase("aSD") asd
Переводит текст в верхний
9 Ucase() Lcase("aSD") ASD
регистр
Возвращает подстроку из строки.
10 Mid() Необходимо указать с какого сим- Mid("abcdef",2,3) bcd
вола и сколько символов.
11 Rtrim() Удаляет пробелы после текста Rtrim(“abcd ”) abcd
12 Ltrim() Удаляет пробелы перед текстом Ltrim(“ abcd”) abcd
Удаляет пробелы до текста
13 Trim() Trim(“ abcd “) abcd
и после него
14 Str() Преобразует число в текст Str(1234.56) 1234.56
15 Val() Преобразует текст в число Val(“1234.56”) 1234.56

77
6. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ

Microsoft Access 2002 – это уже шестая версия продукта, впервые


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

6.1. Сжатие базы данных

Вы удалили форму или таблицу из базы данных Microsoft Access. Об-


ратите внимание, размер файла этой базы данных остался прежним! При
удалении записи из таблицы место, которое она занимала в базе, также
автоматически не освобождается и не используется для хранения новой
записи. Более того, после таких удалений база данных хранится в дезор-
ганизованном виде, хотя и остается полностью работоспособной. Чтобы
уменьшить размер файла базы данных и увеличить ее быстродействие,
воспользуйтесь служебной программой. Средства сжатия и восстановле-
ния в Access 2002 усовершенствованы и теперь интегрированы в единый
процесс, что делает их более защищенными и эффективными. Для запус-
ка служебной программы выберите в главном меню Microsoft Access пункт
«Сервис», а в открывшемся подменю – пункт «Служебные программы».
В открывшемся подменю выберите пункт – «Сжать и восстановить базу дан-
ных». После окончания процесса сжатия активизируется окно базы данных.
Сжатая база данных хранится под тем же именем, что и перед сжатием.

6.2. Преобразование базы данных к предыдущей версии

Эта функция появилась впервые только в Microsoft Access 2000. Бо-


лее ранние версии не позволяли выполнять такие преобразования, а
разработчикам настоятельно рекомендовалось иметь в своем распоря-
жении несколько версий этого продукта и вести разработку на той, кото-
рая есть у заказчика. Процесс преобразования файла базы данных Mi-
crosoft Access 2002 к виду Microsoft Access 2000 предельно прост.
Выберите в главном меню Microsoft Access пункт «Сервис», а в от-
крывшемся подменю – пункт «Служебные программы». В них пункт –
«Преобразовать базу данных». В самом начале процесса преобразова-
ния Access выведет диалоговое окно, в котором надо указать название

78
файла базы данных, и папку, в которую будет помещена приведенная к
формату Access 2000 база.

6.3. Анализ быстродействия базы данных

Для оптимизации быстродействия базы данных Microsoft Access 2002


применяется специальная служебная программа – анализатор быстро-
действия.
1. Откройте базу данных.
2. Выберите в главном меню пункт «Сервис» команду «Анализ» и
подкоманду «Быстродействие». Появится диалоговое окно (рис. 6.1).

Рис. 6.1. Окно для анализа быстродействия базы данных

3. Выберите вкладку, соответствующую типу объекта базы данных.

Анализатор быстродействия выдает три типа рекомендаций по опти-


мизации производительности: советы, предложения и мысли. При выде-
лении элемента в списке Результаты анализа, сведения о предлагаемом
решении выводятся в области Примечания, расположенной под списком.
Операции оптимизации, как правило, подразумевают определенные ком-
промиссы, которые следует иметь в виду, приступая к оптимизации. Для
получения дополнительных сведений о рекомендации, выберите ее в спи-
ске и просмотрите информацию в области Примечания. Microsoft Access
2002 может автоматически выполнять рекомендации типа «совет» и
«предложение». Рекомендации типа «мысль» выполняются вручную.

6.4. Сохранение базы данных в виде MDE-файла

Если база данных содержит программы Microsoft Visual Basic, то при


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

79
но их нельзя будет просматривать или изменять, благодаря чему
уменьшится размер базы данных. Кроме того, будет оптимизировано
использование памяти, что повысит быстродействие.
Сохранение базы данных как MDE-файла делает невозможным вы-
полнение следующих действий.
• Просмотр, изменение или создание форм, отчетов или модулей в
режиме конструктора.
• Добавление, удаление или изменение ссылок на библиотеки
объектов или базы данных.
• Изменение программы с помощью свойств или методов Microsoft
Access или модели объектов VBA (MDE-файл не содержит текстов ис-
ходных программ).
• Импорт и экспорт форм, отчетов или модулей. Однако таблицы, за-
просы, страницы доступа к данным и макросы можно импортировать и
экспортировать в базы данных, не являющиеся MDE-файлами. Любые
таблицы, запросы, страницы доступа к данным или макросы в базах дан-
ных, являющихся MDE-файлами, могут быть импортированы в другую ба-
зу данных Access, но формы, отчеты или модули не импортируются.

Внимание! Обязательно сохраните копию исходной базы данных


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

Внимание! В будущих версиях Microsoft Access (Access 2003 еще


работает с базой формата 2002) открывать, преобразовывать или вы-
полнять программы в MDE-файлах Access 2002 будет невозможно. Един-
ственным способом преобразования MDE-файла Microsoft Access 2002 в
формат будущих версий будет открытие исходной базы данных Access, в
которой был создан MDE-файл, ее преобразование и последующее со-
хранение преобразованной базы данных Access в виде MDE-файла.

6.5. Анализ данных в Microsoft Excel


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

80
1. Откройте окно базы данных Real Estate.
2. Выделите объект, который следует передать в Excel. Пусть это бу-
дет запрос Area, в котором содержатся данные по зданиям Кировского
района (рис. 6.2).

Рис. 6.2. Запрос по зданиям Кировского района

3. В главном окне Access выберите пункт «Сервис».


4. В открывшемся подменю выберите пункт «Связи с Office».
5. В открывшемся окне выберите команду «Анализ в MS Excel».
6. Автоматически запустится Microsoft Excel, в котором в виде табли-
цы будут отображены данные по выбранному объекту (рис. 6.3).

Рис. 6.3. Запрос Area, переданный в Microsoft Excel 2002

81
6.6. Повышение быстродействия Microsoft Access

Соблюдение следующих правил поможет повысить производитель-


ность Microsoft Access.
• При работе с базами данных, которые не применяются другими
пользователями, устанавливайте Microsoft Access и все свои базы
данных на собственном жестком диске, а не на сетевом сервере.
• Чтобы быть единственным пользователем базы данных, откройте
ее в монопольном режиме. Для этого в диалоговом окне Откры-
тие файла базы данных нажмите стрелку рядом с кнопкой От-
крыть и выберите в списке вариант Монопольно.
• Чтобы освободить память, закройте неиспользуемые приложения.
• Увеличьте оперативную память компьютера. При работе в системе
Microsoft Windows 95 или более поздней рекомендуется 24 Мбайт
памяти –16 Мбайт плюс дополнительные 8 Мбайт памяти для
Microsoft Access. При работе в системе Windows NT версии 4.0 или
более поздней рекомендуется 40 Мбайт памяти –32 Мбайт плюс
дополнительные 8 Мбайт для Microsoft Access.
• Регулярно удаляйте ненужные файлы, выполняйте сжатие базы
данных, а после этого проводите дефрагментацию диска с помо-
щью служебной программы дефрагментации. Для запуска этой
программы нажмите кнопку Пуск в Windows, последовательно вы-
берите пункты Программы, Стандартные, Служебные и вы-
полните команду Дефрагментация диска.
• Настройте параметры виртуальной памяти вашего компьютера.
Если имеется на вашей машине еще один диск, более быстрый, то
выделите место под виртуальную память на нем. Для изменения
параметров виртуальной памяти Windows дважды щелкните значок
Система на панели управления, выберите вкладку Быстродей-
ствие и нажмите кнопку Виртуальная память.
• Замените рисунок или фоновый узор, выбранный для рабочего
стола Windows, на однородный экран.
• При использовании заставки как энергосберегающей функции мо-
нитора используйте пустой экран или не используйте заставку во-
обще.
• Не используйте программы сжатия диска или переместите базы
данных на несжатый диск.
Если с Вашим программным обеспечением работает несколько ком-
пьютеров, соединенных в локальную вычислительную сеть, то большин-
ство вышеизложенных рекомендаций не даст желаемого результата.
Настало время перехода на платформу клиент-сервер. Если это реше-
ние принято – следующие главы помогут Вам в этом.

82
7. ПЕРЕВОД ПРИЛОЖЕНИЯ НА ПЛАТФОРМУ КЛИЕНТ-СЕРВЕР

7.1. Выбор редакции SQL Server

SQL Server 2000 выпущен фирмой Microsoft в нескольких вариантах -


редакциях. Все они отличаются масштабами и предназначены для ре-
шения определенного круга задач. Одни редакции предназначены для
работы под управлением определенных операционных систем. Другие
должны быть установлены на многопроцессорных серверах. Третьи
предназначены только для разработчиков приложений. Всего редакций
– семь. В любом случае Вашей организации необходимо приобрести два
варианта SQL Server – для разработки и тестирования (Developer
Edition) и для эксплуатации в информационной системе небольшого
предприятия (Standard Edition). Покупка только одной редакции (Stan-
dard Edition) значительно осложнит модернизацию и тестирование за-
пущенного в эксплуатацию приложения, хотя на этапе первоначальной
разработки можно обойтись и одним приобретением. Однако следует
помнить, что SQL Server Standard Edition не работает под управлением
операционной системы Windows 2000 Professional, и в этом случае Вам
придется вести разработку и модернизацию на главном сервере пред-
приятия с операционной системой Windows 2000 Server, что крайне не-
желательно, или задействовать для этих целей два компьютера: сервер
и рабочую станцию.

7.2. Генерация SQL Server 2000 Developer Edition

Инсталляционный комплект поставляется на отдельном компакт-


диске. Установите его в дисковод CD-ROM. Генерация начнется автома-
тически (рис. 7.1).

Рис. 7.1. Начало установки SQL Server 2000 Developer Edition

83
Если автоматического запуска не произошло, то мастер установки
(Installation Wizard) можно запустить с помощью файла setupsql.exe, ко-
торый находится в папке X86\SETUP. Первое окно мастера установки
(рис. 7.2) является приветствием и приглашает к началу установки.

Рис. 7.2. Запуск мастера установки SQL Server 2000 Developer Edition

Теперь необходимо определиться с сервером (рис. 7.3) для Installa-


tion Wizard.

Рис. 7.3. Выбор компьютера для установки

Нам предстоит установка версии SQL Server для разработчика. Она


как правило устанавливается на Ваш личный компьютер, поэтому выби-
раем пункт Local Computer. Неяркая надпись в центре окна – MASTER –
имя этого компьютера. Оно выбрано мной случайно при установке опе-
рационной системы Microsoft Windows 2000 professional и не имеет ниче-

84
го общего с одноименной системной базой SQL Server. Изменить имя
компьютера в данном окне нельзя.
При выборе пункта Remote Computer будет выполнена удаленная
установка, а поле в центре окна станет доступным. Используя кнопку
Browse, выберите имя удаленного компьютера, на который и будет вы-
полнена установка SQL Server. Переключатель Virtual Server в нашем
случае недоступен, так как мастер установки мы запустили на обычном
компьютере, а виртуальный сервер можно установить только на кла-
стерную систему, включающую до четырех 32-процессорных серверов.
Третье окно мастера (рис. 7.4) служит для выбора режима установки.

Рис. 7.4. Выбор режима установки

Мы создаем на локальном компьютере новую инсталляцию SQL


Server, поэтому переключатель необходимо установить в положение
Create a new instance of SQL Server, or install Client Tools. После на-
жатия кнопки Next появится окно User Information (рис. 7.5).

Рис. 7.5. Занесение имени пользователя, выполняющего установку

85
Оно предназначено для ввода сведений о владельце SQL Server и
содержит информацию о пользователе, выполнившем установку и об
организации, купившей данный программный продукт.
Следующий этап установки – лицензионное соглашение (рис. 7.6),
содержащее условия эксплуатации и ответственность пользователя в
случае их нарушения.

Рис. 7.6. Окно Software License Agreement мастера установки

Рис. 7.7. Окно Installation Definition мастера установки

Выбор компонентов для установки необходимо сделать в окне Instal-


lation Definition (рис. 7.7). Первый пункт Client Tools Only позволяет мас-
теру установить только средства администрирования: Enterprise Man-

86
ager, Performance Monitor, Query Analyzer и электронную документацию
Book Online. Сам SQL Server не устанавливается.
Выбор второго пункта Server and Client Tools предписывает мастеру
установки помимо инструментов администрирования и электронной до-
кументации выполнить установку непосредственно SQL Server. Это оз-
начает, что на компьютере появятся службы MSSQLServer, SQLServer-
Agent, MS DTC и Microsoft Search.
Третий пункт Connectivity Only позволяет установить только сете-
вые библиотеки. В результате у Вас появится возможность устанавли-
вать с Вашего компьютера соединение с сервером SQL Server. Любой из
первых двух режимов включает в себя и этот третий. Мы устанавливаем
новую копию SQL Server, поэтому установите переключатель в положе-
ние Server and Client Tools. После нажатия кнопки Next появится оче-
редное окно мастера установки (рис. 7.8), которое используется для ука-
зания имени устанавливаемой копии SQL Server.

Рис. 7.8. Ввод имени устанавливаемой копии SQL Server

На одном компьютере можно установить несколько копий MS SQL


Server, причем каждый сервер будет работать независимо от других.
Первый экземпляр может не иметь имени. В этом случае поставьте
флажок в поле Default. Остальные копии должны быть именованными.
Обратите внимание на то, что если на Вашем компьютере уже установ-
лена копия по умолчанию, поле Default будет недоступно, а поле In-
stance name - наоборот.
После выбора имени устанавливаемой копии или назначения его по
умолчанию мастер установки предложит Вам определиться с типом ус-
тановки, а также назначить папки для файлов самого сервера и файлов
баз данных (рис. 7.9). В верхней части окна Вы найдете три переключа-
теля. В большинстве случаев вполне достаточно выбрать Typical. Это
обычная установка, при которой все устанавливаемые компоненты на-

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

Рис. 7.9. Окно Setup Type мастера установки

В данном случае размер свободного места на жестком диске почти


на два порядка превышает требуемый. Переходим к выбору устанавли-
ваемых компонентов (рис. 7.10). Обратите внимание на то, что размер
требуемого дискового пространства на рисунках 7.9 и 7.10 (до и после
дополнительного выбора компонентов) несколько отличается.

Рис. 7.10. Окно Select Components мастера установки

88
Мне пришлось добавить некоторые из отсутствующих компонентов в
стандартной (Typical) установке. Переходим к окну с учетными записями
служб (рис. 7.11). С его помощью после установки можно будет управ-
лять параметрами запуска служб MSSQLServer и SQLServerAgent.

Рис. 7.11. Окно Service Account мастера установки

Это окно появится только при выполнении установки SQL Server на


компьютер с операционной системой семейств Windows NT/2000/XP.
На рисунке 7.11 отмечены параметры, предлагаемые мастером уста-
новки по умолчанию. Положение переключателя, расположенного в
верхней части окна, Use the same account for each service. Auto start
SQL Server Service (использовать одну учетную запись для всех служб
и запускать службы автоматически при старте SQL Server) означает за-
пуск служб MSSQLServer и SQLServerAgent под одной и той же учетной
записью. Второе положение переключателя Customize the setting for
each service (выборочная настройка параметров каждой службы) дела-
ет доступной группу переключателей Services (службы). Набор свойств
каждой службы отображается в области Service Setting (настройка
службы). При выборе первого пункта Use the Local System account вы-
бранная служба будет запускаться под локальной учетной записью сис-
темы. Второй пункт Use the Domain User account обязывает выполнить
запуск соответствующей службы под учетной записью локального поль-
зователя. При выборе этого пункта становятся доступными дополни-
тельные поля, с помощью которых и указывается учетная запись. Вы –
разработчик, следовательно и администратор своего компьютера, по-
этому Username – Администратор, а Domain – Master (сетевое имя Ва-
шего компьютера). Поле Auto Start Service будет доступным только при
раздельной конфигурации служб MSSQLServer и SQLServerAgent.
Флaжок в этом поле предписывает выполнить автоматический запуск
каждой службы при загрузке операционной системы.

89
Нажмите на кнопку Next, и перед Вами появится очередное окно
мастера установки SQL Server (рис. 7.12).

Рис. 7.12. Окно Authentication Mode мастера установки

В верхней части окна находится переключатель, с помощью которого


выбирается режим работы подсистемы аутентификации. Первое поло-
жение переключателя Windows Authentication mode позволит пользо-
вателю получить доступ к SQL Server только средствами операционной
системы. При втором положении Mixed Mode сервер будет работать в
смешанном режиме аутентификации. Будут использованы как средства
Windows, так и средства самого SQL Server. В этом случае необходимо
ввести пароль учетной записи sa (администратора SQL Server).
Следующее окно мастера установки (рис. 7.13) дает возможность
выбрать сопоставление, которое будет использоваться для SQL Server.
Поставьте флажок в поле Case sensitive. Строчные и прописные буквы
будут считаться разными. Остальные параметры не трогайте.

Рис. 7.13. Окно Collation Settings мастера установки

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

Рис. 7.14. Окно Network Libraries мастера установки

Если Вы будете вести отладку своего приложения на одном компью-


тере, установив на нем Microsoft Access (клиент) и Microsoft SQL Server
Developer Edition (сервер), то оставьте данные этого окна без измене-
ния. Указанных библиотек вполне достаточно для отладки Вашего при-
ложения. Если в дальнейшей работе понадобятся дополнительные биб-
лиотеки, то их можно установить позднее, используя для этого утилиту
сетевого конфигурирования сервера – Network Utility (рис. 7.15). Вызвать
утилиту можно из главного меню операционной системы, выбрав пункты
Пуск – Программы – Microsoft SQL Server – Server Network Utility, или за-
пустить на выполнение файл svrnetcn.exe из папки TOOLS\BIN устано-
вочной папки SQL Server.

Рис. 7.15. Окно утилиты SQL Server Network Utility

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

Рис. 7.16. Окно Start Copying Files мастера установки

Если Вы поняли, что какой-либо из указанных ранее параметров Вам


не подходит, нажмите кнопку Back и внесите необходимые изменения.
Вернуться можно к любому окну, начиная с рисунка 7.3. После нажатия
кнопки Next внести изменения будет невозможно.
Последнее окно (рис. 7.17) извещает об успешной установке SQL
Server на Ваш компьютер. Нажмите кнопку Finish и выполните переза-
грузку операционной системы. В главном меню появятся дополнитель-
ные пункты, а в правой части панели задач – значок запущенного Mi-
crosoft SQL Server.

Рис. 7.17. Окно Setup Complete мастера установки

92
7.3. Преобразование базы данных Access в базу SQL Server

Ваша база данных после запуска в постоянную эксплуатацию значи-


тельно выросла в объеме и занимает около 80 Mбайт, с ней работает
полтора десятка пользователей. Замедление работы Вашего приложе-
ния Microsoft Access очень заметно, так как все его объекты, включая
таблицы, индексные файлы, формы, запросы, отчеты, макросы и моду-
ли хранятся в одном файле, который расположен на сервере. Значи-
тельно выросла нагрузка и на сетевое оборудование. Настала очередь
следующего шага в развитии Вашего приложения. Это переход на
платформу клиент-сервер с целью оптимизации производительности,
масштабируемости, безопасности, надежности, способности к восста-
новлению и доступности базы данных и приложения. Microsoft SQL
Server с самого начала разрабатывался в архитектуре клиент-сервер,
где данные и индексы расположены на одном компьютере, доступ к ко-
торому осуществляется через сеть с многих клиентских компьютеров.
Таким образом, обработка данных выполняется там, где она выполняет-
ся лучше всего – на сервере, что значительно снижает нагрузку на сеть.
После выполнения запросов результаты отправляются на клиентский
компьютер. Возможности SQL Server очень велики. Ваше предприятие
теперь на многие годы может забыть о нехватке вычислительной мощ-
ности своей локальной вычислительной сети.
Хочу предложить Вашему вниманию самых простой способ перевода
базы данных Access в базу данных SQL Server с использованием масте-
ра Access. Мастер преобразования в формат SQL Server, входящий в
поставку Microsoft Access 2002, способен преобразовать базу данных
Access 2002 в новую или существующую базу данных Microsoft SQL
Server только версии 2000 и ниже. Если у Вас на компьютере установлен
Access 2000, то при помощи этого мастера возможна конвертация толь-
ко в формат SQL Server 7.0. Это связано с тем, что линейка продуктов
Microsoft Office, в которую входит Access, всегда опережает другие раз-
работки корпорации Microsoft.
Перед преобразованием базы данных Access в формат SQL Server
рекомендуется выполнить следующие действия.
1. Создайте резервную копию базы данных, несмотря на то, что
мастер не удаляет из базы данных Access данные или объекты.
2. Убедитесь в наличии достаточного места на диске, где будет
храниться преобразованная база данных SQL Server. Мастер
работает быстрее, когда на диске много свободного простран-
ства.
3. Создайте уникальные индексы. Для переноса в SQL Server таб-
лица должна иметь уникальный индекс (первичный ключ), т.е.
находиться во второй нормальной форме. Если этого индекса

93
не существует, то успешно работающее приложение с базой
данных Аccess при работе с базой SQL Server даст сбой. Дан-
ные в такой таблице не удастся обновить.
Посмотрите внимательно на рисунок 2.1. Таблица Owners не имеет
первичного ключа. Ни одно поле этой таблицы не выделено жирным
шрифтом. Исправим ошибку, добавив составной первичный ключ street+
house+ flat+ number. Откройте таблицу Owners в режиме конструктора.
Для этого в окне базы данных Real Estate выделите таблицу Owners и
щелкните мышью по кнопке «Конструктор» на панели инструментов окна
базы данных. Она расположена рядом с пиктограммой . Выделите по-
ле Street, нажав на кнопку выделения поля в левой части бланка струк-
туры таблицы . Строчка, относящаяся к этому полю, будет выделена
черным цветом. Нажмите клавишу <Ctrl> и, удерживая ее, щелкните по-
следовательно кнопки выделения напротив полей House, Flat и Number.
Черных строчек станет четыре (рис. 7.18).

Рис. 7.18. Исправление ошибки


Сделайте щелчок мышью по пиктограмме создания ключевого
поля на панели инструментов главного окна Access 2002. Стилизован-
ное изображение ключа появится напротив всех четырех выбранных по-
лей. Имейте в виду: ключиков четыре, а первичный ключ таблицы – один
– составной. Давайте посмотрим, что получилось с индексированием
нашей таблицы. Сделайте щелчок по пиктограмме индексов. Откро-
ется окно «Индексы: owners». Смотрите. Комментарии излишни!
Перед запуском мастера преобразования в формат SQL Server не
забудьте присвоить себе необходимые разрешения на доступ к базе Mi-
crosoft Access. Также необходимо иметь соответствующие разрешения
на доступ к базе Microsoft SQL Server. Для построения новой базы дан-
ных необходимо разрешение Create Database, а также разрешение Se-

94
lect на доступ к системным таблицам в главной базе данных. Лучше все-
го для этих целей знать пароль системного администратора sa. Обрати-
те внимание на то, что для работы мастера не требуется использование
ODBC для подключения к Microsoft SQL Server. Его очередь может на-
ступить позже, когда переведенная в SQL Server база данных по Ваше-
му желанию начнет работать с другим клиентом (например, Visual Fox-
Pro или Delphi). Напомню, что ODBC (Open Database Connectivity, соеди-
нение по открытым базам) – это такая технология, которая позволяет
приложениям обмениваться данными, несмотря на различия в приме-
няемых системах управления базами данных. Если Вы останетесь на
позициях Access-SQL Server, то ODBC совсем не понадобится.

Рис. 7.19. Исходные данные для запуска мастера преобразования

Рис. 7.20.Запуск мастера преобразования в формат SQL Server

95
Все условия, необходимые для запуска мастера преобразования вы-
полнены. Запустим сам процесс.
MS SQL Server должен быть в состоянии Running. В окне Microsoft
Access должна быть открыта база Real Estate, содержащая в нашем
случае семь таблиц (рис. 7.19). Остальные действия легко понять из ри-
сунка 7.20.
На первом шаге (рис. 7.21) мастер предлагает воспользоваться су-
ществующей базой данных SQL Server или создать новую. После уста-
новки SQL Server мы не создавали никаких баз данных на этом сервере,
поэтому выбираем второй пункт в этом окне.

Рис. 7.21.Первое окно мастера преобразования в формат SQL Server

Рис. 7.22. Второе окно мастера преобразования в формат SQL Server

Второе окно (рис. 7.22) предназначено для сбора сведений об SQL


Server, порядке соединения с ним и выбора названия базы данных, ко-
торая будет создана на нем. Microsoft SQL Server 2000 Developer Edition
установлен на персональном компьютере, имеющем имя Master, менять
его не следует. Если же Ваш компьютер включен в локальную сеть, в ко-
торой имеются другие серверы, и перед Вами стоит задача выполнить

96
перенос базы Microsoft Access на другой SQL Server – найдите его имя,
раскрыв при помощи мыши поле со списком, расположенное в верхней
части окна. Для входа на наш SQL Server можно воспользоваться учет-
ной записью его администратора sa, что и показано на рисунке 7.22, а
можно использовать доверительные отношения и попасть на SQL Server
под именем администратора операционной системы Вашего компьюте-
ра. Для этого поставьте флажок в поле Доверительное соединение. В
этом случае поля Код входа и Пароль станут недоступными. Этот вход
мы обеспечили себе при генерации SQL Server. Отсылаю Вас к рисунку
7.11, на котором показано окно Service Account мастера установки сер-
вера. Имя новой базы данных мастер преобразования сформирует сам,
добавив окончание SQL к имени базы данных Microsoft Access – real es-
tate. Сформированное имя (real estateSQL) Вы можете заменить другим.

Рис. 7.23. Третье окно мастера преобразования в формат SQL Server

На третьем шаге (рис. 7.23) нам предлагается выбрать таблицы базы


данных Microsoft Access, которые будут помещены в базу данных real es-
tateSQL на сервере. В данном случае необходимо выбрать все таблицы.
Для этого сделайте щелчок мышью по кнопке . Все таблицы появят-
ся в правой части окна, а кнопка Далее станет доступной.
Переходим к четвертому шагу мастера преобразования (рис. 7.24).
Реляционная база данных включает в себя не только таблицы, которые
могут содержать условия проверки корректности данных. В ней хранятся
индексы, связи между таблицами, триггеры, сохраненные процедуры и
т.д. На очередном шаге нам предстоит определиться с объектами, кото-
рые следует конвертировать в базу SQL Server. Поставьте флажки в
полях индексы, правила проверки на значения, значения по умол-
чанию и связи таблиц. Отметьте кнопку DRI. А поле создать
только структуру таблицы и не преобразовывать данные ос-
тавьте пустым. Добавлять поля штампа времени в таблицы также не
следует. Для этого выберите в поле со списком значение нет, никогда.

97
Несколько слов об использовании кнопки DRI (Declarative Referential
Integrity— декларативная целостность данных)
Если при выполнении преобразования в формат SQL Server 2000
выбран параметр DRI для предварительного преобразования таблиц,
декларативная целостность данных предотвращает замену ранее пре-
образованных таблиц. В случае необходимости можно сбросить (уда-
лить) целую преобразованную базу данных SQL Server с помощью SQL
Server Enterprise Manager и снова преобразовать базу данных Access.
Если требуется повторно преобразовать только некоторые таблицы, не-
обходимо сначала сбросить эти таблицы и все другие таблицы, с кото-
рыми они связаны, начиная с таблицы на стороне «многие» в отношении
«один - ко многим» (таблица, на первичный ключ которой нет ссылок из
другой таблицы), а затем повторно преобразовать весь набор таблиц.
Мастер преобразования в формат SQL Server может установить отно-
шения только между связанными таблицами, преобразованными в одно
и то же время, но не может установить отношения между этими табли-
цами и таблицами, уже существовавшими на сервере.

Рис. 7.24. Четвертое окно мастера преобразования в формат SQL Server

Одно из самых сложных – пятое окно (рис.7.25). Сразу нельзя дога-


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

98
3. Преобразовать только данные из формата базы данных Access
в формат базы данных SQL Server. Клиентскую часть в этом
случае придется писать заново, возможно, используя другие
более серьезные программные средства, хотя можно оставить
и Access. Не забывайте известную истину о том, что скупой
платит дважды. На мой взгляд, это самый правильный выбор
для дальнейшего развития приложения, которое переросло са-
мо себя. Да и пользователь, выросший на этом приложении,
наверняка потребует его коренной переделки.

Рис. 7.25. Пятое окно мастера преобразования в формат SQL Server

Рассмотрим все способы преобразования более подробно.

7.3.1 Создание нового приложения клиент-сервер

При выборе параметра создать новое приложение Access “кли-


ент-сервер” мастер преобразования в формат SQL Server создает но-
вый проект Microsoft Access (рис. 7.26). Выводит приглашение указать
его имя (по умолчанию используется имя текущей базы данных Access),
добавляет суффикс «CS», а затем сохраняет его в той же папке, где
расположена существующая база данных Access. Проект Microsoft Ac-
cess соединяется с базой данных Microsoft SQL Server с помощью архи-
тектуры компонентов OLE DB. Проект не содержит никаких данных или
объектов определения данных: таблиц, представлений, триггеров, со-
храненных процедур и т.д. Эти объекты сохраняются в базе данных на
SQL сервере. Проект включает в себя только формы, отчеты, макросы,
модули и страницы доступа к данным. Объекты базы данных из форма-
та базы данных Access в формат проекта Access преобразуются по сле-
дующим правилам.

99
Рис. 7.26. Понятие проекта Microsoft Assess

Запросы. Мастер преобразования в формат SQL Server изменяет


запросы, преобразуя их в представления или сохраненные процедуры, и
преобразуя синтаксис языка SQL для Access в синтаксис языка SQL для
SQL Server. Запросы на выборку преобразуются в представления. За-
просы с сортировкой преобразуются в комбинацию представлений и со-
храненных процедур, что делает возможным вложение и сортировку
(представления могут быть вложенными, но не могут содержать пред-
ложения ORDER BY; сохраненные процедуры могут содержать предло-
жения ORDER BY, но не могут быть вложенными). Запросы с парамет-
рами, запросы, зависящие от запросов с параметров, а также запросы
на изменение преобразуются в сохраненные процедуры. Может потре-
боваться преобразование вручную запросов, которые не преобразуются
мастером (например, запросы со слишком низким уровнем вложения).
Запросы к серверу SQL, управляющие запросы и запросы на объедине-
ние не преобразуются.
Формы, отчеты и элементы управления. Мастер преобразования
в формат SQL Server изменяет свойства Источник записей, Данные и
Источник строк путем изменения имен таблиц, запросов, инструкций
SQL или полей на эквивалентные имена таблиц, представлений, сохра-
ненных процедур или полей SQL Server.
Страницы доступа к данным. Мастер преобразования в формат
SQL Server изменяет подключение OLE DB и сведения о присоединении
данных из элемента управления источников данных Microsoft Office для
работы с новой базой данных SQL Server, а также копирует файл HTML
страницы в то же расположение, что и у проекта Access, добавляя к
имени файла HTML суффикс «_CS». Новые страницы в проекте Access
сохраняют исходные имена, так что гиперссылки между страницами SQL
Server продолжают работать.
Макросы и модули. В эти объекты базы данных мастер преобразо-
вания в формат SQL Server не вносит никаких изменений. После преоб-

100
разования с помощью мастера необходимо вручную преобразовать в
модулях программы, использующие наборы записей, из формата объек-
тов доступа к данным (DAO) в формат объектов данных ActiveX (ADO), а
также проверить коды структур всех таблиц и запросов (мастер преоб-
разования в формат SQL Server не преобразует инструкции SQL языка
описания данных (Data Definition Language).
Объекты определения данных Access преобразуются в базу данных
SQL Server по следующим правилам (рис.7.24).
Преобразование индексов. Если установлен флажок Индексы,
мастер преобразования в формат SQL Server преобразует все индексы.
Мастер преобразует первичные ключи Microsoft Access в некластеризо-
ванные, уникальные индексы Microsoft SQL Server и помечает их как
первичные ключи SQL Server. Если выбрано связывание преобразуемой
таблицы SQL Server с базой данных Access, мастер преобразования до-
бавляет также префикс «aaaaa». Microsoft Access выбирает в качестве
первичного ключа первый индекс по алфавиту из списка доступных ин-
дексов, а префикс «aaaaa» гарантирует выбор нужного индекса.
Имена всех остальных индексов остаются без изменений, кроме
имен, в которых недопустимые символы заменяются символами «_».
Уникальные и неуникальные индексы Microsoft Access становятся уни-
кальными и неуникальными индексами SQL Server. Обратите внимание
на то, что SQL Server не поддерживает индексы по возрастанию или
убыванию. Уникальный индекс связанной таблицы должен быть обнов-
ляемым в Microsoft Access. Мастер преобразования в формат SQL
Server может преобразовать существующий уникальный индекс, но не
может создать индекс, если его не существует. При необходимости
иметь возможность обновлять таблицы следует добавить уникальные
индексы в каждую таблицу Access перед преобразованием.
Правила проверки на значения. Если в этом поле установлен
флажок, мастер преобразует все условия на значения таблиц, записей и
полей, а также свойства полей Обязательное поле как триггеры обнов-
ления и вставки.
Триггер представляет собой ряд инструкций Transact-SQL, связанных
с таблицей SQL Server. Таблица может иметь три триггера, по одному на
каждую из команд, способных изменить данные в таблице: UPDATE,
INSERT и DELETE. Триггер автоматически выполняется при выполнении
команды. Мастер преобразования в формат SQL Server использует для
проверки условий на значение на уровне полей триггеры, а не правила
SQL Server, поскольку правила SQL Server не позволяют выводить на
экран специальные сообщения об ошибках.
Каждое условие на значение не обязательно должно соответство-
вать одному триггеру. Каждое условие на значение может стать частью

101
нескольких триггеров, а каждый триггер может содержать программу для
эмуляции функциональности нескольких условий на значение.
Когда для свойства поля Microsoft Access Обязательное поле уста-
новлено значение «Истина», пользователь не может вставить запись,
оставив это поле пустым (если к полю не присоединено значение по
умолчанию), или сделать это поле пустым при обновлении записи. Обя-
зательные поля преобразуются в поля SQL Server, не допускающие зна-
чений Null. Мастер преобразования в формат SQL Server также создает
фрагмент программы Transact-SQL, представляющий собой сообщение,
аналогичное тому, которое выводится в Microsoft Access, когда при до-
бавлении или обновлении записи поле оказывается пустым.
Если установлен флажок Значения по умолчанию, мастер преобра-
зует все значения по умолчанию как значения ANSI (American National
Standards Institute), а не как стандартные объекты, присоединенные к
соответствующему полю SQL Server. Значения по умолчанию в SQL
Server, в отличие от значений по умолчанию в Access, независимы от
какого-либо конкретного поля или таблицы. Создав значение по умолча-
нию, можно присоединять его к любому числу различных полей.
Преобразование связей между таблицами. Для преобразования
связей между таблицами и целостности данных можно использовать
либо триггеры обновления, вставки и удаления, либо DRI (Declarative
Referential Integrity— декларативная целостность данных). DRI действует
так же, как целостность данных Microsoft Access, определяя ограничения
по первичному ключу для базовых таблиц (сторона «один» отношения
«один-ко-многим») и ограничения по внешнему ключу для внешних таб-
лиц (как правило сторона «многие» отношения «один-ко-многим»). Од-
нако мастер не преобразует возможности каскадного обновления и уда-
ления, доступные в Microsoft Access в базу данных SQL Server. Это
предстоит сделать разработчику.
Использование триггеров. Если в связях между таблицами
Microsoft Access определены каскадные обновления или удаления, и
требуется сохранить эти возможности в преобразованных таблицах, ус-
тановите флажки Связи таблиц и Триггеры, чтобы преобразовать все
каскадные обновления или удаления как триггеры для поддержания це-
лостности данных.
Связь между таблицами не обязательно должна соответствовать од-
ному триггеру. Каждое отношение может стать частью нескольких триг-
геров, а каждый триггер может содержать программу для эмуляции
функциональности нескольких условий целостности данных. Триггеры
вставки используются в дочерних таблицах, а триггеры удаления в ро-
дительских таблицах.
Примечание. Средства разработки Microsoft SQL Server Design Tool
требуют наличия DRI для чтения схемы базы данных SQL Server. Для

102
обеспечения возможности чтения схемы базы данных средствами раз-
работки SQL Server Design Tools при поддержании целостности данных
с помощью триггеров мастер преобразования в формат SQL Server на-
лагает условия DRI на связи, но отключает проверку ограничений по
внешнему ключу.
Использование DRI. Если в базе данных не определены каскадные
обновления или удаления, либо если утрата этих возможностей в пре-
образованной базе данных не имеет значения, установите флажки Свя-
зи таблиц и DRI, чтобы использовать DRI для наложения условий цело-
стности данных. В этом случае мастер выводит предупреждение о том,
что возможности каскадного обновления и удаления будут утеряны.
Добавление в таблицы полей штампа времени. Microsoft SQL
Server использует поля timestamp для обозначения измененных записей
(без указания времени изменения) путем создания поля с уникальными
значениями и последующего обновления этого поля при каждом обнов-
лении записи. Для связанной таблицы Access использует значение поля
timestamp, чтобы перед обновлением поля определить, было ли оно из-
менено. Как правило поле timestamp обеспечивает наилучшее быстро-
действие и надежность. При отсутствии полей timestamp SQL Server
должен проверить все поля записи, чтобы определить, была ли она из-
менена, что снижает быстродействие.
Если выбрано значение по умолчанию, Да, определяется масте-
ром, мастер преобразования в формат SQL Server создает новые поля с
типом данных timestamp в таблицах SQL Server, преобразованных из
таблиц Microsoft Access, содержащих поля с типами данных «С плаваю-
щей точкой (4 байт или 8 байт)», поле Memo, или поле объекта OLE.
Также можно выбрать режим создания мастером полей timestamp
для всех преобразуемых таблиц, независимо от типов данных полей, ко-
торые в них содержатся. Для этого следует выбрать вариант Да, всегда.
Это повысит быстродействие преобразованных таблиц Access, которые
могут не содержать полей Memo, полей объектов OLE или полей с чис-
лами с плавающей точкой, но содержат поля других типов.
Примечание. Microsoft Access не выполняет в связанных таблицах
SQL Server проверку с целью определить, изменялись ли поля Memo
или поля объектов OLE, поскольку размеры этих полей могут исчислять-
ся многими мегабайтами, а сравнение может слишком перегружать сеть
и занимать слишком много времени. Поэтому, если были изменены
только текстовые поля или поля изображений, а поля timestamp отсутст-
вуют, Microsoft Access уничтожает изменения. Кроме того, значения поля
с плавающей точкой могут производить впечатление измененных при
отсутствии изменений, поэтому при отсутствии полей timestamp Microsoft
Access может определить, что запись была изменена, хотя на деле это
не так.

103
Отказ от преобразования данных. По умолчанию мастер преобра-
зует все данные в формат SQL Server. Если установлен флажок Соз-
дать только структуру таблицы и не преобразовывать данные, пре-
образуется только структура данных.
Все необходимые данные для работы мастера преобразования соб-
раны. Щелчок по кнопке Готово в шестом окне (рис. 7.27) запустит про-
цесс конвертации файла real estate.mdb в проект Microsoft Access real
estateCS.adp и базу данных Microsoft SQL Server real estateSQL (рис.
7.28).

Рис. 7.27. Шестое окно мастера преобразования в формат SQL Server

Рис. 7.28. Индикатор преобразования в формат SQL Server

Несмотря на то, что разработчики Microsoft Access старались на-


столько, насколько это возможно, наследовать в проектах Access пове-
дение объектов MDB – файлов, это им не очень-то удалось.

Рис. 7.29. Одна из ошибок преобразования в формат SQL Server

104
Очередное окно мастера преобразования (рис. 7.29) сообщает об
ошибках, возникших в процессе конвертации, а полное описание этого
процесса Microsoft Access помещает в специальный отчет (рис. 7.30).

Рис. 7.30. Отчет о преобразовании в формат SQL Server

В нашем случае отчет содержит полтора десятка страниц, которые


полностью описывают процесс конвертации и дают исчерпывающую
информацию о неудачных попытках преобразования. Отчет содержится
в файле real estate.snp и без проблем открывается в любое время при
помощи самого Microsoft Access.
Разработка приложений клиент-сервер с применением Access и SQL
Server поначалу может показаться делом достаточно простым. Переход
к этой архитектуре, по мнению тех пользователей, которые уже немного
поработали с Access, должен просто означать перемещение всех таб-
лиц на сервер и изменение связей. Но это далеко не так! Системы кли-
ент-сервер имеют абсолютно другую архитектуру, нежели приложения
на базе Microsoft Jet, поэтому перед началом перевода уже готового
Вашего приложения на платформу клиент-сервер попробуйте понять все

105
эти отличия и продумать, что нужно изменить в MDB-приложении, ста-
раясь предугадать последствия конвертации.
В доказательство вышесказанного запустим преобразованное при-
ложение на выполнение (рис. 7.31).

Рис. 7.31. Первая неудача выполненного преобразования

Запрос flats по квартирам в здании не был преобразован мастером


Microsoft Access в сохраненную процедуру SQL сервера. Поэтому вме-
сто информации по квартирам (рис. 4.24) мы получили сообщение об
ошибке. Но не все так плохо для первого раза! Форма Building работа-
ет, и работает в составе клиентской части. Посмотрите на линейку Ac-
cess. В ее составе две новые кнопки: последняя и предпоследняя.

Последняя кнопка предназначена для ограничения максимального


числа записей, которые будут переданы на рабочую станцию (рис. 7.32).

Рис. 7.32 Ограничение числа записей

Щелчок по предпоследней кнопке позволит прервать пересылку


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

106
эта кнопка светится красным цветом. После завершения операции - ста-
новится недоступной.
Оставим на некоторое время первый способ конвертации. Вернемся
к рисунку 7.25 и рассмотрим вторую возможность перевода действующе-
го приложения на платформу клиент-сервер, а доведение клиентской
части real estateCS.adp и базы данный SQL Server real estateSQL до
рабочего состояния выполним в следующей главе.

7.3.2 Связь Access-приложения с базой данных SQL Server


Сразу хочу отметить, что в этом случае мастер преобразования соз-
даст базу данных SQL Server и свяжет ее таблицы с текущей базой Ac-
cess, которая будет изменена. Этот вариант уступает первому по скоро-
сти работы и дает несколько большую нагрузку на сетевые коммуника-
ции, так как запросы Microsoft Access не превращаются в сохраненные
процедуры и представления Microsoft SQL сервера, что ведет к лишним
затратам времени на пересылку и конвертацию запросов к серверу во
время работы приложения с диалекта Access SQL (Structured Query Lan-
guage) на вариант языка запросов SQL Server, который получил назва-
ние Transact-SQL. Однако при использовании этого варианта можно от-
метить и определенные преимущества. Доводка MDB-файла до рабоче-
го состояния в этом случае минимальна, а рассматриваемая нами база
real estate вообще не требует никакого вмешательства со стороны раз-
работчика.
После выбора пункта связать таблицы SQL Server с сущест-
вующим приложением (рис. 7.25) на экране дисплея появится очеред-
ное окно (рис. 7.33).

Рис. 7.33. Данные для преобразования по второму варианту собраны

Щелкните по кнопке Готово. Через некоторое время появится инди-


катор преобразования в формат Microsoft SQL Server (рис. 7.28). Когда
шкала прогресса будет заполнена на 100 процентов, Вы увидите отчет о
работе мастера (рис. 7.30). Как и в первом случае, отчет содержится в
файле real estate.snp и без проблем открывается в любое время при
помощи самого Microsoft Access. Конвертация закончена. Откроем пре-
образованный файл real tstate.mdb (рис. 7.34).

107
Рис. 7.34. Таблицы базы данных после преобразования

Настала очередь удалить из базы Access локальные таблицы и вы-


полнить процедуру сжатия базы данных. После этих преобразований
база real estate примет вид (рис. 7.35).

Рис. 7.35. Окончательный вид базы данных

7.3.3 Создание базы SQL Server без изменения приложения


Это третий случай преобразования. Мастер создаст базу данных SQL
Server, но не станет создавать проект Microsoft Access или модернизи-
ровать существующее приложение. Для работы с этим методом выбери-
те пункт не изменять приложение (рис. 7.25). Следует заметить, что
в этом случае нам понадобится установка драйвера ODBC. В операци-
онной системе рабочей станции должны иметься драйвер ODBC для
SQL Server и администратор Microsoft ODBC. В поставку Microsoft Access
2002 входит драйвер ODBC для Microsoft SQL Server. Новые версии
ODBC появляются вместе с каждой новой версией операционной сис-
темы или любого продукта Microsoft для баз данных, поэтому приведен-
ные здесь рисунки могут слегка отличаться при работе на Вашем ком-
пьютере.
Запустим администратор Microsoft ODBC. Его легко найти через сис-
темное меню. Пуск  Настройка  Панель управления  Администри-

108
рование  Источники данных (ODBC). Откроется окно администратора
ODBC (рис. 7.36).

Рис. 7.36. Окно ODBC Data Source Administrator

Нажатие кнопки Add позволит выбрать драйвер ODBC к SQL Server,


среди имеющихся в системе (рис. 7.37).

Рис. 7.37. Окно выбора драйвера ODBC

Если несколько приложений подключаются к одной базе данных, то


лучше всего использовать один системный DSN (Data Source Name или
имя источника данных), который сохраняет информацию в системном
реестре и всегда доступен. К тому же в случае перемещения или изме-
нения параметров базы данных Вам необходимо обновить только одно
подключение.
Выберите драйвер SQL Server (рис. 7.37) и сделайте щелчок по кноп-
ке Готово.

109
Появится первое окно диалога мастера создания DSN для Microsoft
SQL Server (рис. 7.38).

Рис. 7.38. Окно Create a New Data Source to SQL Server

В этом окне нужно заполнить три поля.


1. Name. Имя источника данных, которое будет отображаться в окне
диалога при подключении к нему пользовательского приложения.
2. Description. Описание источника данных, которое через некоторое
время напомнит Вам о том, для чего это подключение было создано.
3. Server. Сетевое имя компьютера, на котором установлен SQL Server.
Щелкните по кнопке Далее, чтобы перейти во второе окно диалога
(рис. 7.39).

Рис. 7.39. Второе окно мастера создания DSN

Второе окно посвящено настройке параметров, относящихся к аутен-


тификации пользователя, который будет работать при помощи создан-
ного соединения с базой SQL Server. Установите переключатель With
Windows NT authentication using network login ID, если SQL Server на-

110
строен для работы с пользователем, вошедшим в сеть. Если SQL Server
использует свою встроенную систему защиты – установите переключа-
тель With SQL Server authentication using a login ID and password en-
tered by the user. Разобраться с этими параметрами Вам поможет рису-
нок 7.12 мастера установки самого SQL Server. В следующем окне (рис.
7.40) следует ввести название базы данных, с которой будет установле-
но соединение. Для этого предназначено поле со списком в верхней
части окна. Остальные параметры не потребуют изменений.

Рис. 7.40. Третье окно мастера создания DSN

Щелкните по кнопке Далее, и на экране появится следующее окно


мастера (рис. 7.41).

Рис. 7.41. Четвертое окно мастера создания DSN

Измените язык системных сообщений на Russian. Остальные пара-


метры можно оставить по умолчанию. После щелчка по кнопке Готово
администратор Microsoft ODBC откроет окно, содержащее исчерпываю-
щую информацию об установленном соединении (рис. 7.42).

111
Рис. 7.42. Тестирование соединения с SQL Server

На последнем шаге работы мастер выводит начальное окно, в кото-


ром присутствует созданный системный DSN (рис. 7.43).

Рис. 7.43. Завершение работы администратора Microsoft ODBC

В последние годы (2001-2004) в мире клиентских систем для баз


данных многое изменилось. Самым важным новшеством стало широкое
применение технологии OLE DB – самого предпочтительного на сего-
дняшний день метода доступа к данным. Сейчас OLE DB поддерживает-
ся подавляющим большинством производителей реляционных баз дан-
ных в качестве стандартного метода доступа. Microsoft Access 2002 по
умолчанию использует ADO OLE DB как свой внутренний способ досту-

112
па к данным. Конечно, Вы можете разрабатывать свои приложения кли-
ент-сервер на основе технологии ODBC, но помните, что ей на смену
пришла новая технология OLE DB, с тем, чтобы устранить недостатки
своей предшественницы. Главный недостаток ODBC – доступ к драйве-
рам посредством API. Для выполнения простых задач программист дол-
жен вызвать значительное количество сложных функций. И, несмотря на
то, что Microsoft и другие корпорации предлагают разработчикам высо-
коуровневые надстройки, по своей сути ODBC – очень уж сложная тех-
нология. OLE DB основана не на API, а на COM. Это значительно облег-
чает разработку не только пользовательских приложений, но и средств
доступа к данным OLE DB, называемых поставщиками. Отныне в их ро-
ли могут выступать любые COM-компоненты.
Вернемся к третьему способу преобразования приложения клиент-
сервер (рис. 7.25), который предусматривает cоздание базы SQL Server
без изменения приложения Access. Понятно, что это исходное приложе-
ние с полученной базой данных SQL Server работать не сможет. Если в
Вашем распоряжении достаточно времени и Вам больше нравится дру-
гое клиентское программное системное обеспечение, то смело выби-
райте этот вариант. Всегда лучше разработать новый продукт на «лю-
бимом языке», чем мучиться с переделкой старого.
Ну а теперь, как и было обещано ранее, выполним модификацию
проекта Access и базы SQL Server (первый способ), заставив приложе-
ние работать также корректно в режиме клиент-сервер, как оно работает
только под управлением Microsoft Access. Заранее хочу Вас успокоить -
переделки потребуются незначительные.

8. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОЕКТ MICROSOFT ACCESS

В разделе 7.3.1 нами была предпринята попытка создания нового


приложения клиент-сервер на базе приложения Microsoft Access. Мастер
преобразования фактически разделил это приложение на две части.
Первая часть – база данных real estateSQL со всеми сопутствующими
объектами попала в SQL Server, а вторая, интерфейсная часть, была
создана заново и размещена в файле проекта Access real estateCS.adp.
Для связи этих двух частей Microsoft Access 2002 по умолчанию исполь-
зует ADO OLE DB как свой внутренний способ доступа к данным.

8.1. Преимущества работы с мастером преобразования

Вам вряд ли удастся успешно перенести свое приложение на плат-


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

113
мастер преобразования. В процессе изучения этой главы у разработчика
может возникнуть вполне резонный вопрос: ”Так стоит ли пользоваться
мастером преобразования, если он не справляется со своей работой на
все сто?”. Не сомневайтесь – стоит! Он прекрасно выполняет перенос
данных и конвертирует в новое приложение до 90% объектов, так что
основной объем работы за нас будет сделан. Но без некоторой доработ-
ки все-таки не обойтись.

8.2. Перенесенные объекты и оставшиеся проблемы

Мастер не особенно силен в преобразовании запросов. Нам необхо-


димо внимательно просмотреть отчет о его работе (рис. 7.30) и выяс-
нить, все ли запросы он перенес в новую базу данных. Неудачно сгене-
рированные конструкции необходимо вручную довести до рабочего со-
стояния, создав сохраненные процедуры и представления (в терминоло-
гии SQL Server - хранимые процедуры и виды). Некоторые составляю-
щие базы данных Access вообще не могут быть перенесены в новый
проект. Это некоторые условия на значения полей и записей. Мастер
выполняет попытку преобразования из синтаксиса JET в синтаксис SQL
Server, но если она заканчивается неудачно, то такое свойство не пере-
носится вообще. Также на SQL Server не будут перенесены перекрест-
ные запросы, запросы на выполнение с параметрами, запросы на вы-
полнение, основанные на базе других запросов и все запросы, бази-
рующиеся на запросе, который не удалось перенести.

8.2.1. Запуск Enterprise Manager MS SQL Server


Запустим на выполнение Enterprise Manager (рис. 8.1).

Рис. 8.1. Системное меню

Пуск  Программы  Microsoft SQL Server  Enterprise Manager.

114
Если SQL Server запущен, то на экране появится окно (рис.8.2).

Рис. 8.2. Окно SQL Server Enterprise Manager

Enterprise Manager – один из основных инструментов администриро-


вания Microsoft SQL Server, предназначенный для управления сервером
базы данных, оптимизации запросов, разрешения возникающих проблем
и т.д. Enterprise Manager реализован в виде подгружаемого модуля Mi-
crosoft Management Console и позволяет отобразить все объекты SQL
Server в виде иерархического дерева.
Вам конечно же, хочется увидеть структуру базы данных real es-
tateSQL. Для этого необходимо запустить построитель диаграммы базы
данных. Процедура запуска показана на (рис. 8.3).

Рис. 8.3. Запуск мастера построения диаграмм баз данных

Находясь в окне SQL Server Enterprise Manager, выберите интере-


сующую нас базу данных real estateSQL и сделайте щелчок по пикто-

115
грамме Diagrams, которая находится в правой части окна (рис.8.2). В
строке меню Enterprise Manager выберите пункт Действие, а в открыв-
шемся списке пункт New Database Diagram (рис. 8.3).

8.2.2. Работа с мастером построения схемы данных


Появится первое окно мастера (рис. 8.4). Оно носит чисто информа-
ционный характер и не требует введения никаких параметров.

Рис. 8.4. Первое окно мастера построения диаграмм баз данных

Щелчок по кнопке Далее приведет нас к следующему окну (рис.8.5). В


нем разработчику необходимо выбрать таблицы, которые будут включе-
ны в схему данных, а также указать, следует ли показывать в схеме дан-
ных связи между таблицами. Обратите внимание на то, что база данных
real estateSQL кроме таблиц, перенесенных из Microsoft Access, содер-
жит еще и системные таблицы SQL сервера.

Рис. 8.5. Второе окно мастера построения диаграмм баз данных

Все эти таблицы отображены в левом окне. Перенесите в правое ок-


но только Ваши, используя для этого кнопку Add. Обязательно поставь-
те флажок в поле Add related tables automatically, иначе от полученной

116
мастером схемы данных будет мало толку. Щелчок по кнопке Далее
приведет нас к очередному информационному окну (рис. 8.6).

Рис. 8.6. Третье окно мастера построения диаграмм баз данных

Это последнее окно мастера. Щелчок по кнопке Готово запускает


процесс построения, результаты которого Вас не разочаруют (рис. 8.7).

Рис. 8.7. Схема данных базы real estateSQL

В базе данных Access было три запроса. Попробуем убедиться в том,


что все они успешно преобразованы в хранимые процедуры и виды SQL
Server. Для этого вернемся к рисунку 8.2 и сделаем щелчок по значку
Stored Procedures. Нас ждет разочарование. На месте двух хранимых
процедур с параметрами нет ничего. Об ошибках преобразования за-
проса Document нам уже сообщило окно, изображенное на рисунке 7.29.
А о причинах отсутствия хранимой процедуры Flats можно подробно уз-
нать из отчета о преобразовании в формат SQL Server (рис. 7.30).

117
Заглянем в раздел Views окна SQL Server Enterprise Manager (рис. 8.2).

8.2.3. Успешное преобразование запроса Access в вид MS SQL


Первая серьезная удача (рис. 8.8). Запрос Microsoft Access с именем
Area конвертирован в представление (вид) Area.

Рис. 8.8. Успешная конвертация запроса Area

Рассмотрим полученный текст на Transact-SQL целиком:


CREATE VIEW dbo.Area
AS
SELECT dbo.street.NAME, dbo.street.SIGN, dbo.building.HOUSE, dbo.distict.AREA,
dbo.building.LAND, dbo.building.YEAR, dbo.building.WEAR, dbo.wall.WALL,
dbo.building.SQUARE
FROM dbo.wall INNER JOIN
dbo.distict INNER JOIN
dbo.street INNER JOIN dbo.building
ON dbo.street.STREET = dbo.building.STREET
ON dbo.distict.DISTRICT = dbo.building.DISTRICT
ON dbo.wall.MATERIAL = dbo.building.MATERIAL
WHERE (dbo.distict.AREA = 'Кировский')

А вот текст запроса Microsoft Access:


SELECT street.NAME, street.SIGN, building.HOUSE, distict.AREA, building.LAND,
building.YEAR, building.WEAR, wall.WALL, building.SQUARE
FROM wall INNER JOIN (distict INNER JOIN (street INNER JOIN building
ON street.STREET = building.STREET)
ON distict.DISTRICT = building.DISTRICT)
ON wall.MATERIAL = building.MATERIAL
WHERE (((distict.AREA)="Кировский"));

Отличие диалекта Access SQL от Transact-SQL по конструкциям дан-


ного примера незначительно, именно поэтому мастер преобразования
легко справился с поставленной задачей. Новое для Вас – аббревиату-

118
ра DBO (Data Base Owner). Под ней скрывается специальный пользова-
тель, обладающий максимальными правами в этой базе данных.

8.3. Исправление ошибок мастера преобразования

Попробуем разобраться с ошибкой, показанной на рисунке 7.31. Mi-


crosoft Access сообщает: ”Не существует источник записей flats, указан-
ный в форме”. Мастеру преобразования не удалось справиться с напи-
санием хранимой процедуры с двумя параметрами. Выполним эту рабо-
ту сами!

8.3.1. Создание хранимой процедуры с параметрами


Сделаем щелчок правой кнопкой мыши по значку Stored Procedures
(рис. 8.2). В появившемся меню выберем пункт New Stored Procedure.
Появится окно (рис. 8.9).

Рис. 8.9. Окно создания новой хранимой процедуры

В поле Text разместим написанную на Transact-SQL процедуру с па-


раметрами:
CREATE PROCEDURE dbo.Flats(@StreetSql SmallInt,
@HouseSql nVarChar (10))
AS SELECT TOP 100 PERCENT dbo.flat.STREET, dbo.flat.HOUSE, dbo.flat.FLAT,
dbo.flat.STOREY, dbo.flat.ROOMS, dbo.flat.SQUAREFLAT, dbo.flat.DWELL,
dbo.flat.BRANCH, dbo.flat.BALCONY, dbo.flat.HEIGHT, dbo.flat.ACCOUNT,
dbo.account.FAMILY, dbo.account.NAME, dbo.account.SECOND,
dbo.account.PASPORT
FROM dbo.account INNER JOIN dbo.flat
ON dbo.account.ACCOUNT = dbo.flat.ACCOUNT
WHERE (dbo.flat.STREET = @StreetSql) AND (dbo.flat.HOUSE = @HouseSql)
ORDER BY dbo.flat.FLAT
GO

Как Вы помните, на основании запроса flats основана форма Flats, в


которой отображаются все квартиры, расположенные в здании. Для ука-
зания адреса этого здания нам понадобятся два параметра @StreetSql

119
(номер улицы) и @HouseSql (номер дома). Механизм передачи значений
этим параметрам реализован довольно просто. Запустим файл real es-
tateCS.adp и откроем в конструкторе форму Flats (рис. 8.10). Щелчком
правой кнопки мыши откроем также окно свойств этой формы. Вид этого
окна в проекте Access (файл real estateCS.adp) несколько отличается от
вида в базе данных Access (файл real estate.mdb).

Рис. 8.10. Окно свойств формы в проекте Access

В поле Входные параметры поставьте строку:

@StreetSql SmallInt=[Forms]![Building]![Street],
@HouseSql nVarChar(10)=[Forms]![Building]![House]

Запустите форму Building, а из нее форму Flats. На экране появится


список квартир в здании. Удача? Нет! Корректировать данные эта форма
не дает! Правила обновления данных форм в проекте Access отличают-
ся от правил обновления Microsoft SQL Server. Ведь ядро базы данных
совсем иное. В форме, основанной на хранимой процедуре с парамет-
рами, создающей объединение из двух таблиц, могут быть обновлены
только поля из одной из них, причем при условии, что она указана в
свойстве формы Однозначная таблица (рис. 8.10). В нашем случае
таблиц действительно две. Это flats и account.

8.3.2. Обновление данных в форме с двумя таблицами


Положение сложное, но из него есть два выхода:
- переделать интерфейс проекта Access. Разбить форму Flats на три
формы. Так чтобы каждая из них работала только с одной таблицей и
вызывалась одна из другой. Квартира  Проживающие  Лицевой счет.

120
- вернуться к исходному файлу real estate.mdb и изменить структуру
базы данных. Соединить таблицы flat и account в одну. На работе
исходного приложения это никак не отразится. Уничтожить базу дан-
ных real estateSQL SQL сервера при помощи SQL Server Enterprise
Manager и снова запустить мастер преобразования в формат SQL
Server.

Вернемся к исходному файлу real estate.mdb и пойдем по второму


пути. На мой взгляд, он приведет к конечному результату значительно
быстрее. Перенесем все поля из таблицы account в таблицу flat, открыв
ее в конструкторе таблиц (рис. 8.11).

Рис. 8.11. Модифицированная таблица квартир

Рис. 8.12. Схема данных Access после корректировки

121
Схема исходной базы Microsoft Access после слияния таблиц не-
сколько изменится (рис. 8.12). Снова запустим мастер преобразования в
формат SQL Server. Не закрывая проект Microsoft Access, откроем в кон-
структоре нашу таблицу flat. Перед Вами совсем другая картинка (рис.
8.13). Другой тип данных, указана длина поля, а также имеется возмож-
ность контролировать заполнение значений. Не забывайте, что это таб-
лица SQL сервера, связанная с проектом Access.

Рис. 8.13. Вид таблицы квартир в проекте Access

Изменится и вид диаграммы базы real estateSQL SQL сервера (рис.


8.14). Исчезла таблица account и ее связь с таблицей flat.

Рис. 8.14. Окно диаграммы real estateSQL после корректировки

122
В этом случае не следует забывать про то, что пользователь может
занести в базу данных две квартиры с одинаковым номером лицевого
счета. Следует лишить его этой возможности. Средств для этого у Вас
достаточно, только правильно воспользуйтесь ими. Один из вариантов
будет рассмотрен в главе 8.4. Но и это еще не все. Необходимо внести
изменения в хранимую процедуру Flats (рис.8.9). Мастер по-прежнему
не в силах правильно преобразовать запрос. Таблица теперь одна, сле-
довательно, текст процедуры будет попроще:

CREATE PROCEDURE dbo.Flats(@StreetSql SmallInt,


@HouseSql nVarChar (10))
AS SELECT TOP 100 PERCENT dbo.flat.STREET, dbo.flat.HOUSE, dbo.flat.FLAT,
dbo.flat.STOREY, dbo.flat.ROOMS, dbo.flat.SQUAREFLAT,
dbo.flat.DWELL, dbo.flat.BRANCH, dbo.flat.BALCONY,
dbo.flat.HEIGHT, dbo.flat.ACCOUNT, dbo.flat.FAMILY,
dbo.flat.NAME, dbo.flat.SECOND, dbo.flat.PASPORT
FROM dbo.flat
WHERE (dbo.flat.STREET = @StreetSql) AND (dbo.flat.HOUSE = @HouseSql)
ORDER BY dbo.flat.FLAT
GO
Корректировку можно выполнить в окне Stored Procedure, которое от-
крывается в SQL Server Enterprise Manager (рис. 8.2). Но, на мой взгляд,
конструктор запросов проекта Microsoft Access лучше подходит для это-
го (рис. 8.15), поскольку разработчик может фактически и не владеть
знаниями по Transact-SQL.

Рис. 8.15. Окно конструктора запросов из проекта Microsoft Access

123
Корректировка исходного файла Microsoft Access real estate.mdb c
уничтожением базы данных real estateSQL Microsoft SQL Server и новым
запуском мастера преобразования в формат SQL – далеко не лучший
вариант доработки приложения клиент-сервер. Мы рассмотрели его
только в качестве демонстрации такой возможности. Профессиональные
разработчики запускают мастер преобразования только один раз, а в
дальнейшем вносят изменения в клиентскую и серверную части разра-
батываемого приложения.
Сейчас мы внесем изменения в базу данных real estateSQL средст-
вами Microsoft SQL Server.
Запустим SQL Server Enterprise Manager (рис. 8.16). В левой части
окна выберем наш SQL Server – Master (Windows NT). Откроем его базы
данных. Найдем среди них real estateSQL. Выберем пункт Tables. Спи-
сок таблиц этой базы данных откроется в правой части окна.

Рис. 8.16. Запуск SQL Server Enterprise Manager

Сделаем щелчок правой кнопкой мыши по имени таблицы flat. На эк-


ране появится меню, содержащее несколько пунктов. Нам необходимо
выбрать Design Table (конструктор таблицы). Следующее окно (рис.
8.17) позволит нам добавить в нее поля Family, Name, Second и Pasport
из таблицы account, указав тип данных и их длину. Описание полей за-
носится на вкладку Columns в раздел Description.
Таблицу account отныне можно удалить. Сделайте щелчок по ее
имени (рис. 8.16) правой кнопкой мыши, и в появившемся меню выбери-
те пункт Удалить. Перед удалением таблицы account перенесите все

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

Рис. 8.17. Таблица flat в конструкторе SQL Enterprise Manager

Рис. 8.18. Таблица flat в конструкторе Microsoft Access

125
Добавить поля в таблицу flat можно и в проекте Access (рис. 8.18).
Открывать окно конструктора таблиц в Access Вы уже умеете. Для мо-
дификации таблицы можно выбрать любой из этих двух способов.

8.3.3. Создание хранимой процедуры средствами Access


Настала очередь разобраться с ошибкой, из-за которой в режиме
клиент-сервер не формируется документ. Содержание этой ошибки по-
казано на рисунке 7.29. Она возникла в результате того, что мастер пре-
образования вообще не конвертирует в SQL Server запросы с парамет-
рами, к тому же в состав запроса включен еще и подзапрос.
В данном случае нам необходимо написать хранимую процедуру с
тремя параметрами, а после этого исправить еще и отчет Access. Его
название – Document. Правильно работающая хранимая процедура бу-
дет иметь вид (рис 8.19).

Рис. 8.19. Хранимая процедура Document

CREATE PROCEDURE dbo.Document(@StreetSql smallint,


@HouseSql nvarchar(10), @FlatSql smallint)
AS SELECT dbo.street.NAME AS NameST, dbo.street.SIGN, dbo.flat.HOUSE,
dbo.flat.FLAT, dbo.flat.STOREY, dbo.flat.ROOMS, dbo.flat.SQUAREFLAT,
dbo.flat.DWELL, dbo.flat.BRANCH, dbo.flat.BALCONY, dbo.flat.HEIGHT,
dbo.flat.ACCOUNT, dbo.flat.FAMILY, dbo.flat.NAME AS Expr1,
dbo.flat.SECOND, dbo.owners.NUMBER, dbo.owners.FAMILY AS Expr2,
dbo.owners.NAME AS Expr3, dbo.owners.SECOND AS Expr4,
dbo.owners.BORN, dbo.owners.STATUS, dbo.street.STREET,
dbo.street.FIRST
FROM dbo.street INNER JOIN
dbo.flat ON dbo.street.STREET = dbo.flat.STREET INNER JOIN
dbo.owners ON dbo.flat.STREET = dbo.owners.STREET AND
dbo.flat.HOUSE = dbo.owners.HOUSE AND dbo.flat.FLAT = dbo.owners.FLAT
WHERE (dbo.flat.STREET = @StreetSql) AND (dbo.flat.HOUSE = @HouseSql) AND
(dbo.flat.FLAT = @FlatSql)
ORDER BY dbo.owners.NUMBER
GO

126
Вы, наверное, решили, что текст этой процедуры написан в тексто-
вом редакторе разработчиком, хорошо владеющем Transact-SQL. Оши-
баетесь! Без конструктора запросов Microsoft Access не обошлось (рис.
8.20).

Рис. 8.20. Конструирование хранимой процедуры Document

При создании хранимой процедуры Document нам понадобится ин-


формация из таблиц street, flat и owners. В MDB-приложении вместо
таблицы flat использовался запрос flats, который содержал данные по
техническим характеристикам всех квартир, расположенных в здании. В
данном случае следует обойтись без запроса flats.
В окне проекта real estateCS выберите значок Запросы. Он находит-
ся в списке Объекты. Нажмите кнопку Создать на панели инструмен-
тов этого окна. Появится окно «Новый запрос» (рис. 8.21). Выберите в
нем пункт «Конструктор сохраненной процедуры» и нажмите кнопку Ok.
На экране появится окно, в котором нам предстоит сконструировать
текст сохраненной процедуры Document (рис. 8.22). Список таблиц базы

127
real estateSQL уже заботливо приготовлен конструктором. Выберем три
наших таблицы. Они появятся в верхней части окна вместе со связями.
Закройте окно «Добавление таблицы».

Рис. 8.21. Запуск конструктора сохраненной процедуры

Рис. 8.22. Выбор таблиц для сохраненной процедуры

128
Отметьте флажками те поля в таблицах street, flat и owners, кото-
рые должные попасть в текст сохраненной процедуры. Они сразу будут
отображены в таблице, расположенной в нижней части окна (рис. 8.22).
Для полей STREET, HOUSE и FLAT в столбец «Критерий» занесите пара-
метры будущей процедуры =@StreetSql, =@HouseSql и =@FlatSql.
Сделайте щелчок по пиктограмме основного окна Microsoft Access.
Появится третья часть окна конструктора с текстом сохраненной проце-
дуры (рис. 8.20). Некоторые поля в выбранных таблицах имеют одина-
ковые названия, поэтому конструктор использует понятие псевдоним
(Expr1, Expr2, Expr3 и т.д.). Если у поля есть псевдоним, то именно его
следует использовать в форме или отчете проекта Microsoft Access, а
это означает, что переделка отчета Document неизбежна. Откроем его в
конструкторе отчетов (рис. 8.23).

Рис. 8.23. Вид отчета Document в конструкторе после внесения исправлений

В первую очередь в поле Входные параметры поставим строку:

@StreetSql SmallInt=[Forms]![Building]![Street],
@HouseSql nVarChar(10)=[Forms]![Building]![House],
@FlatSql SmallInt=[Forms]![Flats]![Flat]

Названия всех полей, имеющих псевдонимы, заменим псевдонима-


ми: Expr1, Expr2, Expr3, Expr4.

129
Запустим отчет Start Building  Flats  Документ (рис 8.24).

Рис. 8.24. Вид отчета Document после внесения исправлений

Обратите внимание на то, что вычисляемое поле Address выдает


неправильную информацию. Вместо названия проспекта мы видим на-
звание отчета. Для устранения этой ошибки вернемся к запросу (рис.
8.20) и дадим псевдоним полю Name. Пусть это будет имя NameST. Ос-
тается исправить выражение для вычисляемого поля Address (рис. 8.25).

Рис. 8.25. Работа с вычисляемым полем Address

Свойство Данные для вычисляемого поля Address должно иметь вид:


=IIF([First]=Истина;Trim([NameSt]+' '+[Sign]+', дом '+(Trim([House]))+', кв.'+
Trim(Str([Flat])));Trim([Sign]+' '+[NameSt])+', дом '+(Trim([House]))+', кв.'+
Trim(Str([Flat])))
До модификации эта строка была такой:
=IIF([First]=Истина;Trim([street.Name]+' '+[Sign]+', дом '+(Trim([House]))+', кв.'+
Trim(Str([Flat])));Trim([Sign]+' '+[street.Name])+', дом '+(Trim([House]))+', кв.'+
Trim(Str([Flat])))

Модификация выражения минимальна! Заменим street.Name на


NameST. Это связано с тем, что в выбранных таблицах для сохраненной
процедуры есть несколько полей с названием Name. Исключим всякую
путаницу и полностью перейдем на псевдонимы. Отчет готов!

130
Осталось разобраться с последней ошибкой, возникающей при изме-
нении адреса здания (рис 8.26). Пусть нам необходимо заменить адрес
здания с “Проспект 60 Лет Октября” на “Улица Авроры”. Проект Microsoft
Access выдаст одну за другой две ошибки. Дело вот в чем. Для преобра-
зования связей между таблицами и целостности данных мы использо-
вали DRI - Declarative Referential Integrity (рис. 7.24). На мой взгляд это
более легкий путь, чем использование триггеров, так как хотя бы при од-
ном неудачном преобразовании триггера, нам пришлось значительно
углубиться в изучение Transact-SQL, что для начинающего разработчика
в общем-то нежелательно. Теперь же несколько щелчков мышью испра-
вят все дело. DRI действует так же, как целостность данных Access, од-
нако не обладает возможностями каскадного обновления и удаления.
Это как раз и явилось причиной ошибки преобразования.

Рис. 8.26. Ошибка, возникающая при изменении адреса здания

Рис. 8.27. Очередная корректировка схемы данных MS SQL Server

131
Выведем на экран диаграмму базы данных real estateSQL Microsoft
SQL Server (рис. 8.27). О том как это сделать – рассказано в главе 8.2.
Нам необходимо внести изменения в связи между таблицами: Street –
Building, Biulding – Flat и Flat – Owners. Начнем со связи между Building и
Flat. Сделайте по ней щелчок правой кнопкой мыши. Появится меню, в
котором надо выбрать пункт Properties (рис. 8.28).

Перед Вами окно свойств


связей. Откроем вкладку
Relationships. Эта вкладка
окна свойств содержит на-
бор свойств связей между
таблицами в базе данных.
Имя таблицы flat, выде-
ленной на схеме базы дан-
ных. Если на схеме выде-
лено несколько таблиц,
отображается имя первой
таблицы. Выделенная связь
(Selected relationship) начи-
нается со значка. Значок
бесконечности указывает,
что таблица участвует в
связи как адресующая
таблица. (Адресующая таб-
лица имеет ограничение
внешнего ключа.)
New - нажмите эту кнопку,
если нужно создать новую
связь для выделенной
Рис.8.28. Окно Properties. таблицы базы данных.
Delete – нажмите эту кнопку,
чтобы удалить выделенную связь из базы данных. Пользователь имеет
возможность переименовать связь, вводя в это поле новое имя. Табли-
ца первичного ключа (Primary key table) содержит имена столбцов, кото-
рые составляют первичный ключ. Таблица внешнего ключа (Foreign key
table) содержит имена столбцов, которые составляют внешний ключ.
Check existing data on creation. Применение ограничения к данным,
уже существующим в базе данных, при добавлении связи в таблицу
внешнего ключа. В нашем случае флажок в это поле ставить не следует.
Мы не добавляем связей между таблицами.

132
Enforce relationship for replication. Применить связь при реплика-
ции. В этом поле уже имеется флажок – не снимайте его.
Enforce relationship for INSERTs and UPDATEs. Применить связь
для INSERT и UPDATE. Применение ограничения при операциях встав-
ки, удаления и обновления данных в таблице внешнего ключа. Кроме то-
го, установленный флажок запрещает удаление из таблицы первичного
ключа строк, для которых существуют связанные строки в таблице
внешнего ключа и каскадное обновление связанных полей. Вот в этом
как раз и состоит наша проблема. Для ее решения предназначено пред-
последнее поле на этой вкладке.
Cascade Update Related Fields. Только для Microsoft SQL Server
2000 и более поздних версий. Задает в базе данных автоматическое об-
новление значений внешнего ключа при любом обновлении значения
первичного ключа. Обязательно поставьте флажок в это поле! Ошибка
при изменении адреса здания исчезнет. Не забудьте только про еще две
оставшиеся связи (Street – Building и Flat – Owners). С ними следует
проделать такую же операцию.
Cascade Delete Related Records. Каскадное удаление связанных по-
лей. Только для Microsoft SQL Server 2000 и более поздних версий. За-
дает в базе данных автоматическое удаление строк из таблицы внешне-
го ключа при любом удалении адресуемой строки в таблице первичного
ключа. Не трогайте это поле. Пусть оно останется пустым. Представьте
себе ситуацию: Вы удалили улицу из таблицы street и вместе с ней про-
пали все здания с квартирами и собственниками, расположенные на
этой улице. Это поле – не для нашей задачи!
Наверняка Вы еще много раз будете возвращаться к Вашей базе
данных в Microsoft SQL Server, улучшая ее работоспособность. В боль-
шинстве случаев Вам не понадобятся системные таблицы, хранимые
процедуры, виды SQL Server и т.д. Сделайте их невидимыми (рис. 8.29).
Снимите флажок в поле Show system databases and system objects.

Рис. 8.29. Отключение вывода на экран системных объектов

133
8.3.4. Стандартные функции MS SQL Server
В Microsoft SQL Server имеется набор стандартных встроенных
функций. Многие из них отличаются от функций Microsoft Access. Чтобы
избежать ненужных потерь времени при написании Вами хранимых про-
цедур, триггеров, видов и своих пользовательских функций, которые
появились в MS SQL Server, начиная с версии 2000, приведу наиболее
часто встречающиеся из них. Математические функции SQL Server при-
ведены в табл. 8.1.
Таблица 8.1.
Математические функции SQL Server 2000

№ Функция Описание функции Пример Значение


Возвращает абсолютную величину
1 Abs() Abs(-345.6) 345.6
числа
Возвращает угол в радианах, косинус
2 Acos() Acos(0.5) 1.0471976
которого равен указанному значению
Возвращает угол в радианах, синус ко-
3 Asin() Asin(0.5) 0.5235988
торого равен указанному значению
Возвращает угол в радианах, тангенс
4 Atan() Atan(1) 0.7853982
которого равен указанному значению
Возвращает угол в радианах, тангенс
которого равен частному от деления
5 Atn2() первого аргумента на второй, с учетом Atn2(3,3) 0.7853982
квадранта, задаваемого двумя аргу-
ментами
Возвращает ближайшее целое число,
Ceiling(-15.2) -15
6 Ceiling() большее или равное значению аргу-
Ceiling (13.6) 14
мента
7 Cos() Возвращает косинус угла, в радианах Cos(1) 0.5403023
8 Cot() Возвращает котангенс угла, в радианах Cot(1) 0.6420926
Выполняет преобразование угла из
9 Degrees() Degrees(1.0) 57.29578
радиан в градусы
10 Exp() Возвращает значение экспоненты Exp(1) 2.7182818
Округляет число до ближайшего мини- Floor(-15.2) -16
11 Floor()
мального целого (см. примеры) Floor(13.6) 13
Проверяет, имеет ли указанное выра-
жение числовой тип, если имеет, то
12 IsNumeric IsNumeric(1.2) 1
функция возвращает 1. В противном
случае 0.
Возвращает натуральный логарифм
13 Log() Log(10) 2.302585
числа
Возвращает натуральный логарифм
14 Log10() Log10(100) 2.0
числа
15 Pi() Возвращает значение π Pi() 3.1415926
16 Power() Возводит число в степень Power(3,3) 27
Выполняет преобразование угла из
17 Radians() Radians(90.0) 1.5707963
градусов в радианы

134
№ Функция Описание функции Пример Значение
0.8529751
Возвращает случайное число в диапа-
18 Rand() Rand() (произ-
зоне от 0 до 1
вольное)
Возвращает 1 для положительного Sign(-10.1) -1
19 Sign() числа, 0 для нулевого, -1 для отрица- Sign(0) 0
тельного числа Sign(10.1) 1
Возвращает синус угла, выраженного в
20 Sin() Sin(1) 0.8414710
радианах
21 Sqrt() Возвращает квадратный корень Sqrt(2) 1.4142136
22 Square() Выполняет возведение в квадрат Square(1.2) 1.44
23 Tan() Возвращает тангенс угла, в радианах Tan(1) 1.5574077

Другие, полезные для начинающего разработчика функции, приведе-


ны в табл. 8.2
Таблица 8.2.
Другие функции SQL Server 2000

№ Функция Описание функции Пример Значение


Возвращает текущую системную 12.03.2004
1 GetDate() GetDate()
дату и время 09:33:21.153
Возвращает день из значения
2 Day() Day(GetDate()) 12
даты
Возвращает месяц из
3 Month() Month(GetDate)) 3
значения даты
Возвращает как текст знак, соот- % (про-
4 Char() Char(37)
ветствующий коду ASCII цент)
Возвращает год из значения да-
5 Year() Year(GetDate()) 2004
ты
Возвращает длину строки в сим-
6 Len() Len(‘Сервер’) 6
волах
Переводит текст в нижний ре-
7 Lower() Lower(‘aSD’) asd
гистр
Переводит текст в верхний
8 Upper() Upper(‘aSD’) ASD
регистр
Выполняет тиражирование стро-
9 Replicate() Replicate(‘Ado’,2) AdoAdo
ки указанное число раз
Возвращает подстроку из стро-
Substring
10 Substring() ки. Необходимо указать с какого bcd
(‘abcdef’,2,3)
символа и сколько символов.
11 Rtrim() Удаляет пробелы после текста Rtrim(‘abcd ‘) abcd
12 Ltrim() Удаляет пробелы перед текстом Ltrim(‘ abcd’) abcd
Возвращает строку, символы ко-
13 Reverse() торой записаны в обратном по- Reverse(‘РОЗА’) АЗОР
рядке
14 Str() Преобразует число в текст Str(1234.56) 1234.56

135
8.4. Замена англоязычных сообщений СУБД на русские

В предыдущей главе после выполнения слияния таблиц flat и


account встал вопрос о том, что пользователь отныне может занести
две и более квартиры, имеющие один номер лицевого счета. Вашему
вниманию предлагается один из способов решения этой проблемы. Он
заключается в создании уникального индекса в таблице flat по полю
Account и в перехвате системной ошибки Microsoft Access с переводом
ее на русский язык. Запустите MS SQL Server Enterprise Manager и вы-
полните действия, показанные на рис. 8.30.

Рис. 8.30. Механизм открытия вкладки управления индексами

На экране дисплея появится окно Manage Indexes (рис. 8.31). Табли-


ца flat после работы мастера преобразования получила два индекса.
Создадим третий по полю Account. Для этого сделаем щелчок по кнопке
New.

Рис. 8.31. Окно управления индексами SQL Server Enterprise Manager

136
Следующий шаг на пути создания уникального индекса показан на
рис. 8.32. В поле Index name наберите название индекса – Account. Для
достижения на-
шей цели назва-
ние индекса и по-
ля должны совпа-
дать. Поставьте
флажок в поле
ACCOUNT. Не
следует делать
индекс кластери-
зованным. Это
приведет к пере-
стройке всей таб-
лицы по возрас-
танию или убыва-
нию значения по-
ля ACCOUNT, в
зависимости от
того, какой путь
Вы выберете в
разделе Change
column order (Up
или Down). А вот
флажок в поле
Рис. 8.32. Создание индекса по полю Account Unique values
просто необхо-
дим. Все данные введены. Вы можете посмотреть текст процедуры соз-
дания индекса на Transact SQL, щелкнув по кнопке Edit SQL. Он появит-
ся в отдельном окне. Для завершения всей работы по созданию индекса
не забудьте про кнопку OK.
Дальнейшие действия связаны с доработкой проекта Microsoft Access
Real Estate CS 2002.adp. Запустим его на выполнение, убрав с экрана
помощника, и попробуем
исправить номер лицевого
счета любой квартиры на
тот, который уже имеется в
таблице. Получим сооб-
Рис. 8.33. Сообщение на английском языке щение об ошибке (рис. 8.33).
Разработчику его содер-
жание полностью понятно, но оставлять этот текст в таком виде для ко-
нечного пользователя нельзя. Ему ведь и дела нет, что уникальный ин-
декс после его исправлений станет не уникальным! Воспользуемся со-

137
бытием формы Flats «Ошибка», которое позволяет перехватить англоя-
зычное системное сообщение с помощью кода VBA. Microsoft Access пе-
редает обработчику этого события параметр DataErr и назад получает
значение параметра Response (рис. 8.34).

Рис. 8.34. Перехват системного сообщения в форме Flats

Номер системной ошибки (рис. 8.33) можно найти в документации по


Access или узнать его самому (это значение параметра DataErr). В дан-
ном случае номер ошибки - 2601. Результат работы процедуры показан
на рис. 8.35. Смело можно утверждать,
что наш пользователь теперь сразу же
поймет, что он натворил. Номер
ошибки удобно записать в виде
константы. А сообщение на русском
языке в виде переменной (StrMsg). Для
других похожих процедур, в таком
случае, понадобится лишь небольшая Рис. 8.35. Сообщение об ошибке
переделка текста. Параметру
Response можно присвоить одно из двух значений встроеннных констант
VBA. Первое (acDataErrDisplay) позволит Microsoft Access продолжить
работу в штатном режиме, сообщив о системной ошибке на английском

138
языке. Второе (acDataErrContinue) – отключает вывод системной ошиб-
ки, и как Вы видели, у разработчика появляется возможность предупре-
дить пользователя на русском языке. После отказа от изменения номера
лицевого счета появится еще одно системное сообщение (номер ошибки
2169), но его перехватывать нет необходимости. Оно и так вполне по-
нятно (рис.8.36).

Рис. 8.36. Системное сообщение Microsoft Access на русском языке

Если у Вас нет под рукой документации по Access 2002 – восполь-


зуйтесь для определения номера ошибки процедурой:

Private Sub Form_Error(DataErr As Integer, Response As Integer)


Dim StrMsg As String
StrMsg = "Номер ошибки " & DataErr & Chr(13) & _
"Нажмите кнопку OK" & Chr(13) & _
"В следующем окне появится само сообщение"
MsgBox StrMsg, vbOKOnly + vbInformation, "Обнаружена ошибка"
Response = acDataErrDisplay
End Sub

Ее надо поставить на время отладки формы вместо одноименной


процедуры, приведенной на рис. 8.34. Результат работы этой процеду-
ры имеет вид (рис. 8.37). Текст сообщения состоит из трех строк, хотя в
качестве параметра в MsgBox была
передана одна строка StrMsg. Все
дело в «возврате каретки» -
Chr(13). Второй параметр для
MsgBox определяет количество
кнопок в окне. У нас используется
одна (vbOKOnly), а может быть три.
Рис. 8.37. Номер ошибки определен Разработчик может также выбрать
тип значка, который появится в
левом верхнем углу окна. Наш значок - vbInformation - Вы видите на ри-
сунке. И, наконец, системные сообщения не отключены (Response =
acDataErrDisplay). В следующем окне будет выведен системный текст.

139
8.5. Резервное копирование базы данных

При эксплуатации на предприятии приложения клиент-сервер перед


администратором стоит задача периодического создания резервных ко-
пий базы данных. Клиентская часть приложения претерпевает измене-
ния только при модификации программы, а серверная часть может из-
меняться ежеминутно. Резервное копирование является такой же важ-
ной частью эксплуатации сервера баз данных, как и управление систе-
мой безопасности. Создавать резервные копии администратору базы
данных следует по многим причинам. Основная – сбои в аппаратной
части сервера. Например, выход из строя жесткого диска. Независимо
от того, по какой причине были потеряны данные, резервное копирова-
ние поможет свести к минимуму потери предприятия и вернуть инфор-
мационную систему в рабочее состояние.
Резервная копия базы SQL Server представляет собой полный набор
данных, хранившихся в этой базе в определенный момент времени.
Обычно для хранения резервных копий используются носители, специ-
ально для этого предназначенные (LS, ZIP,Flash, жесткий диск другого
компьютера и т.д.). Если сервер будет уничтожен физически, админист-
ратор всегда сможет восстановить базу данных из резервной копии на
другом сервере. Кстати, по крайней мере, один раз Вам придется это
сделать при переносе базы данных с компьютера разработчика на сете-
вой сервер при запуске приложения клиент-сервер в опытную эксплуа-
тацию.
Файл резервной копии базы данных является обычным файлом опе-
рационной системы. Его можно свободно копировать на другой диск или
компьютер локальной вычислительной сети. При значительных разме-
рах рекомендуется его архивация (ARJ, RAR, ZIP и т.п.). Обычный архи-
ватор может уменьшить размер резервной копии в 9 - 11 раз.

Рис. 8.38. Назначение устройства резервного копирования

140
Лучше всего резервные копии хранить отдельно от сервера и иметь
их несколько штук. В небольшом предприятии – по числу рабочих дней в
неделю. Само же резервное копирование удобно выполнять после окон-
чания рабочего дня.
Назначим логические устройства для резервного копирования нашей
базы данных real estateSQL (рис. 8.38). На SQL сервере MASTER (Win-
dows NT) откроем папку Management и сделаем щелчок правой кнопкой
мыши по пиктограмме Backup. Появится меню. Выберем в нем первый
пункт – New Backup Device. Перед Вами очередное окно (рис. 8.39).

Рис. 8.39. Окно назначения нового логического устройства

Укажите имя логического устройства и имя файла, в который будет


выгружена резервная копия базы данных. Для имени файла указывается
полный путь и расширение .BAK, а основной части имени лучше всего
оставить имя самой базы данных. Следующее окно (рис. 8.40) демонст-
рирует наличие трех логических устройств для выгрузки базы данных.
Первое устройство представляет собой жесткий диск компьютера. Ре-
зервная копия будет помещена в папку по умолчанию:
C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\real estateSQL.bak

Рис. 8.40. Логические устройства резервного копирования

141
Разобраться с остальными логическими устройствами для Вас не со-
ставит никакого труда. Они представляют собой внешние накопители.
Второе – Flash Drive 512 Mb, а третье - Zip Disk 250 Mb.
Для создания резервной копии базы real estateSQL используем воз-
можности SQL Server Enterprise Manager (рис. 8.41). Databases  Все
задачи  Backup Database. Появится окно параметров (рис. 8.42).

Рис. 8.41. Начало процесса создания резервной копии базы данных

Рис. 8.42. Параметры резервной копии базы данных

142
Рассмотрим элементы управления, имеющиеся в этом окне.
Database. В раскрывающемся списке содержатся названия всех баз
данных, имеющихся на сервере. По умолчанию выбрана база данных
Master. Заменим ее на real estateSQL.
Name. Это имя будет присвоено создаваемой резервной копии. При вос-
становлении администратор будет выбирать нужную копию именно по
этому имени.
Description. Содержит краткий комментарий к резервной копии. Инфор-
мация носит вспомогательный характер.
Backup. С помощью этого переключателя выбирается тип резервной
копии. Будет создана полная или разностная копия базы данных. Оста-
новимся на полной копии.
Add. Выбор логического устройства для копии. Откроется дополнитель-
ное окно (рис. 8.43).

Рис. 8.43 Окно выбора логического устройства

Overwrite. Группа переключателей позволяет определить, будет ли соз-


данная резервная копия при сохранении ее на логическое устройство
резервного копирования записы-
ваться поверх имеющихся данных
или добавляться в конец. Append
to media – новые данные будут
добавляться к имеющимся. Over-
write existing media – новые дан-
ные будут записаны поверх
имеющихся. Выберите второй
Рис. 8.44 Индикатор прогресса пункт – ошибок в отсутствии опыта
наделаете меньше!
Все параметры для создания резервной копии выбраны. Сделайте щел-
чок по кнопке Ok, и процесс выгрузки базы данных real estateSQL на ло-
гическое устройство Zip250 будет начат (рис. 8.44).

143
8.6. Перенос базы данных на рабочий сервер

Наступил очередной этап в жизни Вашего приложения. Оно успешно


работает на отдельном компьютере, но уже в режиме клиент-сервер.
Осталось перенести его серверную часть на основной сервер предпри-
ятия HPLH3. Пусть это будет контроллер домена Department с опера-
ционной системой Microsoft Windows 2000 Server SP-4. Выполните на
этом сервере генерацию Microsoft SQL Server 2000 Standard Edition. Этот
процесс практически ничем не отличается от процесса генерации Devel-
oper Edition, описанного в главе 7.2, но на этом незначительном отличии
мне хочется сделать акцент, касающийся выбора модели лицензирова-
ния Microsoft SQL Server, поскольку этот вопрос необходимо решить еще
до приобретения SQL Server. Ваши грамотные действия помогут сэко-
номить вашей организации немалые средства. При генерации Microsoft
SQL Server 2000 Standard Edition появится одно окно, которого нет в SQL
Server 2000 Developer Edi-
tion (рис. 8.45). Корпора-
ция Microsoft традиционно
предлагает две модели
лицензирования: на про-
цессор сервера (Processor
License for) и на клиент-
ское подключение (Per
Seat). Лицензирование на
клиентское подключение
требует, чтобы каждый
клиент, подключающийся
к серверу, имел собствен-
ную лицензию на подклю-
чение. Лицензирование на
клиентское подключение
более выгодно, если
пользователи работают с
несколькими серверами
SQL Server 2000. Лицен- Рис. 8.45. Выбор модели лицензирования
зирование на процессор
сервера представляет интерес при работе с одним SQL Server 2000.
Считайте, выбирайте и докладывайте начальству! Но помните, что, если
Вы при установке выбрали модель Processor License For, то некоторое
время спустя Вы можете вполне легально перейти к модели лицензиро-
вания Per Seat for. Обратной дороги нет. Лицензирование на процессор
сервера становится еще более экономичным, если пользователи рабо-
тают с сервером не постоянно, а эпизодически. В этом случае в сети

144
может работать 200 пользователей, а количество одновременных со-
единений с сервером может не превышать 50. В этом случае достаточно
приобрести лицензию на 50 подключений, а не на 200. Экономить, так
экономить!
Выгрузите со своего компьютера на логическое устройство Zip250
или любое другое базу данных real estateSQL. Создайте на основном
сервере HPLH3 аналогичное логическое устройство и запустите процесс
восстановления Вашей базы данных (рис. 8.46). Выбор требуемых па-
раметров базы данных не представляет никаких сложностей (рис. 8.47).

Рис. 8.46 Перенос на основной сервер HPLH3 базы данных real estateSQL

Рис. 8.47 Выбор параметров восстановления базы данных

Если компьютер разработчика подключен к вычислительной сети


предприятия, Вам необходимо только переопределить сведения о под-
ключении для проекта Microsoft Access c помощью команды Подключе-

145
ние из меню Файл. На остальные же рабочие станции следует устано-
вить Microsoft Access 2002 и перенести на каждую файл проекта Real
Estate CS 2002.adp, выполнив аналогичное подключение к MS SQL
Server. Небольшая особенность подключения – проект Microsoft Access
должен быть запущен (рис. 8.48).

Рис. 8.48 Начало работы проекта Microsoft Access

Закройте главную кнопочную форму проекта, нажав кнопку STOP, и


оказавшись в главном меню Access при открытом проекте Real Estate
CS 2002 (рис. 8.49), запустите окно подключения (рис. 8.50).

Рис. 8.49 Запуск окна подключения проекта MS Access к MS SQL Server

146
В поле Specify or enter a
server name введите имя
сервера, на который Вы
установили MS SQL Server
(HPLH3). Если рабочая
станция «видит» сервер –
раскройте в пункте 3 спи-
сок баз данных и выберите
в нем real estateSQL. Ре-
комендую протестировать
соединение, нажав кнопку
Test Connection. В завер-
шение этой главы – не-
большое теоретическое
отступление. Microsoft Ac-
cess 2002 предоставляет
пользователю интерфейс
программирования OLE
DB, который можно с успе-
хом использовать для дос-
тупа к базе данных Micro-
Рис. 8.50 Окно подключения к MS SQL Server soft SQL Server 2000 по се-
ти и через интернет. В ар-
хитектуре OLE DB приложения, получающие доступ к данным, называ-
ют потребителями данных, а программы, обеспечивающие внутренний
доступ к данным, называют средствами доступа к базам данных. В окне
(рис. 8.50) мы как раз и получили доступ к базе данных через средство
доступа Microsoft OLE DB Provider для Microsoft SQL Server, которое ус-
танавливается автоматически при установке Microsoft Office XP (2002).
Также автоматически устанавливается OLE DB Provider для ODBC Driv-
ers и OLE DB Provider для Oracle.

8.7. Система безопасности базы данных

Когда все необходимые действия по разработке приложения клиент-


сервер закончены, можно запускать его в эксплуатацию. Сначала следу-
ет обеспечить пользователям доступ к базе данных real estateSQL. Ру-
ководство ждет от Вас грамотных действий. Плохо продуманная система
безопасности не сможет предотвратить несанкционированный доступ к
данным или их повреждение.
В главе 7.2 мы сгенерировали MS SQL Server, работающий в сме-
шанном режиме аутентификации. В этом случае помимо аутентифика-
ции средствами Windows NT пользователи могут прибегнуть к средствам

147
MS SQL Server. Это необходимо тогда, когда пользователь не имеет
учетной записи в домене Windows NT. Мне больше нравится смешанный
режим аутентификации и вот почему. В организации, как правило, име-
ются два администратора: системный администратор и администратор
базы данных, а все пользователи имеют в домене учетную запись. Бла-
годаря этому администратор базы данных может использовать уже го-
товые учетные записи. Пройдя систему защиты операционной системы,
где присутствуют ограничения на длину пароля, время его действия и
ограничено количество попыток входа, пользователь получает разреше-
ние на доступ к серверу. Разрешение на доступ к серверу не дает авто-
матического доступа к базе данных и ее объектам. На этом этапе в ра-
боту вступает администратор базы данных, который назначает пользо-
вателям права доступа в соответствии с занимаемой должностью.

8.7.1. Работа системного администратора


Пройдем этап занесения нового работника с базой real estateSQL от
начала до конца. В первую очередь добавим учетную запись в домен
Department (рис. 8.51). Пуск  Настройка  Панель управления.

Рис. 8.51 Запуск окна «Администрирование»

Выберем в появившемся окне пункт Администрирование. Появится окно


с тем же названием (рис. 8.52).

Рис. 8.52 Окно «Администрирование»

148
Нас интересует второй пункт: Active Directory – пользователи и
компьютеры, который приведет к очередному окну (рис. 8.53). В левой
части этого окна нам предстоит выбрать пункт меню Users. После чего в
правой части окна появится список пользователей и групп домена De-
partment. Добавим новую учетную запись, сделав щелчок мышью по
пиктограмме . Появится окно для занесения нового пользователя
(рис. 8.54).

Рис. 8.53 Окно «Active Directory – пользователи и компьютеры»

Обратите внимание: мы
работаем с компьютером
HPLH3, который является
контроллером домена
Department. Это означа-
ет, что локальные учет-
ные записи на HPLH3 от-
сутствуют. Все записи,
которые будут занесены
нами, относятся только к
домену. Если в окне
(рис.8.54) не будут запол-
нены все поля, то кнопка
«Далее» так и останется
погашенной, а ее необхо-
Рис. 8.54. Занесение нового пользователя димо обязательно нажать
для ввода пароля поль-
зователя. Следующее окно, которое появится после ввода пароля, носит
чисто информативный характер и здесь не приведено. Новый пользова-
тель домена Department создан. Обеспечьте ему доступ к требуемым
папкам и «передайте» его администратору базы данных.

149
8.7.2. Работа администратора базы данных
Администратор базы данных, запустив Enterprise Manager, должен
вывести на экран список пользователей MS SQL Server (рис. 8.55).

Рис. 8.55 Пользователи Microsoft SQL Server (HPLH3)

Этот рисунок несколько опередил события. Пользователя


DEPARTMENT\Гурвиц в списке пока еще не должно быть. Выполним не-
обходимые действия по занесению этой учетной записи (рис. 8.56).

Рис. 8.56. Занесение новой учетной записи SQL Server DEPARTMENT\Гурвиц

Используйте для занесения новой учетной записи в поле Name кноп-


ку , нажатие которой раскроет весь список пользователей домена

150
Department (рис. 8.57). Выберите ту учетную запись домена, которая
Вам нужна, и нажмите кнопку «Добавить». Теперь пользователь Гурвиц
получил доступ к
SQL Server HPLH3.
С первой вкладкой
рисунка 8.56
покончено. Настало
время перейти ко
второй вкладке:
Server Roles. В
SQL Server 2000
появился новый
механизм – роли.
Всего имеется две
группы ролей: роли
Рис. 8.57. Выбор нового пользователя из списка сервера и роли
базы данных.
Рассмотрим сначала роли сервера. Включив учетную запись в ту или
иную роль сервера Вы можете предоставить ей некоторый набор прав
по администрированию SQL Server (рис. 8.58).

Рис. 8.58 Роли Microsoft SQL Server 2000

Набор ролей сервера ограничен. Рассмотрим их в том порядке, в ко-


тором они приведены на рис. 8.58.
Bulk Insert Administrators – члены роли могут вставлять данные, не
имея непосредственного доступа к таблицам.
Database Creators – члены этой роли могут создавать новые базы
данных, удалять и переименовывать имеющиеся.
Disk Administrators – члены роли предназначены для обеспечения со-
вместимости с предыдущими версиями SQL-сервер.

151
Process Administrators – члены этой роли могут управлять процесса-
ми, которые реализует SQL-сервер.
Security Administrators – члены этой роли имеют возможность созда-
вать новые учетные записи.
Server Administrators – члены этой роли имеют право выполнять ад-
министрирование сервера.
Setup Administrators – члены этой роли могут управлять связанными
серверами, конфигурировать хранимые процедуры, запускаемые авто-
матически при старте SQL Server.
Sistems Administrators - члены этой роли имеют абсолютные права в
SQL Server.
Системный администратор может очень гибко контролировать SQL
Server, распределив права управления между несколькими пользовате-
лями. Каждый пользователь из этого числа может выполнять строго ог-
раниченный круг задач. Для этого необходимо включить учетную запись
в ту или иную роль сервера.
Вернемся к третьей вкладке рисунка 8.56. Она называется Database
Access (рис. 8.59). Отметьте
флажком в верхней части окна
базу данных, с которой будет
работать пользователь. В
нижней части окна появятся
роли этой базы данных, кото-
рые дают возможность значи-
тельно упростить защиту базы
данных и ее объектов. Пере-
числим возможности пользо-
вателя, которому доступна та
или иная роль базы данных.
Db_owner – владелец базы
данных. Может выполнять лю-
бые действия с ней.
Db_accessadmin – члены
этой роли имеют право назна-
чать и удалять пользователей
базы данных. Рис. 8.59. Роли базы данных
Db_securityadmin – члены
роли могут управлять правами доступа к объектам базы данных других
пользователей и членством их в тех или иных ролях.
Db_ddladmin – эта роль предоставляет возможность создавать, из-
менять и удалять объекты базы данных.
Db_denydatawriter – членам этой роли запрещено изменение дан-
ных независимо от того, какие им разрешения были выданы в другой

152
роли. Эта роль предназначена для временной отмены былых полномо-
чий.
Db_denydatareader - членам этой роли запрещен просмотр данных
независимо от того, какие им разрешения были выданы в другой роли.
Db_datawriter – члены этой роли могут изменять данные в любой
таблице или представлении.
Db_datareader – члены этой роли могут читать данные в любой таб-
лице или представлении.
Db_backupoperator – могут выполнять резервное копирование базы.

Вернемся к нашему пользователю DEPARTMENT\Гурвиц. Мы не


включили его ни в одну из ролей сервера и базы данных. Если он запус-
тит проект Microsoft Access Real Estate CS 2002 на своей рабочей стан-
ции, то его ждет разочарование (рис. 8.60), так как его роль в базе дан-
ных real estateSQL – public (рис. 8.59) – чисто символическая.

Рис. 8.60 Недостаток полномочий для работы с базой real estateSQL

Исправим существующее положение, добавив полномочий вновь


созданному, практически бесправному, пользователю базы данных real
estateSQL Department\Гурвиц (рис. 8.61).

Рис. 8.61 Доступ к окну свойств пользователя базы real estateSQL

Раскроем компонент базы данных real estateSQL Users. Двойной


щелчок мышью откроет в центре окна двух пользователей. Первый –
администратор базы данных (он же dbo) нас не интересует. Он создал

153
ее и является ее полноправным владельцем. А второй должен работать
с этой базой. Какие права он имеет в настоящий момент (рис. 8.62)?

Рис. 8.62 Права доступа к базе данных нового пользователя

Опять мне пришлось немного забежать вперед и расставить флажки


в нужных местах. Последуйте моему примеру – и у Вас все получится!
Не забудьте про кнопку «Columns». Права доступа можно расставить на
уровне столбцов любой таблицы (рис. 8.63).

Рис. 8.63. Права доступа нового пользователя на уровне таблицы Building

154
8.8. Управление блокировками

При одновременной работе в сети нескольких пользователей в на-


шем варианте им не требуется предпринимать никаких действий по
управлению блокировками, так как исходя из особенностей поставщика
SQLOLEDB, Вам, как разработчику достается практически лишь один
вид блокировки – оптимистическая блокировка на уровне записи. При
этом модернизировать проект Microsoft Access не требуется. Рассмот-
рим этот вид блокировки на примере. Допустим, что два пользователя
решили отредактировать имя Ивановой Марины Петровны, проживаю-
щей на Проспекте 60 лет Октября 102, кв.1 (рис. 8.64).

Рис. 8.64. Данные до одновременной корректировки с двух компьютеров

Пользователь компьютера 23.11.56 исправил Марину на Мариану и


сделал это несколько раньше,
чем пользователь компьютера
14.02.83, успешно завершив кор-
ректировку (рис.8.65). Пользова-
тель 14.02.83 исправил Марину
Рис. 8.65. Результаты корректировки, на Марию (рис. 8.66) и также ре-
выполненной с компьютера 23.11.56 шил завершить корректировку.

155
Рис. 8.66. Результат корректировки с компьютера 14.02.84

Завершение корректировки окончилось появлением сообщения о кон-


фликте в работе двух пользователей (рис.8.67). Очевидно, что самое
разумное решение в этом случае - просмотреть результаты корректи-
ровки, которую выпол-
нил первый пользова-
тель (рис. 8.68) и при-
нять правильное ре-
шение, записав в базу
данных либо свои из-
менения, либо изме-
нения, сделанные
Рис. 8.67. Окно «Конфликт записи» коллегой.
Внимание. Рисунки
8.64 и 8.65 видит
пользователь компью-
тера 23.11.56. Рисунки
8.66, 8.67 и 8.68 поя-
вятся на дисплее ком-
Рис. 8.68. Содержимое буфера обмена с результа- пьютера 14.02.83.
тами корректировки пользователя 23.11.56

156
Для просмотра исправлений, выполненных первым пользователем,
нажмите кнопку (рис.8.67) «Копировать в буфер». Все исправления ока-
жутся в буфере обмена Office. Для просмотра содержимого буфера
(рис.8.69) выберите в главном меню Microsoft Access пункт «Правка», а в
открывшемся всплывающем меню – пункт «Буфер обмена Office». Для
удобства просмотра все эти объекты собраны в один рисунок.

Рис. 8.69. Просмотр содержимого буфера обмена Office

И снова немного теории. Вы уже наверняка знаете, что при оптими-


стической блокировке, записи блокируются только на время их обновле-
ния (доли секунды), а при пессимистической блокировке – на период от
начала корректировки до завершения обновления (значительный период
времени). Мы уже выяснили, что проект Microsoft Access автоматически
поддерживает оптимистическую блокировку MS SQL Server через ADO.
Это огромная помощь разработчику, так как никому из пользователей не
будет отказано в доступе к записи, пока она кем-то редактируется. Од-
нако оптимистическая блокировка позволяет нескольким пользователям
одновременно редактировать одну и туже запись, при этом в базу попа-
дают изменения, выполненные последним пользователем.
В некоторых случаях без пессимистической блокировки не обойтись!
Например, продажа билетов на поезда дальнего следования.
Но здесь нас ждет разочарование. Похоже, что текущие версии Mi-
crosoft Access и Microsoft SQL Server не позволяют использовать в про-
екте Access этот вид блокировки. Потратив уйму времени, мне так и не
удалось найти приемлемого решения. Слово за Вами!

157
9. ЗАДАНИЯ НА КУРСОВОЙ ПРОЕКТ (РАБОТУ)

Курсовой проект выполняется в несколько этапов. На первом этапе


Вам предлагается разобраться в предметной области базы данных, вы-
яснить какая информация и для чего используется. После этого – пре-
образовать недостаточно структурированную информацию в таблицы
Microsoft Access 2002 и спроектировать структуру данных. Здесь же
должен быть разработан проект будущего прикладного программного
обеспечения. Предлагаемая формулировка заданий на курсовое проек-
тирование представляет собой в лучшем случае лишь ту информацию,
которую Вы получили бы со слов заказчика, и ни в коей мере не претен-
дует на полноту и завершенность. Конкретизация и уточнение постав-
ленной задачи возлагается на разработчика (студента). Может оказать-
ся, что обеспечение всех потребностей возможного пользователя не
может быть достигнуто за время, выделенное для выполнения курсового
проекта (работы). В этом случае необходимо согласовать с преподава-
телем часть функций, составляющих ядро реального приложения.
Второй этап представляет собой разработку прикладного программ-
ного обеспечения, в результате которого должен получиться однополь-
зовательский законченный программный продукт, пригодный для опыт-
ной эксплуатации пользователем без участия разработчика. Рекоменду-
ется провести его апробацию силами потенциального пользователя или
обратиться к преподавателю.
Третий этап предстоит пройти студентам, обучающимся на компью-
терных специальностях. Он заключается в генерации MS SQL Server
2000 Developer Edition и преобразовании базы данных Access 2002 в ба-
зу данных MS SQL Server. В процессе работы мастера выдается отчет,
содержащий подробное описание всех созданных объектов и перечень
ошибок, возникших в ходе процесса. Скорее всего, третий этап потребу-
ет модификации как клиентской, так и серверной частей приложения.
Желающие могут установить драйвер ODBC, позволяющий подключить
любой другой по своему выбору программный продукт к базе данных MS
SQL Server, и заново написать на нем клиентскую часть приложения.
Четвертый этап – перенос приложения на действующий сервер ре-
альной локальной вычислительной сети - выполняется при наличии тех-
нических возможностей кафедры.
Хочу выделить некоторые требования, подтверждающие квалифика-
цию разработчика прикладного программного обеспечения. Программ-
ный комплекс не должен терять работоспособности при некорректных
действиях пользователя. В интерфейсе должны использоваться только
термины, понятные пользователю. Появление англоязычных сообщений
СУБД недопустимо. Язык диалога должен категорически исключить ком-
пьютерный сленг.

158
Вариант 1. Разработать прикладное программное обеспечение дея-
тельности депо по ремонту пассажирских вагонов. Депо выполняет не-
сколько видов ремонта. Деповской ремонт – после пробега вагоном 450
тыс. км. или два года эксплуатации (что наступит раньше). TO-2 – под-
готовка вагона к зимним или летним условиям эксплуатации. ТО-3 – те-
кущее обслуживание – после пробега 150 тыс. км. или один год эксплуа-
тации. Текущий ремонт – круглосуточно, при котором ремонтируются ва-
гоны всех дорог России. Основные причины поступления вагона в теку-
щий ремонт: неисправность колесной пары, неисправность буксового
узла и т.д. Каждый вагон имеет уникальный номер. Тип вагона также
имеет значение при ремонте: купейный, СВ, плацкартный, почтовый, ба-
гажный. Каждый вагон приписан к дирекции по обслуживанию пассажи-
ров (ДОП-1, ДОП-2, ДОП-3 и т.д.). Текущий ремонт выполняют ремонт-
ные бригады в четыре смены. Для выполнения остальных ремонтов
привлекается, как правило, одна бригада. За высокое качество ремонта
члены бригады получают премию.
Таблица 9.1
Набор данных к варианту 1

№ Поле Тип Размер Описание


1 RegNumber Числовой 10 Регистрационный номер вагона
2 RegName Текстовый 60 Приписка вагона к дороге
3 RegChief Текстовый 20 Приписка вагона к дирекции
4 Type Текстовый 20 Тип вагона (купейный, СВ, и т.д.)
5 TypeYear Числовой 4 Год выпуска вагона
6 TypeRepair Текстовый 39 Тип ремонта
7 Picture Поле OLE Авто Фотография вагона
8 Money Денежный 15 Стоимость ремонта
9 Bonus Логический 1 Качество ремонта (отличное/по нормам)
10 BonusPercent Числовой 2 Премия в процентах (общая)
11 DateStart Дата/Время Авто Начало ремонта
12 DateStop Дата/Время Авто Окончание ремонта
13 Reason Текстовый 40 Причина поступления в ремонт
14 External Логический 1 Внешняя/Местная железная дорога
15 BankExternal Текстовый 60 Банк внешней железной дороги
16 InnExternal Числовой 10 ИНН внешней железной дороги
17 AddressExternal Текстовый 80 Юридический адрес внешней ж/дороги
18 FIOchief Текстовый 40 ФИО бригадира
19 Base Текстовый 15 Образование бригадира (ВУЗ)
20 FIOworker Текстовый 40 ФИО работника
21 BaseWorker Числовой 15 Образование работника (ВУЗ)
22 YearWorker Числовой 2 Стаж работы
23 SpecialWorker Текстовый 30 Основная специальность работника
24 BonusWorker Денежный 15 Премия в рублях работнику
25 Comment Поле Memo Авто Примечания (за что премия)
26 NumberBankKart Текстовый 60 Номер карты для перечисления З/П

159
Вариант 2. Разработать прикладное программное обеспечение дея-
тельности ремонтно-эксплуатационного локомотивного депо. Депо вы-
полняет несколько видов ремонта: текущий ремонт (ТР), средний ремонт
(СР), Техническое обслуживание (ТО) и внеплановый ремонт. При вне-
плановом ремонте локомотив снимается с рейса и заменяется резерв-
ным, поэтому сроки внепланового ремонта должны быть минимальными,
а сам ремонт проводится порой в четыре смены. Каждый локомотив
имеет уникальный номер и приписан к определенному локомотивному
депо. Технология ремонта зависит от типа локомотива (пассажирский
или грузовой). Для выполнения первых трех видов ремонта привлекает-
ся, как правило, одна бригада. За высокое качество выполненных работ
члены бригады получают дополнительное вознаграждение (квартальная
премия, месячная премия, 13 и 14 зарплата). За переработку (сверх-
урочные) также выплачиваются дополнительные суммы.
Таблица 9.2
Набор данных к варианту 2

№ Поле Тип Размер Описание


1 RegNumber Числовой 10 Регистрационный номер локомотива
2 RegName Текстовый 60 Приписка локомотива к депо
3 Kind Текстовый 20 Марка локомотива (ВЛ-80с, ВЛ-80р и т.д.)
4 Type Текстовый 20 Тип локомотива (грузовой, пассажирский)
5 TypeYear Числовой 4 Год выпуска локомотива
6 TypeRepair Текстовый 39 Тип ремонта
7 Picture Поле OLE Авто Фотография локомотива
8 Money Денежный 15 Стоимость ремонта
9 Bonus Логический 1 Качество ремонта (отличное/по нормам)
10 BonusPercent Числовой 2 Премия в процентах (общая)
11 DateStart Дата/Время Авто Начало ремонта
12 DateStop Дата/Время Авто Окончание ремонта
13 Reason Текстовый 40 Причина поступления в ремонт
14 External Логический 1 Внешнее/Местное депо
15 BankExternal Текстовый 60 Банк внешнего депо
16 InnExternal Числовой 10 ИНН внешнего депо
17 AddressExternal Текстовый 80 Юридический адрес внешнего депо
18 FIOchief Текстовый 40 ФИО бригадира
19 Base Текстовый 15 Образование бригадира (ВУЗ)
20 FIOworker Текстовый 40 ФИО работника
21 BaseWorker Числовой 15 Образование работника (ВУЗ)
22 YearWorker Числовой 2 Стаж работы
23 SpecialWorker Текстовый 30 Основная специальность работника
24 BonusWorker Денежный 15 Премия в рублях работнику
25 Comment Поле Memo Авто Примечания (за что премия)
26 NumberBankKart Текстовый 60 Тип премии

160
Вариант 3. Разработать прикладное программное обеспечение дея-
тельности судоходной компании «Балтика». Эта крупная компания зани-
мается перевозками грузов между континентами. В ее собственности не-
сколько десятков судов различного класса и грузоподъемности. К услугам
этой компании обращаются тысячи клиентов из различных стран мира.
На судне может находиться несколько партий грузов для различных
грузополучателей из различных стран и городов. Одна партия груза мо-
жет состоять из нескольких разновидностей грузов. У одной партии груза
может быть только один отправитель и только один получатель.
Судно следует по маршруту. Маршрут разрабатывается главным ме-
неджером компании и проходит через несколько портов. В очередном
порту назначения производится лишь частичная погрузка и выгрузка гру-
зов, и судно следует дальше.
Таблица 9.3
Набор данных к варианту 3

№ Поле Тип Размер Описание


1 RegNumber Числовой 10 Регистрационный номер судна
2 Name Текстовый 60 Название судна
3 Skipper Текстовый 60 ФИО капитана судна
4 Type Текстовый 15 Тип судна (танкер, сухогруз)
5 Capacity Числовой 10 Грузоподъемность судна
6 Year Числовой 4 Год постройки судна
7 Picture Поле OLE Авто Фотография судна
8 Dockyard Текстовый 15 Порт приписки
9 CustomValue Числовой 10 Таможенный номер партии груза
10 DepartureDate Дата Авто Дата убытия груза
11 ArriveDate Дата Авто Дата прибытия груза
12 Origin Текстовый 20 Пункт отправления
13 Destination Текстовый 20 Пункт назначения
14 CustomClearance Логический 1 Необходимость таможенной декларации
15 Number Числовой 4 Номер груза в партии
16 Shipment Текстовый 30 Название груза
17 DeclareValue Числовой 8 Заявленная величина груза
18 Unit Текстовый 10 Единица измерения груза
19 InsureValue Числовой 8 Застрахованная величина груза
20 Sender Текстовый 30 Отправитель груза
21 INNsender Числовой 10 ИНН отправителя груза
22 BankSender Текстовый 60 Банк отправителя груза
23 AddressSender Текстовый 80 Юридический адрес отправителя груза
24 Consignee Текстовый 30 Получатель груза
25 INNconsignee Числовой 10 ИНН получателя груза
26 BankConsignee Текстовый 60 Банк получателя груза
27 AddressConsign Текстовый 80 Юридический адрес получателя груза
28 Comment Поле Memo Авто Примечания

161
Вариант 4. Разработать прикладное программное обеспечение дея-
тельности учреждения юстиции. По существующему законодательству
на это учреждение возложена обязанность регистрации прав юридиче-
ских и физических лиц на недвижимое имущество (здания, квартиры,
земельные участки). В этом задании вам необходимо разработать лишь
часть программного комплекса, обеспечивающего регистрацию прав
граждан на квартиры. Имейте в виду! В здании несколько квартир. В од-
ной квартире – несколько собственников, причем в базе данных должна
храниться история перехода квартиры от одних собственников к другим.
Кадастровый номер здания однозначно определяет его среди других
зданий города. Смело используйте его в качестве первичного ключа
таблицы зданий.
Таблица 9.4
Набор данных к варианту 4

№ Поле Тип Размер Описание


1 Kadastr Текстовый 20 Кадастровый номер здания
2 Address Текстовый 60 Адрес здания
3 District Текстовый 15 Район города
4 Land Числовой 10 Площадь земельного участка
5 Year Числовой 4 Год постройки здания
6 Material Текстовый 15 Материал стен здания
7 Base Текстовый 15 Материал фундамента
8 Comment Поле Memo Авто Примечания
9 Wear Числовой 2 Износ в процентах
10 Flow Числовой 2 Число этажей в здании
11 Line Числовой 5 Расстояние от центра города
12 Square Числовой 10 Площадь нежилых помещений
13 Picture Поле OLE Авто Фото здания
14 Flats Числовой 3 Количество квартир в здании
15 Elevator Логический 1 Наличие лифта
16 Flat Числовой 4 Номер квартиры
17 Storey Числовой 2 Номер этажа
18 Rooms Числовой 1 Количество комнат
19 SquareFlat Числовой Авто Общая площадь квартиры
20 Dwell Числовой Авто Жилая площадь квартиры
21 Branch Числовой Авто Вспомогательная площадь квартиры
22 Balcony Числовой Авто Площадь балкона
23 Height Числовой Авто Высота квартиры
24 Record Числовой 2 Номер записи о праве собственности
25 Document Текстовый 60 Документ на право собственности
26 DateDoc Дата Авто Дата документа о собственности
27 FioHost Текстовый 60 Ф.И.О. собственника
28 Passport Поле Memo Авто Данные его паспорта
29 Part Числовой Авто Принадлежащая ему доля, %
30 Born Числовой 4 Год рождения собственника

162
Вариант 5. Разработать прикладное программное обеспечение дея-
тельности малого научно-внедренческого предприятия «Квадро». Это
предприятие занимается прокладкой компьютерных сетей и разработкой
программных комплексов для организаций нашего города.
Численность работников в «Квадро» – примерно 80 человек. Одновре-
менно находится в разработке до 30 проектов. Один разработчик может
участвовать в нескольких проектах одновременно, но зарплата его от это-
го не зависит. Одна организация может заказать в «Квадро» несколько
разработок. Стоимость каждого проекта оговаривается отдельно. При дос-
рочном выполнении работы заказчик перечисляет научно-внедренческому
предприятию определенный, заранее оговоренный процент премии.
Таблица 9.5
Набор данных к варианту 5

№ Поле Тип Размер Описание


1 EmployeeID Числовой 3 Идентификатор работника
2 EmployeeName Текстовый 60 ФИО работника
3 Address Текстовый 60 Домашний адрес
4 District Текстовый 15 Район города
5 Experience Числовой 2 Опыт работы по специальности
6 Year Числовой 4 Год рождения
7 Language Текстовый 15 Базовый язык программирования
8 Base Текстовый 15 Образование (вуз)
9 Comment Поле Memo Авто Примечания
10 Salary Денежный 15 Зарплата
11 Bonus Денежный 15 Премия
12 GrossSalary Денежный 15 Полная зарплата
13 Exempt Денежный 15 Льготы
14 Picture Поле OLE Авто Фото работника
15 ProjectID Числовой 3 Идентификатор проекта
16 ProjectName Текстовый 40 Название проекта
17 ProjectStart Дата Авто Дата начала проекта
18 ProjectStop Дата Авто Дата окончания проекта
19 Chief Текстовый 60 Руководитель проекта
20 Customer Текстовый 60 Заказчик проекта
21 Cost Числовой Авто Стоимость разработки
22 Phone Текстовый 10 Телефон заказчика
23 Bank Текстовый 60 Банк заказчика
24 Account Текстовый 20 Номер счета в банке
25 INN Текстовый 10 ИНН заказчика
26 AddressCust Текстовый 60 Адрес заказчика
27 FioWorker Текстовый 60 Ответственный от заказчика
28 PhoneWorker Текстовый 10 Телефон ответственного
29 BonusAll Числовой Авто Премия, %, при досрочном выполнении
30 EmployeeStart Дата Авто Начало участия работника в проекте
31 EmployeeStop Дата Авто Конец участия работника в проекте

163
Вариант 6. Разработать прикладное программное обеспечение дея-
тельности ООО «Киновидеопрокат». Это предприятие фактически контро-
лирует демонстрацию кинофильмов в кинотеатрах города. Отдел маркетин-
га, изучив ситуацию на рынке кинофильмов, принимает решение о покупке
тех или иных кинолент. Отдел закупок претворяет эти решения в жизнь,
причем лента может быть куплена как у производителя, так и у посредника.
Отдел аренды киновидеопроката сдает закупленные фильмы кинотеат-
рам города в аренду. Так как всегда закупается только одна копия фильма,
он не может демонстрироваться одновременно в нескольких кинотеатрах.
У одного поставщика может быть куплено несколько фильмов. Также не-
сколько лент может быть в аренде у одного кинотеатра одновременно.
Таблица 9.6
Набор данных к варианту 6

№ Поле Тип Размер Описание


1 Provider Текстовый 40 Поставщик кинофильма
2 INN Текстовый 10 ИНН поставщика кинофильма
3 Address Текстовый 60 Юридический адрес поставщика
4 Bank Текстовый 60 Банк поставщика кинофильма
5 Account Текстовый 20 Номер счета в банке
6 Sign Логический 1 Признак посредника
7 Film Текстовый 20 Название кинофильма
8 Script Текстовый 60 Автор сценария
9 Comment Поле Memo Авто Краткое содержание фильма
10 Producer Текстовый 60 Режиссер-постановщик
11 Company Текстовый 40 Компания-производитель
12 Year Числовой 4 Год выхода на экран
13 Expense Денежный 15 Затраты на производство
14 Cost Денежный 15 Стоимость приобретения
15 Translate Логический 1 Наличие дублирования
16 Cinema Текстовый 20 Название кинотеатра
17 INNcinema Текстовый 10 ИНН кинотеатра
18 AddressCinema Текстовый 60 Адрес кинотеатра
19 Chief Текстовый 60 Директор кинотеатра
20 Owner Текстовый 60 Владелец кинотеатра
21 BankCinema Текстовый 60 Банк кинотеатра
22 Phone Текстовый 10 Телефон кинотеатра
23 District Текстовый 15 Район города
24 AccountCinema Текстовый 20 Номер счета кинотеатра в банке
25 Capacity Числовой 4 Число посадочных мест
26 DateStart Дата Авто Дата начала демонстрации фильма
27 DateStop Дата Авто Окончание демонстрации
28 PhoneWorker Текстовый 10 Телефон ответственного
29 Worker Текстовый 60 Ответственный от кинотеатра
30 Summa Денежный 15 Сумма оплаты за аренду ленты
31 Tax Денежный 15 Пени за несвоевременный возврат

164
Вариант 7. Разработать прикладное программное обеспечение дея-
тельности предприятия LADA-сервис. Эта крупная компания занимается
продажей автомобилей марки ВАЗ в нашем городе. Она имеет несколь-
ко филиалов в разных районах. Автомобиль может быть продан как со
склада компании, так и на заказ с завода-изготовителя по предоплате.
Покупатель может заказать модель, цвет, тюнинг и оговорить срок по-
ставки заказанного автомобиля. Одновременно с новыми авто на пло-
щадках компании имеется большой выбор подержанных автомобилей,
как отечественных, так и иностранных. Покупателем может быть как фи-
зическое лицо, так и организация. В первом случае – расчет наличными,
во втором – через банк. Расчет производится в рублях.
Таблица 9.7
Набор данных к варианту 7

№ Поле Тип Размер Описание


1 IDfilial Числовой 1 Регистрационный номер филиала
2 Filial Текстовый 20 Название филиала предприятия
3 InnFilial Текстовый 10 ИНН филиала предприятия
4 Chief Текстовый 60 Руководитель филиала
5 Capacity Числовой 3 Число стояночных мест на площадке
6 Address Текстовый 60 Адрес филиала предприятия
7 Phone Текстовый 10 Номер телефона филиала
8 Brand Текстовый 15 Марка автомобиля
9 Model Текстовый 15 Модель автомобиля
10 BodyID Текстовый 20 Номер кузова
11 EngineID Текстовый 20 Номер двигателя
12 BodyModel Текстовый 20 Модель кузова
13 Picture Поле OLE Авто Фотография автомобиля
14 Volume Числовой 5 Объем двигателя
15 Power Числовой 3 Мощность двигателя, л.с.
16 Helm Логический 1 Руль (правый/левый)
17 Drive Логический 1 Привод на все колеса
18 DateStart Дата Авто Дата появления в продаже
19 Cost Денежный 15 Стоимость автомобиля
20 New Логический 1 Новый/подержанный
21 Year Числовой 4 Год выпуска автомобиля
22 Distance Числовой 6 Пробег автомобиля, км
23 Type Текстовый 15 Тип кузова автомобиля
24 Client Текстовый 60 Покупатель автомобиля
25 Sign Логический 1 Признак покупателя (юр/физ. лицо)
26 Bank Текстовый 60 Банк покупателя
27 Account Текстовый 20 Номер счета в банке
28 Comment Поле Memo Авто Примечания
29 Customer Текстовый 60 Заказчик
30 Price Денежный 15 Стоимость заказанного автомобиля
31 StartDate Дата Авто Дата заказа

165
Вариант 8. Разработать прикладное программное обеспечение
торгово-посреднической фирмы «Столица». Бизнес этого предприятия
предельно прост: «покупай дешевле – продавай дороже», или состыкуй
продавца и покупателя и получи «комиссионные». Основной упор фирма
делает на закупки продуктов питания в других регионах страны и за рубе-
жом – там, где они производятся и стоят дешевле, чем в нашем регионе.
Часть продукции может быть закуплена и у местных продавцов.
В этом случае фирма получает прибыль за счет того, что крупные пар-
тии товара стоят дешевле, чем мелкие.
Имейте в виду, что товар не может быть продан дешевле, чем он ку-
плен.
Таблица 9.8
Набор данных к варианту 8

№ Поле Тип Размер Описание


1 Seller Текстовый 60 Фирма – продавец товара
2 InnSeller Текстовый 10 ИНН продавца
3 Country Текстовый 15 Страна продавца
4 Chief Числовой 60 Руководитель фирмы
5 Address Числовой 60 Юридический адрес фирмы
6 Phone Текстовый 10 Телефон руководителя
7 Manager Текстовый 60 Главный менеджер фирмы
8 PhonePlus Текстовый 10 Телефон отдела продаж
9 Bank Текстовый 60 Банк продавца
10 Account Текстовый 20 Номер счета в банке
11 GoodsID Числовой 10 Штрих-код товара
12 Goods Текстовый 30 Название товара
13 Picture Поле OLE Авто Фото товара
14 Category Текстовый 15 Категория товара (кофе, печенье)
15 DateStart Дата Авто Дата изготовления товара
16 Period Числовой 4 Срок хранения товара, дн.
17 Manufacturer Текстовый 60 Изготовитель товара
18 Unit Текстовый 10 Единица измерения
19 CostUnit Денежный 15 Цена за единицу
20 Count Числовой Авто Количество товара
21 Client Текстовый 60 Покупатель товара
22 InnClient Текстовый 10 ИНН покупателя
23 Director Текстовый 60 Руководитель фирмы-покупателя
24 PhoneDir Текстовый 10 Телефон директора
25 AddressClient Текстовый 60 Юридический адрес фирмы
26 BankClient Текстовый 60 Банк покупателя
27 AccountClient Текстовый 20 Номер счета в банке
28 Volume Числовой Авто Количество купленного товара
29 CostUnitVol Денежный 15 Цена за единицу
30 DateVolume Дата Авто Дата покупки товара
31 Comment Поле Мемо Авто Примечания

166
Вариант 9. Разработать прикладное программное обеспечение дея-
тельности отдела гарантийного ремонта товаров фирмы «Народная тор-
говая компания». Это предприятие – лидер продаж кондиционеров, те-
левизоров и другой бытовой техники в городе. Хорошо известно, что
техника часто выходит из строя, причем уже в период гарантийного сро-
ка, а в этом случае продавец товара должен бесплатно отремонтиро-
вать его. Ежедневно в отдел гарантийного ремонта обращаются не-
сколько десятков человек, купивших технику в этой компании. Вы, ско-
рее всего, также побывали в отделе гарантийного ремонта, что очень
поможет Вам при разработке программного обеспечения.
Таблица 9.9
Набор данных к варианту 9

№ Поле Тип Размер Описание


1 IDfilial Числовой 1 Регистрационный номер филиала
2 Filial Текстовый 20 Название филиала предприятия
3 InnFilial Текстовый 10 ИНН филиала предприятия
4 Chief Текстовый 60 Руководитель филиала
5 Capacity Числовой 3 Количество работающих на ремонте
6 Address Текстовый 60 Адрес филиала предприятия
7 Phone Текстовый 10 Номер телефона филиала
8 GoodsID Текстовый 15 Штрих-код товара
9 Goods Текстовый 40 Название товара или прибора
10 Categoty Текстовый 20 Категория (утюг, миксер)
11 Country Текстовый 20 Страна–производитель
12 Company Текстовый 40 Изготовитель
13 Picture Поле OLE Авто Фотография товара или прибора
14 INNcompany Текстовый 10 ИНН изготовителя
15 AdddressComp Текстовый 60 Адрес изготовителя
16 DateStart Дата Авто Дата изготовления товара
17 Period Числовой 4 Гарантийный период
18 DateBuy Дата Авто Дата покупки
19 Cost Денежный 15 Стоимость товара
20 Fax Текстовый 12 Номер факса компании
21 PhoneCompany Текстовый 12 Телефон компании
22 Email Текстовый 20 Адрес электронной почты компании
23 Web Текстовый 20 Адрес WEB-страницы
24 CostRepair Денежный 15 Стоимость ремонта
25 CustomerID Числовой 5 Идентификатор покупателя
26 Customer Текстовый 60 Покупатель
27 AddressCust Текстовый 60 Адрес покупателя
28 Comment Поле Memo Авто Примечания (что было сделано)
29 Sign Логический 1 Признак покупателя (юр/физ. лицо)
30 Guarantee Числовой 5 Оставшийся гарантийный срок
31 StartDate Дата Авто Дата приемки в ремонт
32 StopDate Дата Авто Дата получения

167
Вариант 10. Разработать прикладное программное обеспечение дея-
тельности отдела учета личного состава батальона железнодорожных
войск. Это фактически отдел кадров воинской части. Батальон расквар-
тирован на отдельной территории. В батальоне несколько рот, в каждой
роте несколько взводов, каждый взвод состоит из трех отделений.
В мирное время батальон занимается изучением техники и поддер-
жанием ее в рабочем состоянии. Часть технических ресурсов “законсер-
вирована”. Поддержание такой техники в отличном состоянии также
входит в обязанности личного состава батальона. В настоящее время
существует три вида службы: срочная, сверхсрочная и по контракту. Ка-
ждый офицер части имеет удостоверение личности, которое заменяет
паспорт, а военнослужащий срочной службы – военный билет.

Таблица 9.10
Набор данных к варианту 10

№ Поле Тип Размер Описание


1 Number Текстовый 15 Номер воинской части
2 Battalion Текстовый 30 Название батальона
3 Commander Текстовый 50 ФИО командира батальона
4 Rank Текстовый 20 Воинское звание командира
5 ViceCommander Текстовый 50 ФИО зам. командира батальона
6 Rank2 Текстовый 20 Воинское звание зам. командира
7 Photo Поле OLE Авто Фото командира батальона
8 Commander2 Текстовый 50 ФИО командира роты
9 Rank3 Текстовый 20 Звание командира роты
10 Passport Текстовый 20 Удостоверение личности
11 CompanyID Числовой 1 Номер роты
12 CompanyName Текстовый 20 Название роты
13 Photo2 Поле OLE Авто Фото командира роты
14 PlatoonID Числовой 1 Номер взвода
15 Commander3 Текстовый 50 ФИО командира взвода
16 Rank4 Текстовый 20 Звание командира взвода
17 Photo3 Поле OLE Авто Фото командира взвода
18 PlatoonName Текстовый 20 Название взвода
19 DepartmentID Числовой 1 Номер отделения
20 Soldier Текстовый 50 ФИО военнослужащего
21 Post Текстовый 20 Должность (командир/солдат)
22 Rank5 Текстовый 20 Звание военнослужащего
23 Start Дата Авто Начало службы
24 Stop Дата Авто Конец службы
25 Kind Логический 1 Вид службы (срочная или контрактная)
26 Address Текстовый 60 Адрес проживания
27 Phone Текстовый 15 Домашний телефон
28 Comment Поле Memo Авто Примечание
29 Birth Числовой 4 Год рождения

168
Вариант 11. Разработать прикладное программное обеспечение
деятельности отдела учета домовладений. «Бюро технической инвента-
ризации». В состав домовладения входят земельный участок и несколь-
ко строений. Их называют литерами: жилой дом, летняя кухня, гараж,
колодец, забор и т.д.
Для жилого дома составляется экспликация, в которой указываются
данные по каждому помещению. Экспликация может быть составлена и
для других крупных строений. В ее состав входит: номер квартиры, но-
мер помещения на плане, этаж, назначение помещения, площадь, высо-
та и т.п. Для вспомогательных литер (забор, тротуар, колодец) экспли-
кация не заполняется.
Таблица 9.11
Набор данных к варианту 11

№ Поле Тип Размер Описание


1 Number Числовой 5 Уникальный номер домовладения
2 Block Текстовый 20 Номер квартала
3 Address Текстовый 60 Адрес домовладения
4 District Текстовый 15 Район города
5 Inventory Дата Авто Дата инвентаризации домовладения
6 Land Числовой Авто Площадь земельного участка
7 Actual Числовой Авто Фактическая площадь участка
8 BuildUp Числовой Авто Площадь застройки
9 Yard Числовой Авто Площадь двора
10 Green Числовой Авто Площадь озеленения
11 Garden Числовой Авто Площадь огорода
12 Bad Числовой Авто Неудобья
13 Picture Поле OLE Авто Фотография домовладения
14 Light Логический 1 Освещение
15 WaterPipe Логический 1 Водопровод
16 Heating Логический 1 Отопление
17 Comment Поле Memo Авто Примечания
18 Letter Числовой 2 Номер сооружения (литеры)
19 Contents Текстовый 20 Назначение сооружения
20 Type Числовой 1 Тип литеры (осн./вспомогательная)
21 MySelf Логический 1 Возведено самовольно
22 Year Числовой 4 Год постройки
23 SquareAll Числовой 4 Общая площадь литеры
24 Inhabited Числовой 4 Жилая площадь
25 Wear Числовой 2 Износ в процентах
26 Wall Текстовый 15 Материал стен
27 Cost Денежный 15 Инвентаризационная стоимость литеры
28 Storeys Числовой Авто Этажность
29 NumberSign Числовой 2 Номер помещения в экспликации
30 Prescribe Текстовый 20 Назначение помещения
31 SquareRoom Числовой Авто Площадь помещения
32 HighRoom Числовой Авто Высота помещения
33 Storey Числовой Авто Этаж, на кот. расположено помещение

169
Вариант 12. Разработать прикладное программное обеспечение дея-
тельности отдела кадров университета. В отделе кадров университета
находятся данные всех сотрудников: от преподавателя до ректора, и их
трудовой деятельности. Наряду с такими данными, как специальность
сотрудника и занимаемая должность, обязательно учитываются сведе-
ния об ученой степени сотрудника (кандидат наук, доктор) и ученом зва-
нии (доцент, профессор). Также в отделе кадров хранится информация
о трудовой деятельности сотрудника: о предыдущих местах работы,
сроке работы и предприятии. Отдел кадров занимается подготовкой
трудовых договоров с преподавателями после избрания их по конкурсу
на очередной срок. Также в его ведении находятся сведения о наложе-
нии взысканий на сотрудников и их поощрениях. Взыскания в трудовую
книжку не заносятся, а хранятся в электронном виде.
Таблица 9.12
Набор данных к варианту 12

№ Поле Тип Размер Описание


1 PersonID Числовой 5 Регистрационный номер сотрудника
2 Name Текстовый 40 ФИО сотрудника
3 Department Текстовый 40 Название кафедры, на которой работает
4 Institute Текстовый 40 Название института (департамента)
5 Birth Дата Авто Дата рождения сотрудника
6 Place Текстовый 20 Место рождения
7 Address Текстовый 60 Домашний адрес сотрудника
8 Phone Текстовый 15 Домашний телефон сотрудника
9 Education Текстовый 40 Оконченный ВУЗ
10 Year Числовой 4 Год окончания ВУЗа
11 Speciality Текстовый 30 Специальность сотрудника
12 Picture Поле OLE Авто Фотография сотрудника
13 DegreeYes Логический 1 Ученая степень (есть/нет)
14 Degree Числовой 1 Ученая степень сотрудника
15 Rank Числовой 1 Ученое звание сотрудника
16 Post Текстовый 20 Занимаемая должность
17 Comment Поле Memo Авто Примечания
18 Passport Текстовый 20 Номер паспорта
19 PassportDate Дата Авто Дата выдачи паспорта
20 Region Текстовый 40 Кем выдан паспорт
21 WorkBegin Дата Авто Дата начала трудовой деятельности
22 WorkEnd Дата Авто Дата окончания трудовой деятельности
23 Work Текстовый 20 В качестве кого работал
24 WorkPlace Текстовый 20 Название предприятия
25 WorkAddress Текстовый 60 Адрес предприятия
26 WorkPhone Текстовый 15 Телефон предприятия
27 Reason Текстовый 30 Причина увольнения
28 Penalty Поле Memo Авто Сведения о взысканиях
29 Rewards Поле Memo Авто Сведения о награждениях

170
Вариант 13. Разработать прикладное программное обеспечение
деятельности биржи труда. На биржу труда обращаются люди, не су-
мевшие самостоятельно устроиться на работу, но все ещё желающие
найти работу по специальности. Организации предоставляют бирже
список свободных вакансий. Каждый обратившийся ставится на учет. В
день обращения ему предлагается список вакансий. Если свободных ва-
кансий нет или они не устраивают ищущего работу, то ему будет пред-
ложено подождать пока подходящее свободное место работы не поя-
вится. Зарегистрированный на бирже получает пособие по безработице
до тех пор, пока не будет трудоустроен. После этого его данные перено-
сятся в архив, и выплата ему пособия прекращается.
Таблица 9.13
Набор данных к варианту 13

№ Поле Тип Размер Описание


1 JoblessID Числовой 5 Регистрационный номер безработного
2 LastName Текстовый 20 Фамилия безработного
3 FirstName Текстовый 20 Имя безработного
4 Patronymic Текстовый 20 Отчество безработного
5 Age Числовой 2 Возраст безработного
6 Passport Текстовый 20 Номер паспорта
7 PassportDate Дата Авто Дата выдачи паспорта
8 Region Текстовый 40 Кем выдан паспорт
9 Address Текстовый 60 Адрес безработного
10 Phone Текстовый 15 Телефон безработного
11 Picture Поле OLE Авто Фотография безработного
12 StudyPlace Текстовый 60 Название оконченного ВУЗа
13 StudyAddress Текстовый 60 Адрес оконченного учебного заведения
14 StudyType Текстовый 15 Тип образования (высшее и т.д.)
15 Registrar Текстовый 15 Фамилия регистрирующего
16 RegDate Дата Авто Дата постановки на учет
17 Payment Денежный 15 Величина пособия
18 Experience Логический 1 Опыт работы по специальности (да/нет)
19 Comment Поле Memo Авто Примечания
20 ArchivesDate Дата Авто Дата перевода в архив
21 Archivist Текстовый 15 Фамилия удалившего в архив
22 JobID Числовой 1 Номер вакансии
23 JobType Текстовый 20 Тип вакансии (техническая, экономич.)
24 JobName Текстовый 20 Название вакансии
25 JobGiver Текстовый 20 Работодатель
26 Place Текстовый 60 Адрес работодателя
27 Mobile Текстовый 15 Телефон работодателя
28 District Текстовый 15 Район, в котором предлагается работа
29 Money Денежный 15 Примерный размер зарплаты
30 More Поле Memo Авто Особые требования к работнику

171
Вариант 14. Разработать прикладное программное обеспечение
деятельности отдела учета квартир «Бюро технической инвентариза-
ции».
В нашем городе имеется 6000 зданий, в которых расположено 199000
квартир. Помещений в этих квартирах – 1 500 000 шт. Понятно, что эта
задача не для Microsoft Access 2002. Но, тем не менее, попробуйте реа-
лизовать ее, предусмотрев перевод базы данных на платформу Micro-
soft SQL Server 2000.
Кадастровый номер здания является уникальным. Используйте его в
качестве простого первичного ключа таблицы зданий. Можете работать
и с составным первичным ключом (адресом здания), но в данном случае
– это не лучший вариант.
Таблица 9.14
Набор данных к варианту 14

№ Поле Тип Размер Описание


1 Kadastr Текстовый 20 Кадастровый номер здания
2 Address Текстовый 60 Адрес здания
3 District Текстовый 15 Район города
4 Land Числовой 10 Площадь земельного участка
5 Year Числовой 4 Год постройки здания
6 Material Текстовый 15 Материал стен здания
7 Base Текстовый 15 Материал фундамента
8 Comment Поле Memo Авто Примечания
9 Wear Числовой 2 Износ в процентах
10 Flow Числовой 2 Количество этажей в здании
11 Line Числовой 5 Расстояние от центра города
12 Square Числовой 10 Площадь квартир
13 Picture Поле OLE Авто Фото здания
14 Flats Числовой Количество квартир в здании
15 Elevator Логический 1 Наличие лифта
16 Flat Числовой 4 Номер квартиры
17 Storey Числовой 2 Номер этажа
18 Rooms Числовой 1 Количество комнат
19 Level Логический 1 Квартира в двух уровнях
20 SquareFlat Числовой Авто Общая площадь квартиры
21 Dwell Числовой Авто Жилая площадь квартиры
22 Branch Числовой Авто Вспомогательная площадь квартиры
23 Balcony Числовой Авто Площадь балкона
23 Height Числовой Авто Высота квартиры
25 Record Числовой 2 Номер помещения в квартире
26 SquareRoom Числовой Авто Площадь помещения
27 Size Текстовый 40 Размеры помещения в плане
28 Name Текстовый 30 Назначение (кухня, ниша …
29 Decoration Текстовый 60 Отделка (паркет, обои …)
30 HeightRoom Числовой Авто Высота помещения
31 Socket Числовой 2 Число розеток в помещении
32 Sections Числовой 2 Число элементов в батарее отопления

172
Вариант 15. Разработать прикладное программное обеспечение
деятельности аптечного склада. Аптечный склад занимается оптовой
продажей лекарств больницам и аптекам города. В его ассортименте –
тысячи наименований лекарств, а также различных аптечных принад-
лежностей (градусники, шприцы, бинты и т. д.) Возможна продажа лишь
тех лекарств, которые одобрены Минздравом РФ, то есть имеют регист-
рационный номер Минздрава РФ. Поступающие лекарства сопровожда-
ются документами – приходными накладными ведомостями. Покупатель
получает счет-фактуру на выбранный товар, оплачивает сумму, указан-
ную в ней, и после оплаты получает выходную накладную ведомость, по
которой получает выбранный товар.
Таблица 9.15
Набор данных к варианту 15

№ Поле Тип Размер Описание


1 GoodsID Числовой 10 Регистрационный номер товара в базе
2 Name Текстовый 40 Название товара
3 International Текстовый 40 Международное название лекарства
4 Begin Дата Авто Дата производства
5 End Дата Авто Годен до
6 Yes Логический 1 Одобрено Минздравом РФ (да/нет)
7 RF Текстовый 20 Регистрационный номер Минздрава РФ
8 Producer Текстовый 60 Данные о производителе
9 Instructions Поле Memo Авто Инструкция к лекарству
10 Batch Текстовый 20 Вид упаковки
11 Seller Текстовый 20 Название поставщика
12 Address Текстовый 60 Адрес поставщика
13 Phone Текстовый 15 Телефон поставщика
14 INN Текстовый 10 ИНН поставщика
15 Sign Логический 1 Признак посредника
16 Date Дата Авто Дата поступления на склад
17 Price Денежный 10 Цена товара
18 GoodsInvoice Числовой 4 Номер приходной накладной ведомости
19 ClientID Числовой 5 Номер покупателя
20 Company Текстовый 25 Название покупателя
21 Address Текстовый 60 Адрес покупателя
22 Phone Текстовый 15 Телефон покупателя
23 CountNumber Числовой 4 Номер счет-фактуры
24 DateStart Дата Авто Дата выписки счет-фактуры
25 Sum Денежный 15 Сумма к уплате
26 Cash Логический 1 Оплата наличными (да/нет)
27 Worker Текстовый 60 Выдавший счет-фактуру
28 Invoice Числовой 4 Номер выходной накладной
29 INNClient Текстовый 10 ИНН покупателя
30 Seller Текстовый 15 Фамилия продавца

173
Вариант 16. Разработать прикладное программное обеспечение
деятельности отдела учета нежилых помещений Бюро технической ин-
вентаризации.
В 2000 г. в нашем городе была проведена сплошная инвентаризация,
в ходе которой было выявлено 16000 нежилых помещений. Это магази-
ны (встроенные, пристроенные и отдельно стоящие), офисы, учрежде-
ния, мастерские и т.д. Помещение может состоять из отдельных частей
(кабинет, проходная, коридор). Составных частей помещений выявлено
265 000 шт.
В одном здании может быть несколько помещений, а помещение мо-
жет состоять из нескольких частей. Любое здание имеет уникальный ка-
дастровый номер, однозначно определяющий его положение в городе.
Таблица 9.16
Набор данных к варианту 16

№ Поле Тип Размер Описание


1 Kadastr Текстовый 20 Кадастровый номер здания
2 Address Текстовый 60 Адрес здания
3 District Текстовый 15 Район города
4 Land Числовой 10 Площадь земельного участка
5 Year Числовой 4 Год постройки здания
6 Material Текстовый 15 Материал стен здания
7 Base Текстовый 15 Материал фундамента
8 Comment Поле Memo Авто Примечания
9 Wear Числовой 2 Износ в процентах
10 Flow Числовой 2 Количество этажей в здании
11 Line Числовой 5 Расстояние от центра города
12 Square Числовой 10 Площадь нежилых помещений
13 Picture Поле OLE Авто Фото здания
14 Hall Числовой 3 Количество помещений в здании
15 Elevator Логический 1 Наличие лифта
16 HallNum Числовой 4 Номер помещения
17 Storey Числовой 2 Номер этажа
18 Rooms Числовой 1 Количество составных частей
19 Level Логический 1 Помещение в двух уровнях
20 SquareHall Числовой Авто Общая площадь помещения
21 Branch Числовой Авто Вспомогательная площадь помещения
22 Balcony Числовой Авто Площадь балкона
23 Height Числовой Авто Высота помещения
24 Record Числовой 2 Номер составной части помещения
25 SquarePart Числовой Авто Площадь составной части
26 Size Текстовый 40 Размеры сост. части в плане
27 NamePart Текстовый 30 Назначение (кабинет, ниша ...)
28 Decoration Текстовый 60 Отделка (паркет, обои …)
29 HeightPart Числовой Авто Высота составной части
30 Socket Числовой 2 Число розеток в помещении
31 Sections Числовой 2 Число элементов в батарее отопления

174
Вариант 17. Разработать прикладное программное обеспечение
деятельности отдела учета налогообложения физических лиц городской
налоговой инспекции. По существующему законодательству любой гра-
жданин России, заработавший более 50000 рублей в год и имеющий до-
ходы помимо основного места работы, должен представить в налоговую
инспекцию декларацию о полученных доходах. Налоговый инспектор
должен проверить ее, занести в базу данных и выписать платежное из-
вещение на уплату подоходного налога с доходов физического лица. Так
как действующая шкала налогообложения – прогрессивная (с большей
суммы уплачивается больший налог), то лица, заполнившие деклара-
цию, должны доплатить в бюджет некоторую сумму. С 2002 года порядок
несколько изменился. Шкала налогообложения – линейная (13 процен-
тов со всей заработанной суммы за год), но лицам, затратившим сред-
ства на обучение, покупку лекарств и т.д., из бюджета должна быть воз-
вращена некоторая сумма, рассчитываемая по специальной методике.
Таблица 9.17
Набор данных к варианту 17

№ Поле Тип Размер Описание


1 INN Текстовый 13 Идентификационный номер
2 LastName Текстовый 20 Фамилия налогоплательщика
3 FirstName Текстовый 20 Имя налогоплательщика
4 Patronymic Текстовый 20 Отчество налогоплательщика
5 Document Текстовый 80 Документ, удостоверяющий личность
6 Serial Текстовый 10 Серия документа
7 Number Текстовый 20 Номер документа
8 Date Дата Авто Дата выдачи
9 Region Текстовый 30 Кем выдан документ
10 Born Дата Авто Дата рождения
11 Picture Поле OLE Авто Фотография налогоплательщика
12 DateTax Дата Авто Дата заполнения декларации
13 NumberTax Текстовый 12 Номер декларации
14 Address Текстовый 80 Адрес налогоплательщика
15 District Текстовый 20 Район города, где проживает
16 DistrictTax Текстовый 20 Инспекция, где стоит на учете
17 TaxNumber Текстовый 4 Номер налоговой инспекции
18 Enterprise Текстовый 40 Организация, выплатившая сумму
19 InnEnterprise Текстовый 10 ИНН организации
20 AddressWorks Текстовый 30 Адрес организации
21 Chief Текстовый 60 ФИО главного бухгалтера
22 Phone Текстовый 10 Телефон для связи
23 SumAll Денежный 15 Полученная в организации сумма
24 SumTax Денежный 15 Величина подоходного налога
25 SumPension Денежный 15 Отчисления в пенсионный фонд
26 ExemptType Текстовый 60 Название льготы
27 Exempt Денежный 15 Сумма льготы
28 Comment Поле Memo Авто Примечания

175
Вариант 18. Разработать прикладное программное обеспечение
деятельности телеателье «Спектр».
Эта организация занимается послегарантийным ремонтом теле-, ра-
диоаппаратуры отечественного и импортного производства. Клиенты
этого телеателье – жители и организации нашего города и близлежащих
сел. Расчет с физическими лицами ведется наличными, а с организа-
циями – через банк. Выдача отремонтированной техники производится
после полной оплаты выполненного ремонта.
Отремонтированное изделие получает гарантию. Если в течение га-
рантийного срока произойдет поломка изделия, то повторный ремонт
выполняется за счет телеателье. Если брак допустил мастер, то часть
суммы удерживается из его зарплаты. Клиент, обратившийся к услугам
ателье несколько раз с ремонтом разной аппаратуры, получает дисконт-
ную карту, дающую право на скидку при ремонте очередного изделия.
Таблица 9.18
Набор данных к варианту 18

№ Поле Тип Размер Описание


1 CustomerID Числовой 4 Идентификатор заказчика
2 CustomerType Логический 1 Тип заказчика (физ./юр. лицо)
3 CustomerFio Текстовый 60 ФИО заказчика (для физ. лица)
4 CustomerName Текстовый 60 Название заказчика (для юр. лица)
5 CustomerInn Текстовый 13 ИНН заказчика (для юр. лица)
6 Chief Текстовый 40 Руководитель (для юр. лица)
7 Phone Текстовый 10 Телефон заказчика
8 Address Текстовый 60 Адрес заказчика
9 Bank Текстовый 60 Банк заказчика (для юр. лица)
10 District Текстовый 15 Район заказчика
11 Discont Текстовый 5 Номер дисконтной карты
12 MasterID Числовой 2 Идентификатор мастера
13 MasterFio Текстовый 60 ФИО мастера
14 Experience Числовой 2 Опыт работы по специальности
15 Defect Числовой 2 Число некачественных ремонтов
16 RepairAll Числовой 4 Число отремонтированных изделий
17 TypeID Числовой 5 Идентификатор заказа
18 Type Текстовый 15 Тип изделия (телевизор, радио и т.д)
19 Country Текстовый 15 Страна - производитель
20 Company Текстовый 40 Фирма - изготовитель
21 Picture Поле OLE Авто Фотография изделия
22 Age Числовой 2 Возраст изделия в годах
23 DateStart Дата Авто Дата приема в ремонт
24 DateStop Дата Авто Дата выдачи из ремонта
25 Summa Денежный 15 Стоимость ремонта
26 Period Числовой 2 Срок гарантии
27 Guarantee Логический 1 Гарантийный ремонт (да/нет)
28 Comment Поле Memo Авто Примечания

176
Вариант 19. Разработать прикладное программное обеспечение дея-
тельности отдела заселения муниципальных общежитий администрации
города.
В ведении администрации города находится несколько десятков об-
щежитий. Раньше они принадлежали предприятиям города, а теперь,
после банкротства предприятий, все эти общежития переданы муници-
пальным властям. В последние годы бесплатные квартиры гражданам
города практически не предоставляются, а количество малоимущих жи-
телей, нуждающихся в жилье, растет. Хоть как-то улучшить жилищные
условия этой категории граждан позволяет наличие муниципальных об-
щежитий. Получить четкую картину их заселения позволит данное про-
граммное обеспечение. База данных отдела содержит информацию об
общежитиях, комнатах общежитий и проживающих.
Таблица 9.19
Набор данных к варианту 19

№ Поле Тип Размер Описание


1 Hostel Числовой 5 Номер общежития
2 Address Текстовый 60 Адрес общежития
3 District Текстовый 15 Район города, в котором расположено
4 Picture Поле OLE Авто Фотография общежития
5 Owner Текстовый 20 Балансодержатель
6 Rooms Числовой 4 Комнат в общежитии
7 Beds Числовой 5 Количество койко-мест в общежитии
8 RoomID Числовой 4 Номер комнаты
9 Square Числовой 10 Площадь комнаты
10 Comment Поле Memo Авто Примечания
11 RoomBeds Числовой 2 Количество койко-мест в комнате
12 Type Числовой 1 Тип комнаты (одноместная и т.д.)
13 Storey Числовой 2 Номер этажа
14 Lodger Числовой 5 Регистрационный номер жильца
15 Name Текстовый 40 ФИО жильца
16 Passport Текстовый 20 Номер паспорта
17 PassportDate Дата Авто Дата выдачи паспорта
18 Region Текстовый 40 Кем выдан паспорт
19 Work Текстовый 20 Место работы или учебы
20 Children Логический 1 С детьми (да/нет)
21 DocumentID Числовой 5 Номер документа на заселение
22 Document Текстовый 20 Название документа на заселение
23 Begin Дата Авто Начало действия документа
24 Giver Текстовый 20 Кем выдан документ на заселение
25 DocComment Поле Memo Авто Комментарий
26 Payment Денежный Авто Плата за проживание в месяц
27 Settlement Дата Авто Дата заселения в общежитие
28 End Дата Авто Дата выселения из общежития
29 Reason Поле Memo Авто Причина выселения

177
Вариант 20. Разработать прикладное программное обеспечение
деятельности Государственной автомобильной инспекции по безопасно-
сти дорожного движения города.
База данных ГИБДД содержит сведения обо всех транспортных сред-
ствах города и их владельцах. В нее заносятся сведения о технических
осмотрах транспортных средств и об угонах. Описание угнанного авто-
мобиля не удаляется из базы данных. Истории переходов транспортных
средств от одних владельцев к другим не накапливаются. Сведения об
автомобилях, снятых с учета, навсегда удаляются из базы данных.
Таблица 9.20
Набор данных к варианту 20

№ Поле Тип Размер Описание


1 OwnerID Числовой 6 Идентификатор владельца
2 OwnerType Логический 1 Тип владельца (физ./юр. лицо)
3 OwnerFio Текстовый 60 ФИО владельца (для физ. лица)
4 OwnerName Текстовый 60 Название организации
5 OwnerInn Текстовый 10 ИНН организации
6 Chief Текстовый 60 Руководитель организации
7 Phone Текстовый 10 Телефон
8 Address Текстовый 60 Адрес владельца автомобиля
9 District Текстовый 15 Район города
10 Number Текстовый 10 Государственный знак автомобиля
11 Brand Текстовый 15 Марка автомобиля
12 Model Текстовый 15 Модель автомобиля
13 BodyID Текстовый 20 Номер кузова
14 EngineID Текстовый 20 Номер двигателя
15 BodyModel Текстовый 20 Модель кузова
16 Color Текстовый 20 Цвет автомобиля
17 Volume Числовой 5 Объем двигателя
18 Comment Поле Memo Авто Примечания
19 Power Числовой 3 Мощность двигателя в л.с.
20 Helm Логический 1 Руль (правый/левый)
21 Drive Логический 1 Привод на все колеса
22 Year Числовой 4 Год выпуска автомобиля
23 TypeBody Текстовый 15 Тип кузова автомобиля (седан, купе)
24 DrivingAway Логический 1 Находится в угоне
25 DateAway Дата Авто Дата угона
26 DateReturn Дата Авто Дата возврата владельцу
27 DateSee Дата Авто Дата технического осмотра
28 Inspector Текстовый 60 ФИО инспектора, проводившего осмотр
29 YearTax Денежный 15 Годовой налог на автомобиль
30 YearNumber Денежный 15 Оплата за знак технического осмотра
31 Work Денежный 15 Оплата за технический осмотр
32 Distance Числовой 5 Пробег на дату осмотра
33 Okey Логический 1 Технический осмотр пройден
34 Reason Поле Memo Авто Причины, по которым осмотр не пройден

178
Вариант 21. Разработать прикладное программное обеспечение
для ведения реестра имущества университетского городка.
В состав имущества входит несколько зданий. В зданиях располага-
ются аудитории, кафедры, лаборатории, вычислительные центры, дека-
наты и т.д. Любое помещение университета относится к какому-либо
подразделению. Все движимое имущество, находящееся в помещении,
состоит на балансе материально ответственного лица.
Каждая аудитория закреплена за определенной кафедрой универси-
тета, так же в ведении кафедр находятся и лаборатории.
По истечении определенного времени имущество, находящееся в
помещениях, списывается. Архив списанного имущества не ведется.
Таблица 9.21
Набор данных к варианту 21

№ Поле Тип Размер Описание


1 Kadastr Числовой 2 Регистрационный номер здания
2 BuildingName Текстовый 20 Название здания (корпуса) университета
3 Land Числовой Авто Площадь земельного участка
4 Address Текстовый 60 Адрес здания
5 Year Числовой 4 Год постройки
6 Material Текстовый 15 Материал стен здания
7 Wear Числовой 2 Износ в процентах
8 Flow Числовой 2 Число этажей в здании
9 Picture Поле OLE Авто Фотография здания
10 Comment Поле Memo Авто Дополнительные сведения по зданию
11 HallID Текстовый 5 Номер аудитории
12 Square Числовой Авто Площадь аудитории
13 Windows Числовой 1 Количество окон
14 Heating Числовой 3 Число элементов в батареях отопления
15 Target Текстовый 15 Назначение (лекционная, кафедра ...)
16 Department Текстовый 15 Принадлежность к кафедре (подразд.)
17 Chief Текстовый 30 Материально ответст. за аудиторию
18 DepartmentID Числовой 3 Идентификатор кафедры
19 DepartmentName Текстовый 15 Название кафедры
20 Boss Текстовый 40 Заведующий кафедрой
21 Phone Текстовый 10 Телефон кафедры
22 OfficeDean Текстовый 30 Принадлежность кафедры к деканату
23 ChiefID Числовой 3 Идентификатор материально отв-го
24 AddressChief Текстовый 60 Дом. адрес материально ответственного
25 Experience Числовой 4 Год его начала работы в университете
26 UnitID Числовой 3 Идентификатор единицы имущества
27 UnitName Текстовый 30 Название единицы имущества
28 DateStart Дата Авто Дата постановки на учет
29 Cost Денежный 15 Стоимость единицы имущества
30 CostYear Числовой 4 Год переоценки
31 CostAfter Денежный 15 Стоимость после переоценки
32 Period Числовой 4 Срок службы единицы имущества

179
Вариант 22. Разработать прикладное программное обеспечение
деятельности туристической компании «Вояж». Эта компания формиру-
ет туристические группы для заграничных поездок и обеспечивает им
полную поддержку на маршруте. Количество туристов в группе заранее
известно и ограничено.
Маршрут группы может пролегать через несколько городов страны
назначения. Экскурсии в несколько стран одновременно не проводятся.
При обращении в «Вояж» группы из нескольких человек компания
предоставляет скидку, которая зависит от количества туристов в группе.
Вместе с группой следует представитель компании, который несет пол-
ную ответственность за качество услуг, предоставляемых компанией.
При возникновении каких-либо неудобств на маршруте, возникших по
вине компании, турист получает назад заранее оговоренную в контракте
сумму.
Таблица 9.22
Набор данных к варианту 22

№ Поле Тип Размер Описание


1 ClientID Числовой 5 Идентификатор клиента
2 LastName Текстовый 20 Фамилия клиента
3 FirstName Текстовый 20 Имя клиента
4 Patronymic Текстовый 20 Отчество клиента
5 Document Текстовый 80 Документ, удостоверяющий личность
6 Serial Текстовый 10 Серия документа
7 Number Текстовый 20 Номер документа
8 Date Дата Авто Дата выдачи
9 Region Текстовый 30 Кем выдан документ
10 Born Дата Авто Дата рождения
11 Picture Поле OLE Авто Фотография клиента
12 Pasport Логический 1 Наличие заграничного паспорта
13 RouteID Числовой 3 Идентификатор маршрута
14 RouteName Текстовый 30 Название маршрута
15 Country Текстовый 20 Название страны
16 Period Числовой 2 Срок пребывания
17 Worker Текстовый 20 Представитель на маршруте
18 Cost Денежный 15 Стоимость путевки
19 Exempt Денежный 15 Скидка
20 Return Денежный 15 Неустойка
21 DateStart Дата Авто Дата вылета
22 Town Текстовый 15 Пункт маршрута
23 Count Числовой 2 Срок пребывания в пункте маршрута
24 Hotel Текстовый 15 Название гостиницы
25 StartDate Дата Авто Дата прибытия в пункт маршрута
26 StopDate Дата Авто Дата убытия
27 Type Числовой 1 Класс гостиницы (***,****)
28 Comment Поле Memo Авто Экскурсионная программа

180
Вариант 23. Разработать прикладное программное обеспечение
деятельности регистратуры ведомственной поликлиники «Эскулап».
Работники регистратуры организуют запись пациентов на прием к
врачам поликлиники. Так как поликлиника ведомственная, медицинское
обслуживание работников предприятия – бесплатное (за счет средств
предприятия).
«Посторонние» пациенты также могут воспользоваться услугами по-
ликлиники, полностью оплатив затраты на лечение. Определение стои-
мости лечения и выдача платежных документов для таких больных вхо-
дит в круг обязанностей работников регистратуры. Врач ведет прием
всегда в одном кабинете. Приемные дни занесены в расписание работы
поликлиники. На каждого пациента в регистратуре заводится карточка. В
начале приема карточки больных, записавшихся на прием, доставляют-
ся работником регистратуры в кабинет врача.
Таблица 9.23
Набор данных к варианту 23

№ Поле Тип Размер Описание


1 DoctorID Числовой 2 Идентификационный номер врача
2 LastName Текстовый 20 Фамилия врача
3 FirstName Текстовый 20 Имя врача
4 Patronymic Текстовый 20 Отчество врача
5 Room Числовой 3 Номер кабинета
6 University Текстовый 40 Образование (университет)
7 Type Текстовый 20 Специализация (терапевт, лор...)
8 Experience Числовой 2 Стаж работы
9 Phone Текстовый 10 Номер рабочего телефона
10 Born Числовой 4 Год рождения
11 Picture Поле OLE Авто Фотография врача
12 Fio Текстовый 60 ФИО пациента
13 Number Текстовый 10 Номер карточки пациента
14 Address Текстовый 80 Адрес пациента
15 District Текстовый 20 Район города, где проживает
16 PolicyNumber Текстовый 20 Номер страхового полиса
17 Year Числовой 4 Год рождения пациента
18 Sign Логический 1 Работник предприятия (да/нет)
19 Department Текстовый 40 Отдел, в котором работает
20 TreatyID Числовой 10 Идент. номер записи на прием
21 DateStart Дата Авто Дата приема
22 TimeStart Текстовый 10 Время приема
23 Cost Денежный 15 Стоимость приема
24 ExemptID Числовой 2 Идентификатор льготы
25 ExemptType Текстовый 60 Название льготы (инвалид, ветеран)
26 Exempt Денежный 15 Сумма льготы
27 Summa Денежный 15 К оплате
28 Comment Поле Memo Авто Примечания (результаты приема)

181
Вариант 24. Разработать прикладное программное обеспечение
деятельности рекламного агентства «Rapid».
В собственности этого агентства находится примерно около сотни
рекламных щитов, расположенных по всему городу. Установка их согла-
сована с администрацией города, и все необходимые формальности
выполнены. На этих щитах может быть размещена реклама по заказу
любой организации города. Срок размещения, стоимость аренды щита и
стоимость изготовления самой рекламы – договорные.
Одна организация может арендовать несколько рекламных щитов.
Один щит не сдается в аренду нескольким арендаторам, так как являет-
ся неделимой рекламной единицей.
Договор размещения рекламы может быть продлен по взаимной до-
говоренности сторон.
Таблица 9.24
Набор данных к варианту 24

№ Поле Тип Размер Описание


1 RegNumber Числовой 10 Регистрационный номер щита
2 Address Текстовый 60 Адрес расположения щита
3 District Текстовый 15 Район города
4 Orientation Текстовый 60 Местоположение (ОДОРА, Депо-2 …)
5 Square Числовой Авто Площадь рекламного щита
6 Size Текстовый 10 Размеры
7 CustomerID Числовой 10 ИНН арендатора щита
8 Status Текстовый 15 Статус арендатора (ТОО, ЗАО, ИЧП)
9 Customer Текстовый 40 Название арендатора
10 AddressCust Текстовый 60 Юридический адрес арендатора
11 Chief Текстовый 40 Руководитель
12 Phone Текстовый 10 Телефон руководителя
13 Bank Текстовый 60 Банк арендатора
14 Account Текстовый 20 Номер счета в банке
15 Tax Текстовый 15 Налоговая инспекция арендатора
16 Worker Текстовый 40 Ответственный от арендатора
17 PhoneWorker Текстовый 10 Телефон ответственного
18 TreatyID Числовой 5 Номер договора аренды щита
19 DateStart Дата Авто Начало действия договора
20 StopDate Дата Авто Окончание действия
21 SignDate Дата Авто Дата подписания договора
22 Advertisment Логический 1 Изготовление рекламы (да/нет)
23 Cost Денежный 15 Стоимость изготовления рекламы
24 Leasing Денежный 15 Стоимость аренды щита
25 Picture Поле OLE Авто Фотография щита с рекламой
26 Employee Текстовый 40 Ответственный от агентства
27 Period Текстовый 15 Оплата (ежемесячная, кварт., годовая)
28 Comment Поле Memo Авто Дополнительные условия

182
Вариант 25. Разработать прикладное программное обеспечение
деятельности OOO «Центр оценки и продажи недвижимости».
Одним из источников прибыли этой организации является покупка и
продажа квартир. Центр оценки имеет большой штат специалистов, по-
зволяющий этой организации проводить сделки купли-продажи на высо-
ком профессиональном уровне. Владелец квартиры, желающий ее про-
дать, заключает договор с Центром, в котором указывается сумма, срок
продажи и процент отчислений в пользу Центра оценки и продажи не-
движимости в случае успешного проведения сделки.
Один клиент может заключить с Центром более одного договора куп-
ли-продажи одновременно, если он владеет несколькими квартирами.
Обмен квартир специалисты центра непосредственно не производят.
Для этих целей используется вариант купли-продажи.
Таблица 9.25
Набор данных к варианту 25

№ Поле Тип Размер Описание


1 Registr Числовой 10 Регистрационный номер клиента
2 Address Текстовый 60 Адрес клиента
3 Name Текстовый 60 ФИО клиента
4 Phone Текстовый 10 Телефон для связи с клиентом
5 TreatyID Числовой 5 Регистрационный номер договора
6 AddressFlat Текстовый 60 Адрес квартиры
7 District Текстовый 15 Район города
8 Floors Числовой 2 Этажей в доме
9 Floor Числовой 2 Этаж, на котором расположена квартира
10 TypeHouse Текстовый 20 Тип дома (кирпичный, панельный)
11 TypePlan Текстовый 20 Тип планировки (хрущевка, новая)
12 TypeToilet Текстовый 20 Тип санузла (раздельный, совмещенный)
13 SqAll Числовой Авто Общая площадь квартиры
14 SqLife Числовой Авто Жилая площадь квартиры
15 SqKit Числовой Авто Площадь кухни
16 Agent Текстовый 40 Фамилия агента Центра оценки
17 Privat Логический 1 Наличие приватизации
18 SignPhone Логический 1 Наличие телефона в квартире
19 DateStart Дата Авто Начало действия договора
20 StopDate Дата Авто Окончание действия
21 Cost Денежный 15 Стоимость квартиры
22 Bonus Денежный 15 Вознаграждение Центра оценки
23 Picture Поле OLE Авто Фотография здания
24 Plan Поле OLE Авто План квартиры
25 Structure Поле Memo Авто Инфраструктура территории
26 Document Текстовый 40 Документ на право собственности
27 Prolong Дата Авто Продление срока действия договора
28 Comment Поле Memo Авто Дополнительные условия

183
Вариант 26. Разработать прикладное программное обеспечение
деятельности отдела вневедомственной охраны квартир. Этот отдел
обеспечивает электронную охрану квартир граждан в одном районе го-
рода. Для установки охранной сигнализации требуется наличие квар-
тирного телефона. Один гражданин может заключить договор на охрану
нескольких квартир. Из-за ложных срабатываний сигнализации возмож-
но несколько выездов патрульных экипажей по одной квартире. На вла-
дельца квартиры, вовремя не отключившего сигнализацию после своего
прихода домой, налагается штраф, величина которого оговаривается
при заключении договора охраны. Если отдел вневедомственной охраны
не уберег имущество владельца квартиры, то он выплачивает постра-
давшему заранее оговоренную сумму. От величины этой суммы зависит
размер ежемесячной оплаты за охрану квартиры.
Таблица 9.26
Набор данных к варианту 26

№ Поле Тип Размер Описание


1 Registr Числовой 10 Регистрационный номер клиента
2 Address Текстовый 60 Адрес клиента
3 Name Текстовый 60 ФИО клиента
4 Phone Текстовый 10 Телефон для связи с клиентом
5 TreatyID Числовой 5 Регистрационный номер договора
6 AddressFlat Текстовый 60 Адрес квартиры
7 Key Логический 1 Наличие кодового замка на подъезде
8 Floors Числовой 2 Количество этажей в доме
9 Floor Числовой 2 Этаж, на котором расположена квартира
10 TypeHouse Текстовый 20 Тип дома (кирпичный, панельный)
11 TypeDoor Текстовый 20 Тип квартирной двери (мет, дер, две шт.)
12 Balcony Логический 1 Наличие балкона
13 TypeBalcony Текстовый 60 Тип балкона (отдельный, совмещенный)
14 Plan Поле OLE Авто План квартиры
15 Cost Денежный 15 Стоимость ежемесячной оплаты
16 Compensation Денежный 15 Компенсация при краже имущества
17 DateStart Дата Авто Начало действия договора
18 StopDate Дата Авто Окончание действия
19 ActionID Числовой 7 Номер выезда на захват
20 PatrolID Числовой 4 Номер экипажа, выезжавшего на захват
21 Chief Текстовый 20 Командир экипажа
22 Brand Текстовый 15 Марка автомобиля
23 DateTime Дата Авто Дата и время выезда
24 False Логический 1 Вызов ложный (да/нет)
25 Tax Денежный 15 Величина штрафа за ложный вызов
26 Document Текстовый 40 Документ, оформленный при задержании
27 Prolong Дата Авто Продление срока действия договора
28 Comment Поле Memo Авто Дополнительные условия

184
Вариант 27. Разработать прикладное программное обеспечение
деятельности Отдела приватизации жилья администрации города. В
нашем городе на начало 2001 года приватизировано около 80 000 квар-
тир граждан. Еще далеко не все проживающие в «своих» квартирах ста-
ли собственниками своего жилья. Процесс приватизации продолжается
и займет еще несколько лет. Главная задача программного комплекса –
не допустить приватизации одним человеком более одной квартиры. К
сожалению, в отделе приватизации не используется уникальный кадаст-
ровый номер здания, поэтому вам придется использовать составной
первичный ключ (адрес) для таблицы зданий, квартир и проживающих.
Помните, что некоторые из проживающих в квартире могут не участ-
вовать в приватизации.
Таблица 9.27
Набор данных к варианту 27
№ Поле Тип Размер Описание
1 Address Текстовый 60 Адрес здания
2 District Текстовый 15 Район города
3 Balance Текстовый 60 Балансодержатель
4 Year Числовой 4 Год постройки здания
5 Material Текстовый 15 Материал стен здания
6 Base Текстовый 15 Материал фундамента
7 Comment Поле Memo Авто Примечания
8 Wear Числовой 2 Износ в процентах
9 Flow Числовой 2 Число этажей в здании
10 Line Числовой 5 Расстояние от центра города
11 Square Числовой 10 Площадь квартир
12 Hall Логический 1 Наличие нежилых помещений
13 Picture Поле OLE Авто Фото здания
14 Flats Числовой 3 Число квартир в здании
15 Elevator Логический 1 Наличие лифта
16 Flat Числовой 4 Номер квартиры
17 Storey Числовой 2 Номер этажа
18 Rooms Числовой 1 Количество комнат
19 SquareFlat Числовой Авто Общая площадь квартиры
20 Dwell Числовой Авто Жилая площадь квартиры
21 Branch Числовой Авто Всп. площадь квартиры
22 Balcony Числовой Авто Площадь балкона
23 Height Числовой Авто Высота квартиры
24 Record Числовой 2 Номер записи о приватизации
25 Document Текстовый 60 Документ на право приватизации
26 DateDoc Дата Авто Дата документа о приватизации
27 Cost Денежный Авто Инвентаризационная стоимость
27 FioHost Текстовый 60 Ф.И.О. проживающего
28 Pasport Поле Memo Авто Данные его паспорта
29 Sign Логический 1 Участие в приватизации (да/нет)
30 Born Числовой 4 Год рождения
31 Status Текстовый 20 Статус в семье

185
Вариант 28. Разработать прикладное программное обеспечение дея-
тельности предприятия “Газкомплект” по учету платы за пользование га-
зом и газовыми приборами. Плата взымается с каждой квартиры в зави-
симости от количества потребленного газа или от числа проживающих,
если счетчик отсутствует. Ответственный квартиросъемщик обязан каж-
дый месяц снимать показания счетчика и производить оплату за потреб-
ленный газ через сбербанк. Наряду с отслеживанием платы за газ пред-
приятие производит профилактическое обслуживание газовых приборов.
Правила техники безопасности предусматривают осмотр газовой плиты
инспектором предприятия раз в квартал. Если обнаружены неполадки в
подключении плиты или ее работе, то работник предприятия обязан не-
медленно устранить их за счет абонента. Оплата оказанных услуг осу-
ществляется на месте по квитанции.
Таблица 9.28
Набор данных к варианту 28

№ Поле Тип Размер Описание


1 Address Текстовый 60 Адрес здания
2 District Текстовый 15 Район города
3 Material Текстовый 15 Тип стен
4 Floor Текстовый 15 Тип перекрытий
5 Picture Поле OLE Авто Фото здания
6 Owner Текстовый 15 Балансодержатель
7 Doorway Числовой 2 Количество подъездов в доме
8 Flats Числовой 3 Количество квартир в доме
9 LastName Текстовый 20 Фамилия квартиросъемщика
10 FirstName Текстовый 20 Имя квартиросъемщика
11 Patronymic Текстовый 20 Отчество квартиросъемщика
12 Passport Текстовый 20 Номер паспорта
13 Flat Числовой 3 Номер квартиры
14 FlatType Числовой 1 Вид квартиры
15 People Числовой 2 Количество проживающих
16 Phone Текстовый 15 Телефон квартиросъемщика
17 Account Текстовый 15 Номер абонентской книжки
18 DateCount Дата Авто Дата выдачи книжки
19 Stop Логический 1 Наличие задвижки на входе в квартиру
20 Number Текстовый 10 Номер счетчика
21 ViewNumber Дата Авто Дата поверки счетчика
22 MadeIn Текстовый 15 Страна изготовления счетчика
23 WhenMade Дата Авто Дата изготовления счетчика
24 DateView Дата Авто Дата снятия показаний
25 Result Числовой Авто Показания счетчика
26 PayMonth Денежный Авто Плата за месяц
27 Prophylaxis Дата Авто Дата профилактического осмотра
28 PayDefect Денежный Авто Стоимость исправления дефекта
29 Surname Текстовый 20 Фамилия ответственного инспектора

186
Вариант 29. Разработать прикладное программное обеспечение
деятельности «Бюро технической инвентаризации» по изготовлению и
выдаче технических паспортов на объекты недвижимости. Перед регист-
рацией сделки с объектом недвижимости собственник объекта должен
получить в БТИ на него технический паспорт. Ежедневно в БТИ обраща-
ется до 200 человек. Основное назначение программного комплекса – не
пропустить ни одного документа. Если технический паспорт не готов в на-
значенный срок, то БТИ должно выплатить неустойку. Алгоритм изготов-
ления документа следующий. Клиент обращается к инспектору, сдает
ему необходимые справки, согласовывает дату выхода техника на об-
мер, уплачивает аванс. Инспектор передает заявку начальнику отдела.
Начальник отдела назначает исполнителя и техника. Техник выполняет
обмер объекта. Исполнитель изготавливает документ и передает в от-
дел выдачи. В назначенный срок клиент забирает готовый документ, до-
платив недостающую сумму. Один клиент (физическое или юридическое
лицо) может заказать несколько технических паспортов, за изготовление
которых оплата может производиться частями.
Таблица 9.29
Набор данных к варианту 29

№ Поле Тип Размер Описание


1 NumberClaim Числовой 10 Номер заявки на изготовление документа
2 Name Текстовый 60 ФИО заказчика
3 Phone Текстовый 10 Телефон для связи с заказчиком
4 Receipt Логический 1 Физическое или юридическое лицо
5 Bank Текстовый 60 Банк заказчика
6 Account Текстовый 20 Номер счета в банке
7 Address Текстовый 60 Адрес объекта
8 District Текстовый 15 Район города
9 DateStart Дата Авто Дата приема заявки
10 Document Текстовый 60 Название документа
11 Speed Логический 1 Срочное изготовление (да/нет)
12 DateStop Дата Авто Дата выдачи документа
13 Cost Денежный 15 Стоимость изготовления документа
14 Inspector Дата Авто Дата выхода техника
15 Time Текстовый 20 Время выхода техника
16 Chief Текстовый 30 ФИО начальника отдела
17 Worker Текстовый 30 ФИО исполнителя
18 DateWorker Дата Авто Дата передачи исполнителю
19 Helper Текстовый 30 ФИО техника
20 Cash Логический 1 Оплата наличными (да/нет)
21 DateCost Дата Авто Дата оплаты
22 Value Денежный 15 Оплаченная сумма
23 Finish Логический 1 Документ выдан (да/нет)
24 Comment Поле Memo Авто Примечания

187
Вариант 30. Разработать прикладное программное обеспечение
деятельности отдела аренды ЗАО «Сириус». После удачной приватиза-
ции, когда у руководства этого предприятия оказалась большая часть
акций, дела некогда мощного предприятия пошли на спад. Основная
часть работников была уволена по сокращению штатов. В настоящее
время основной статьей получения прибыли является сдача в аренду
другим предприятиям и организациям площадей, которыми владеет
«Сириус». В его собственности имеется 12-ти этажное здание, которое
состоит примерно из 300 помещений. Почти все они сдаются в аренду.
Один арендатор может арендовать несколько помещений, причем срок
аренды для каждого устанавливается отдельно. Величина арендной платы
и ее периодичность устанавливается арендодателем. После окончания
срока аренды, договор может быть продлен на прежних или новых услови-
ях. Субаренда площадей запрещена. Закрытые договоры не удаляются из
базы данных для отслеживания предыдущих арендаторов.
Таблица 9.30
Набор данных к варианту 30

№ Поле Тип Размер Описание


1 CustomerID Числовой 4 Идентификатор арендатора
2 CustomerType Логический 1 Тип арендатора (физ./юр. лицо)
3 CustomerFio Текстовый 60 ФИО арендатора (для физ. лица)
4 CustomerName Текстовый 60 Название арендатора (для юр. лица)
5 CustomerInn Текстовый 13 ИНН арендатора (для юр. лица)
6 Chief Текстовый 40 Руководитель (для юр. лица)
7 Phone Текстовый 10 Телефон арендатора
8 Address Текстовый 60 Юридический адрес арендатора
9 Bank Текстовый 60 Банк арендатора (для юр. лица)
10 District Текстовый 15 Район заказчика
11 Worker Текстовый 30 Ответственный от арендатора
12 PhoneWorker Текстовый 10 Телефон ответственного
13 HallID Числовой 3 Номер помещения
14 Square Числовой Авто Площадь помещения
15 Size Текстовый 20 Размеры помещения
16 Floor Числовой 2 Этаж, на кот. расположено помещение
17 PhoneHall Логический 1 Телефон в помещении (есть/нет)
18 Decoration Текстовый 10 Отделка (обычная, улучш., евро)
19 TreatyID Числовой 5 Номер договора аренды
20 Type Логический 1 Договор действует/закрыт
21 DateStart Дата Авто Дата начала действия договора
22 DateStop Дата Авто Окончание срока действия
23 Period Текстовый 20 Периодичность оплаты (ежемес., кварт)
24 Value Денежный 15 Сумма оплаты
25 Inspector Текстовый 30 Ответственный от арендодателя
26 Target Текстовый 30 Цель аренды (офис, киоск, склад)
27 Tax Денежный 15 Штраф за нарушение условий договора
28 Comment Поле Memo Авто Примечания

188
Вариант 31. Разработать прикладное программное обеспечение
деятельности телефонной компании.
Основное назначение программного комплекса – отслеживание або-
нентской платы за телефоны. Клиентами компании могут быть как физи-
ческие лица, так и организации. Расчет с организациями ведется в без-
наличной форме через банк. Физические лица вносят плату через кассу
компании.
Клиент телефонной компании может иметь несколько телефонных
номеров. Дополнительная плата за подключенный параллельно аппарат
не взимается. Если телефон у абонента не работает более суток, то
плата за пользование телефоном уменьшается.
Междугородние и международные звонки оплачиваются отдельно по
заранее установленным расценкам.
Таблица 9.31
Набор данных к варианту 31

№ Поле Тип Размер Описание


1 CustomerID Числовой 4 Идентификатор клиента компании
2 CustomerType Логический 1 Тип клиента (физ./юр. лицо)
3 CustomerFio Текстовый 60 ФИО клиента (для физ. лица)
4 CustomerName Текстовый 60 Название клиента (для юр. лица)
5 CustomerInn Текстовый 13 ИНН клиента (для юр. лица)
6 Chief Текстовый 40 Руководитель (для юр. лица)
7 Phone Текстовый 10 Телефон для связи (для юр. лица)
8 Address Текстовый 60 Юридический адрес клиента
9 Bank Текстовый 60 Банк клиента (для юр. лица)
10 Account Текстовый 20 Номер счета в банке
11 PhoneNumber Текстовый 10 Номер телефона
12 PhoneAddress Текстовый 60 Адрес, где он установлен
13 Value Денежный 15 Ежемесячная плата за телефон
14 ExemptType Текстовый 20 Тип льготы
15 Exempt Денежный 15 Величина льготы
16 DateClaim Дата Авто Дата заявки о поломке телефона
17 NumberClaim Числовой 5 Номер заявки о поломке
18 Inspector Текстовый 15 Фамилия принявшего заявку
19 DateRepair Дата Авто Дата восстановления связи
20 Compensation Денежный 15 Вычеты из арендной платы
21 DateRing Дата Авто Дата внешнего звонка
22 RingType Логический 1 Междугородний/Международный
23 Number Текстовый 10 Вызываемый номер
24 County Текстовый 15 Страна
25 Town Текстовый 15 Город
26 Value Числовой 3 Количество минут
27 Summa Денежный 15 Стоимость звонка
28 Comment Поле Memo Авто Примечания

189
Вариант 32. Разработать прикладное программное обеспечение
деятельности мелкооптового книжного магазина. Менеджер магазина,
изучив спрос на книжную продукцию в городе, принимает решение о за-
купке партии книг в том или ином издательстве. Некоторые, пользую-
щиеся повышенным спросом книги, могут быть закуплены у посредни-
ков. Часть продукции заказывается через Internet. Покупателем в мелко-
оптовом магазине может быть любой человек или организация, при ус-
ловии, что величина покупки превысит одну тысячу рублей. Расчет с ор-
ганизациями производится через банк. Расчет с физическими лицами –
наличными. Покупателю выписывается счет-фактура, которая имеет
уникальный номер и содержит список книг с указанием их стоимости.
После уплаты указанной суммы покупатель получает товар на складе.
Таблица 9.32
Набор данных к варианту 32

№ Поле Тип Размер Описание


1 Provider Текстовый 40 Поставщик книг
2 INN Текстовый 10 ИНН поставщика книг
3 Address Текстовый 60 Юридический адрес поставщика
4 Bank Текстовый 60 Банк поставщика книг
5 Account Текстовый 20 Номер счета в банке
6 Sign Логический 1 Признак посредника
7 Film Текстовый 20 Название книги
8 Author Текстовый 60 Авторы
9 Comment Поле Memo Авто Краткое содержание книги
10 Pages Числовой 3 Количество страниц
11 Company Текстовый 40 Издательство
12 Year Числовой 4 Год издания
13 Cost Денежный 15 Стоимость приобретения
14 Cdrom Логический 1 Наличие компакт диска к книге
15 Customer Текстовый 20 Название покупателя
16 CustomerSign Логический 1 Признак покупателя (юр./физ.)
17 INNcustomer Текстовый 10 ИНН покупателя
18 AddressCust Текстовый 60 Юридический адрес покупателя
19 Chief Текстовый 60 Директор
20 BankCustomer Текстовый 60 Банк покупателя
21 Phone Текстовый 10 Телефон для связи
22 District Текстовый 15 Район города
23 AccountCust Текстовый 20 Номер счета покупателя в банке
24 CountNumber Числовой 4 Номер счет-фактуры
25 DateStart Дата Авто Дата выписки счет-фактуры
26 Value Денежный 15 Сумма к уплате
27 Worker Текстовый 60 Выдавший счет-фактуру
28 Tax Денежный 15 Величина налога с продаж
29 Plus Поле Memo Авто Примечания

190
Вариант 33. Разработать прикладное программное обеспечение
деятельности ОАО «Автовокзал».
Это открытое акционерное общество занимается междугородними пас-
сажирскими перевозками по Дальневосточному региону. В его собственно-
сти находится несколько десятков автобусов различной вместимости.
Штат водителей превышает количество автобусов. Средний уровень
сменности для машины – 2.5. Водитель не может работать более одной
смены в сутки. Билеты на рейсы продаются только в здании автовокза-
ла. Возможна предварительная продажа. Маршрут автобуса может
пролегать через несколько населенных пунктов. В этом случае пассажир
может купить билет до любого промежуточного пункта. Освободившимся
местом после выхода пассажира распоряжается водитель. Полученную
выручку он сдает в кассу предприятия после прибытия с маршрута. На
линии работает контроль. Если в автобусе будет обнаружен пассажир
без билета, то на водителя налагается штраф.
Таблица 9.33
Набор данных к варианту 33

№ Поле Тип Размер Описание


1 LastName Текстовый 20 Фамилия водителя
2 FirstName Текстовый 20 Имя водителя
3 Patronymic Текстовый 20 Отчество водителя
4 Experience Числовой 2 Стаж работы
5 Year Числовой 4 Год рождения
6 Category Текстовый 20 Категория водителя (D,E)
7 Class Текстовый 20 Классность водителя (1,2,3)
8 DriverID Числовой 4 Идентификационный номер водителя
9 BusNumber Числовой 4 Идентификационный номер автобуса
10 Brand Текстовый 15 Марка автобуса
11 Picture Поле OLE Авто Фотография автобуса
12 Model Текстовый 15 Модель автобуса
13 Capacity Числовой 2 Количество мест в автобусе
14 YearBus Числовой 4 Год выпуска автобуса
15 YearRepair Числовой 4 Год капитального ремонта
16 Distance Числовой 6 Пробег автобуса, км
17 RouteID Числовой 3 Идентификатор маршрута
18 PointStart Текстовый 20 Начальный пункт
19 PointStop Текстовый 20 Конечный пункт
20 DateStart Дата Авто Дата отправления
21 TimeStart Текстовый 10 Время отправления
22 TimeAll Текстовый 10 Время в пути до конечного пункта
23 PlaceNumber Числовой 2 Номер места
24 PlaceSign Логический 1 Билет продан на автовокзале (да/нет)
25 SumDriver Денежный 15 Выручка на маршруте
26 SumTax Денежный 15 Штраф на водителя
27 Comment Поле Memo Авто Промежуточные пункты маршрута

191
Вариант 34. Разработать прикладное программное обеспечение
деятельности агентства знакомств.
Агентство занимается организацией знакомств одиноких мужчин и
женщин. Возможен один из двух вариантов: человек либо регистрирует-
ся в агентство, оставляет информацию о себе, чтобы любой мог ознако-
миться с его кандидатурой, либо знакомится с базой уже зарегистриро-
ванных и выбирает подходящую кандидатуру. Регистрация и подбор
кандидатуры – платные. Тот, кто делает выбор по базе, платит за каж-
дый выбранный вариант. После того, как выбор сделан, агентство со-
гласовывает дату и время встречи с каждой из сторон, формирует и пе-
редает приглашения для знакомства обеим сторонам. Во избежание не-
доразумений первая встреча происходит в агентстве.
Клиенты, желающие быть исключенными из базы, переносятся в архив.
Таблица 9.34
Набор данных к варианту 34

№ Поле Тип Размер Описание


1 CandidateID Числовой 5 Регистрационный номер кандидата
2 Name Текстовый 40 ФИО кандидата
3 Gender Числовой 1 Пол кандидата
4 Age Числовой 2 Возраст кандидата
5 Myself Поле Memo Авто Информация кандидата о себе
6 Demand Поле Memo Авто Требования кандидата к избраннику
7 Phone Текстовый 15 Телефон кандидата
8 Picture Поле OLE Авто Фотография кандидата
9 Registrar Текстовый 15 Фамилия регистрирующего
10 RegDate Дата Авто Дата регистрации кандидата
11 ClientID Числовой 5 Регистрационный номер клиента
12 ClientName Текстовый 40 ФИО клиента
13 ClientGender Числовой 1 Пол клиента
14 ClientPhone Текстовый 15 Телефон клиента
15 Date Дата Авто Дата регистрации клиента
16 ClientMyself Текстовый 200 Информация клиента о себе
17 ClientMore Текстовый 50 Дополнительная информация
18 ClientAge Числовой 2 Возраст клиента
19 ReceiptID Числовой 5 Номер квитанции об оплате
20 PayDate Дата Авто Дата оплаты
21 Seller Текстовый 15 Фамилия кассира
22 Cash Логический 1 Оплата наличными (да/нет)
23 Sum Денежный 5 Сумма
24 MeetDate Дата Авто Согласованная дата встречи
25 MeetTime Время Авто Время встречи
26 InvitationID Числовой 5 Номер приглашения
27 DeleteDate Дата Авто Дата перевода в архив
28 Deleter Текстовый 15 Фамилия удалившего в архив
29 Reason Текстовый 30 Причина переноса в архив

192
Вариант 35. Разработать прикладное программное обеспечение
деятельности ломбарда.
Человек обращается в ломбард в том случае, если ему срочно нужны
деньги. Например, недостает небольшой суммы для покупки квартиры, а
подходящая квартира как раз продается, и на неё уже есть и другие по-
купатели. Тогда человек может пойти в ломбард и заложить вещи на не-
обходимую сумму.
В ломбарде с клиентом заключается договор. В нем оговариваются
следующие условия: до какого срока выкуп вещи возможен без процен-
тов, с какого времени будет взыматься процент, по истечении какого
срока выкуп вещи невозможен, и она поступает в собственность лом-
барда. Невыкупленные вещи ломбард выставляет на продажу.

Таблица 9.35
Набор данных к варианту 35

№ Поле Тип Размер Описание


1 ClientID Числовой 4 Регистрационный номер клиента
2 Name Текстовый 40 ФИО клиента
3 Date Дата Авто Дата обращения в ломбард
4 Address Текстовый 60 Адрес клиента
5 District Текстовый 15 Район проживания
6 Phone Текстовый 15 Телефон клиента
7 Passport Текстовый 20 Номер паспорта
8 PassportDate Дата Авто Дата выдачи паспорта
9 Region Текстовый 40 Кем выдан паспорт
10 Agreement Числовой 5 Номер договора
11 StartDate Дата Авто Дата приема вещи
12 PercentDate Дата Авто Дата, с которой за выкуп берется пени
13 StopDate Дата Авто Дата, с которой выкуп уже невозможен
14 Registrar Текстовый 15 Фамилия приемщика
15 ThingID Числовой 4 Регистрационный номер вещи
16 Category Текстовый 15 Категория вещи
17 Thing Текстовый 30 Название вещи
18 Count Числовой 2 Количество принятых вещей
19 Defects Логический 1 Наличие дефектов (да/нет)
20 Cost Денежный 10 Оценочная стоимость вещи
21 Sum Денежный 10 Сумма, полученная клиентом
22 Comment Поле Memo Авто Примечания
23 Back Дата Авто Дата выкупа вещи
24 Tax Денежный 10 Пени за несвоевременный выкуп
25 BackSum Денежный 10 Сумма, заплаченная за выкуп
26 Seller Текстовый 15 Фамилия вернувшего вещь
27 FreeThing Числовой 4 Номер вещи, поступившей в продажу
28 Price Денежный 10 Цена вещи, поступившей в продажу

193
Вариант 36. Разработать прикладное программное обеспечение
деятельности гостиницы.
В любой уважающей себя гостинице существует большое количество
возможных вариантов заселения гостей: все номера различаются по ка-
тегориям (суперлюкс, люкс и т.д.), по количеству комнат в номере, коли-
честву мест в каждом номере, а также по обустройству комнат – учиты-
вается, например, наличие телевизора, холодильника,телефона.
В обязанности администратора гостиницы входит подбор наиболее
подходящего для гостя варианта проживания, регистрация гостей, прием
платы за проживание, оформление квитанций, выписка отъезжающих.
Учитывается также возможность отъезда гостя раньше указанного при
регистрации срока, при этом производится перерасчет. Существует так-
же услуга бронирования номера.
Таблица 9.36
Набор данных к варианту 36

№ Поле Тип Размер Описание


1 GuestID Числовой 4 Регистрационный номер гостя
2 Name Текстовый 40 ФИО гостя
3 Date Дата Авто Дата регистрации
4 Address Текстовый 60 Адрес гостя
5 Town Текстовый 20 Город, из которого приехал гость
6 Aim Текстовый 30 Цель приезда
7 Passport Текстовый 20 Номер паспорта
8 PassportDate Дата Авто Дата выдачи паспорта
9 Region Текстовый 40 Кем выдан паспорт
10 Work Текстовый 20 Место работы или учебы
11 Year Числовой 4 Год рождения гостя
12 Money Денежный 10 Плата за выбранный номер
13 Cash Логический 1 Оплата наличными (да/нет)
14 Receipt Числовой 4 Номер квитанции
15 End Дата Авто Дата отъезда
16 Comment Поле Memo Авто Примечания
17 Registrar Текстовый 15 Фамилия администратора
18 Picture Поле OLE Авто Фотография номера
19 Number Числовой 4 № номера
20 Rooms Числовой 2 Количество комнат в номере
21 Storey Числовой 2 Номер этажа
22 TV Логический 1 Телевизор (есть/нет)
23 Fridge Логический 1 Холодильник (есть/нет)
24 Bed Числовой 2 Количество мест в номере
25 Type Числовой 1 Категория номера
26 Balcony Логический 1 Балкон (есть/нет)
27 Reservation Числовой 4 Забронированный номер
28 ReservName Текстовый 40 ФИО забронировавшего номер
29 Come Дата Авто Дата приезда
30 Leave Дата Авто Дата предполагаемого отъезда

194
Вариант 37. Разработать прикладное программное обеспечение ин-
ститута селекции растений.
Данный институт занимается сбором, выведением и продажей раз-
личных сортов семян. В его ассортименте можно найти семена практи-
чески всех возможных видов растений: от помидоров до редких цветов.
Только что выведенные сорта заносятся в отдельный список для даль-
нейшего тестирования. Каждый сорт семян имеет свои характеристики,
такие как урожайность, морозоустойчивость, адаптация к местным усло-
виям, сроки созревания (раннеспелый, среднеспелый, поздний) и т.п.
Покупатель может выбрать сорт, отвечающий тем или иным характери-
стикам. Компания занимается как оптовыми, так и розничными прода-
жами. Оптовые покупатели заносятся в базу главным образом для того,
чтобы информировать их о поступлении новых или отсутствовавших в
определенный момент в продаже сортов.
Таблица 9.37
Набор данных к варианту 37

№ Поле Тип Размер Описание


1 SortID Числовой 10 Уникальный номер сорта
2 Name Текстовый 40 Название сорта
3 Year Числовой 4 Год, в котором выведен сорт
4 Adaptation Логический 1 Адаптация к местным условиям (да/нет)
5 Frost Логический 1 Морозоустойчивый (да/нет)
6 Description Текстовый 200 Описание характеристик сорта
7 Technology Поле Memo Авто Способ посадки
8 Picture Поле OLE Авто Фотография представителя сорта
9 Part Числовой 10 Номер партии
10 End Дата Авто Годен до
11 Yes Логический 1 Одобрен инспекцией (да/нет)
12 Batch Текстовый 20 Вид упаковки
13 Amount Числовой 4 Количество семян в упаковке
14 BatchTime Дата Авто Дата расфасовки
15 Weight Числовой 4 Вес семян в упаковке
16 Period Числовой 1 Срок созревания
17 NewSort Числовой 5 Номер нового сорта для тестирования
18 Date Дата Авто Дата выведения нового сорта
19 Comment Поле Memo Авто Примечания
20 ClientID Числовой 5 Номер оптового покупателя
21 Company Текстовый 25 Название фирмы-покупателя
22 BuyDate Дата Авто Дата покупки
23 Address Текстовый 60 Адрес фирмы-покупателя
24 Phone Текстовый 15 Телефон покупателя
25 Sum Денежный 10 Цена покупки
26 Cash Логический 1 Оплата наличными (да/нет)
27 Seller Текстовый 15 Фамилия продавца

195
Вариант 38. Разработать прикладное программное обеспечение дея-
тельности приемной комиссии университета.
Каждый год университет зачисляет новых абитуриентов для возмож-
ного их поступления в университет после сдачи вступительных экзаме-
нов. На бюджетную основу могут быть зачислены: абитуриенты, полу-
чившие на школьном экзамене высокий балл ЕГЭ и успешно прошедшие
собеседование; абитуриенты, набравшие необходимый для бесплатного
поступления балл на университетских экзаменах, а также абитуриенты,
имеющие направление от какого-либо государственного предприятия.
Все остальные могут поступить в университет на платной основе, на-
брав необходимое установленное университетом число баллов на всту-
пительных экзаменах.
Таблица 9.38
Набор данных к варианту 38

№ Поле Тип Размер Описание


1 PersonID Числовой 5 Регистрационный номер абитуриента
2 Name Текстовый 40 ФИО абитуриента
3 Date Дата Авто Дата регистрации
4 Picture Поле OLE Авто Фотография абитуриента
5 Address Текстовый 60 Домашний адрес абитуриента
6 Phone Текстовый 15 Телефон абитуриента
7 Birth Дата Авто Дата рождения абитуриента
8 School Текстовый 20 Название оконченной школы
9 Money Логический 1 Возможность оплаты обучения (да/нет)
10 Passport Текстовый 20 Номер паспорта
11 PassportDate Дата Авто Дата выдачи паспорта
12 Region Текстовый 40 Кем выдан паспорт
13 Attestat Текстовый 20 Номер аттестата
14 Middle Числовой Авто Средний балл аттестата
15 Faculty Текстовый 40 Название выбранного факультета
16 Speciality Текстовый 40 Название выбранной специальности
17 Registrar Текстовый 15 Фамилия принявшего документы
18 Talk Логический 1 Рекомендован для собеседования
19 Result Числовой Авто Набрано баллов при поступлении
20 Contract Логический 1 Договор с предприятием (да/нет)
21 ContractID Числовой 10 Номер договора
22 ContractAbout Поле Memo Авто Условия договора
23 ContAddress Текстовый 60 Адрес предприятия
24 СontPhone Текстовый 15 Телефон предприятия
25 Payment Логический 1 Платит предприятие (да/нет)
26 EGE Текстовый 20 Номер аттестата ЕГЭ
27 Lesson Текстовый 20 Предмет, по которому сдан ЕГЭ
28 Score Числовой Авто Набрано баллов по ЕГЭ
29 YesID Числовой 5 Номер после зачисления
30 Type Числовой 1 Основа, на которой зачислен

196
Вариант 39. Разработать прикладное программное обеспечение дея-
тельности кассы авиакомпании. Касса авиакомпании занимается прода-
жей билетов на предстоящие рейсы. В билете указывается номер и на-
звание рейса, а также все остальные необходимые для пассажира дан-
ные: дата и время вылета, прибытия, номер места и класс (бизнес, эко-
номический). Цена билета зависит от рейса, лайнера, класса, а также от
времени покупки билета – иногда авиакомпании делают скидки купив-
шим билет более чем за месяц или на “горящие рейсы” – все зависит от
желания компании. Билеты продаются только совершеннолетним граж-
данам при предъявлении паспорта. У авиакомпании обычно имеется не-
сколько касс, расположенных в разных концах города, поэтому обяза-
тельно необходимо учитывать номер кассы, в которой был продан би-
лет, во избежание недоразумений при сдаче или обмене билета.
Таблица 9.39
Набор данных к варианту 39

№ Поле Тип Размер Описание


1 Passage Числовой 5 Номер рейса
2 Title Текстовый 40 Название рейса
3 Date Дата Авто Дата вылета
4 Time Время Авто Время вылета
5 Arrival Дата Авто Дата прибытия
6 ArrivalTime Время Авто Время прибытия
7 Seats Логический 1 Промежуточные посадки (есть/нет)
8 Places Текстовый 50 Места промежуточных посадок
9 Passenger Числовой 5 Регистрационный номер пассажира
10 Name Текстовый 40 ФИО пассажира
11 Date Дата Авто Дата покупки билета
12 Passport Текстовый 20 Номер паспорта
13 PassportDate Дата Авто Дата выдачи паспорта
14 Region Текстовый 40 Кем выдан паспорт
15 Till Числовой 5 Номер билетной кассы
16 Ticket Числовой 10 Номер билета
17 Chair Числовой 3 Номер места
18 Class Числовой 1 Класс
19 Price Денежный 6 Цена билета
20 Registrar Текстовый 15 Фамилия регистратора
21 Airliner Числовой 10 Номер лайнера
22 AirlinerName Текстовый 15 Название лайнера
23 Year Числовой 4 Год создания
24 Picture Поле OLE Авто Фотография лайнера
25 Amount Числовой 4 Количество совершенных рейсов
26 Repair Дата Авто Дата последнего техосмотра
27 Crew Числовой 4 Номер экипажа
28 Pilot Текстовый 15 Фамилия пилота
29 CrewNames Поле Memo Авто Фамилии остальных членов экипажа

197
Вариант 40. Разработать прикладное программное обеспечение дея-
тельности предприятия “Хабэнерго” по учету платы за потребленную
электроэнергию. Плата взымается с каждой квартиры в зависимости от
количества потребленной энергии или от числа проживающих, если
счетчик отсутствует. Существует несколько методик начисления або-
нентской платы. Плата зависит от вида счетчика (однофазный, трехфаз-
ный), от типа счетчика (возможность учета дневного и ночного тарифов),
а также от вида квартиры (коммунальная, отдельная).
Ответственный квартиросъемщик обязан каждый месяц снимать по-
казания счетчика и производить оплату за потребленную электроэнер-
гию через сбербанк. Второй экземпляр квитанции он обязан хранить у
себя и предъявлять инспектору Хабэнерго по первому требованию.
Таблица 9.40
Набор данных к варианту 40

№ Поле Тип Размер Описание


1 Address Текстовый 60 Адрес здания
2 District Текстовый 15 Район города
3 Material Текстовый 15 Тип стен
4 Floor Текстовый 15 Тип перекрытий
5 Picture Поле OLE Авто Фото здания
6 Owner Текстовый 15 Балансодержатель
7 Doorway Числовой 2 Количество подъездов в доме
8 Flats Числовой 3 Количество квартир в доме
9 LastName Текстовый 20 Фамилия квартиросъемщика
10 FirstName Текстовый 20 Имя квартиросъемщика
11 Patronymic Текстовый 20 Отчество квартиросъемщика
12 Passport Текстовый 20 Номер паспорта
13 Flat Числовой 3 Номер квартиры
14 FlatType Числовой 1 Вид квартиры
15 People Числовой 2 Количество проживающих
16 EStove Логический 1 Наличие электроплиты (есть/нет)
17 Number Текстовый 10 Номер счетчика
18 Kind Числовой 1 Вид счетчика
19 Type Числовой 1 Тип счетчика
20 Factor Числовой Авто Коэффициент фазности
21 Comment Поле Memo Авто Примечания
22 Tariff Числовой Авто Плата за чел. в месяц без счетчика
23 Day Числовой Авто Плата по дневному тарифу
24 Night Числовой Авто Плата по ночному тарифу
25 24hour Числовой Авто Плата по круглосуточному тарифу
26 BeginMonth Числовой Авто Показания счетчика в начале месяца
27 EndMonth Числовой Авто Показания счетчика в конце месяца
28 Privilege Денежный Авто Льгота в месяц на квартиру в рублях
29 Surname Текстовый 20 Фамилия ответственного инспектора

198
10. БИБЛИОГРАФИЧЕСКИЕ РЕКОМЕНДАЦИИ

Настоящая книга представляет собой учебное пособие, предназна-


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

Информационные системы/ В.Н. Петров. – СПб.: Питер, 2003. – 688 c.:


ил.
Основное внимание в книге уделяется вопросам разработки клиентской части ин-
формационных систем. В то же время в ней содержится большое количество прак-
тического материала, посвященного вопросам проектирования и создания баз дан-
ных, в частности, рассматривается методология проектирования информационных
систем, приводится подробное описание стандарта ANSI SQL-92, излагаются теоре-
тические сведения о реляционной модели данных. Одна из частей книги полностью
посвящена современным информационным технологиям программирования – COM,
ActiveX и Интернет-технологиям.

Современные компьютерные сети. 2-е изд. /В. Столлингс. – СПб.: Пи-


тер, 2003. – 783 c.: ил. – (Серия «Классика computer science)
Эта книга посвящена современным аспектам развития высокоскоростных объеди-
ненных TCP/IP сетей. В ней рассматривается широкий круг вопросов: от обработки
одиночного пакета или ячейки в очереди на маршрутизаторе или коммутаторе до
универсальных методов резервирования сетевых ресурсов для определенного типа
трафика; от определения характеристик потока данных до способов их сжатия, по-
зволяющих снизить нагрузку на сеть. Книга будет интересна всем, кто хотел бы по-
лучить представление о современном уровне развития, архитектуре и разработке
высокоскоростных компьютерых сетей.

Межсетевое взаимодействие. Ресурсы Microsoft Windows 2000


Server. Microsoft Corporation. /Пер. С англ. – М.: Издательско-торговый
дом «Русская редакция», 2003. – 736 c.: ил.
Книга представляет собой техническое руководство по серверу маршрутизации и
удаленного доступа под управлением Windows 2000 Server и организации взаимо-
действия между сетями различных типов. Предназначена сетевым инженерам, сете-
вым и системным администраторам, квалифицированным пользователям и всем,
кто хочет досконально изучить взаимодействие системы Windows 2000 с различны-
ми сетями и другими операционными системами.

199
Microsoft Windows 2000 Server. Учебный курс MCSA/MCSE: Пер. с
англ. – 3-е изд. – М.: Издательско-торговый дом «Русская редакция»,
2002. – 912 стр.: ил.
Данный учебный курс, посвященный Microsoft Windows 2000 Server, поможет освоить
способы ручной и автоматической установки, а также настройку параметров этой
операционной системы. В книке кратко описаны различия версий Windows 2000,
рассмотрены файловые системы и функции управления дисками. Подробно расска-
зано об администрировании ОС и службы каталогов Active Directory, сетевых прото-
колах, маршрутизации, удаленном доступе, новинках системы безопасности, мони-
торинге и оптимизации Windows 2000 Server. Книга адресована всем, кто хочет по-
лучить исчерпывающие знания в области установки, конфигурирования и админист-
рирования Microsoft Windows 2000 Server.

Базы данных. Проектирование, реализация и сопровождение. Тео-


рия и практика. /К. Бегг, Т.Коннолли – М.: Издательство «Вильямс»,
2003. 1436 c.: ил.
Авторы книги сконцентрировали на ее страницах весь свой богатый опыт разработки
баз данных для нужд промышленности, бизнеса и науки, а также обучения студен-
тов. Результатом их труда стало это полное справочное руководство по проектиро-
ванию, реализации и сопровождению баз данных. Книга содержит подробное описа-
ние особенностей разработки приложений баз данных. В ней дано всестороннее
введение в технологию информационной проходки, хранилищ данных и OLAP, пред-
ставлены современные распределенные, объектно-ориентированные и объектно-
реляционные СУБД. Ясное и четкое изложение материала, наличие одного основно-
го и трех вспомогательных учебных примеров и множества контрольных вопросов и
упражнений позволяет использовать эту книгу не только при самостоятельном обу-
чении, но и как основу для разработки курсов обучения любых уровней сложности,
от студентов младших курсов до аспирантов, а также как исчерпывающее справоч-
ное руководство для профессионалов.

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


/П.Роб - Издательство «BHV», 2004. 1040 c.: ил.
Книга содержит последовательное и всестороннее описание процесса разработки и
реализации базы данных. Подробно представлены теоретические основы баз дан-
ных: реляционная модель базы данных, ER-моделирование, нормализация таблиц
базы данных, язык структурированных запросов (SQL). Приведен пример проектиро-
вания и реализации базы данных для университетской лаборатории. Рассматрива-
ются управление транзакциями и параллельным выполнением, системы управления
распределенными базами данных, объектно-ориентированные базы данных, кли-
ент/серверные системы, информационное хранилище, электронная коммерция, осо-
бенности разработки баз данных для Web, хранилища данных и администрирование
баз данных.

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


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

200
Разработка настольных приложений в Access 2002. Для профес-
сионалов. /П. Литвин, К. Гетц. – СПб.: Питер; Киев: ВНV, 2003 – 941 c.:
ил.
В книге известных авторов, потративших бессчетное количество времени на изуче-
ние возможностей и недокументированных секретов Access 2002, рассказывается о
том, что должен знать и уметь каждый разработчик: о проектировании структуры баз
данных, SQL, об объектах доступа к данным ADO, формах, отчетах, о работе с Win-
dows API, создании модулей классов, событиях Access и т.д.

Разработка корпоративных приложений в Access 2002. Для про-


фессионалов. /П. Литвин, К. Гетц. – СПб.: Питер; Киев: ВНV, 2003 – 848
c.: ил.
В книге представлено большое количество полезной информации, необходимой ка-
ждому разработчику приложений в среде Microsoft Access, Visual Basic и Microsoft
SQL Server. В ней рассматриваются: объектная модель Microsoft Access, проектиро-
вание форм и отчетов. Большое внимание уделено принципам и приемам проекти-
рования приложений для баз данных и интегрированных решений на базе Microsoft
Office XP, а также средствам отладки и оптимизации приложений.

Microsoft SQL Server 2000 для профессионалов. /Е.Мамаев,


Л.Шкарина – СПб.: Питер, 2001. – 1088 c.: ил.
Система SQL Server 2000 вобрала в себя множество новейших технологий управле-
ния базами данных, разработанных за последнее время. Книга написана опытными
инженерами, сертифицированными фирмой Microsoft и отслеживающими эволюцию
SQL. Эта книга, содержащая наиболее полный материал по SQL Server, станет ва-
шим надежным помощником в работе.

Системы баз данных. Полный курс. /Г.Гарсиа-Молина, Дж. Уидом,


Дж.Ульман – М.: Издательство «Вильямс», 2003. 1088 c.: ил.
Книга известного специалиста в области компьютерных наук Дж. Ульмана и его име-
нитых коллег по Станфордскому университету является уникальным учебным и
справочным пособием, которое отличается беспрецедентными широтой и глубиной
охвата предмета и представляет несомненный интерес для всех, кто по роду своей
профессиональной деятельности сталкивается с проблемами проектирования и ис-
пользования современных систем баз данных.

Access 2002. Библия пользователя. /К.Праг, М.Ирвин - М.: Издатель-


ство «Вильямс», 2003. 1216 c.: ил.
Рассматриваются основные концепции баз данных, терминология и особенности ус-
тановки продукта, а также принципы работы в Access. Показаны все новые средства
Access 2002, рассмотрена возможность создания пользовательскх меню. Отдельные
две главы посвящены использованию Access совместно с SQL Server. Большая
часть книги посвящена решению практических задач разной степени сложности, в
том числе использованию связанных таблиц и сложных запросов, импортированию
данных, созданию форм, применению макросов для автоматизации ручных опера-
ций и языка VBA в формах и отчетах. Книга рассчитана на пользователей Access с
любым уровнем подготовки.

201
11. ЧТО СОДЕРЖИТСЯ НА КОМПАКТ-ДИСКЕ

Компакт-диск содержит файлы примера учебной базы данных Real


Estate, процесс создания которой рассмотрен в учебном пособии
(рис.11.1).

Рис. 11.1. Состав компакт-диска Real Estate

Всего файлов – семь. Три из них работают только под управлением


Microsoft Access. Это одна и та же база данных Real Estate 2002.mdb,
конвертированная в формат предыдущих версий.
Real Estate 2002.mdb – для Microsoft Access 2002.
Real Estate 2000.mdb – для Microsoft Access 2000.
Real Estate 1997.mdb – для Microsoft Access 97.
Конвертация выполнена на тот случай, если у Вас не окажется под
рукой нужной версии Microsoft Office. Разработка этой базы данных опи-
сана в первых шести главах учебного пособия.
К седьмой главе можно переходить только с Real Estate 2002.mdb
Файл Real Estate CS 2002.adp представляет собой проект Microsoft
Access, для работы с которым необходима установка Microsoft SQL
Server 2000.
Установив MS SQL Server 2000, Вы должны восстановить на нем ба-
зу данных Real Estate, которая находится в файле Real Estate.bak. Вос-
пользуйтесь для этого главой 8.5 данного пособия.
В файлах text.doc и title.doc содержится электронная версия данно-
го учебного пособия.
Внимание. С компакт-диска полноценной работы приложения не по-
лучится. Скопируйте его содержимое в любую папку, расположенную на
жестком диске Вашего компьютера.

202
ОГЛАВЛЕНИЕ

ПРЕДИСЛОВИЕ............................................................................................ 3
ВВЕДЕНИЕ ................................................................................................... 4
1. ПОСТАНОВКА ЗАДАЧИ ........................................................................... 6
2. НОРМАЛИЗАЦИЯ ДАННЫХ .................................................................... 7
3. РАЗРАБОТКА БАЗЫ ДАННЫХ .............................................................. 17
3.1. Создание новой базы данных.......................................................... 17
3.2. Создание таблиц .............................................................................. 18
3.3. Создание первичных ключей и индексов........................................ 23
3.4. Контроль правильности ввода данных ........................................... 27
3.5. Создание связей между таблицами ................................................ 30
3.6. Устранение проблем, возникающих при создании ключей............ 34
3.7. Устранение связи «многие ко многим» ........................................... 36
4. СОЗДАНИЕ ФОРМ ДЛЯ ВВОДА И РЕДАКТИРОВАНИЯ ДАННЫХ ..... 38
4.1. Создание простой формы в режиме конструктора......................... 38
4.1.1. Создание заготовки для формы ................................................ 40
4.1.2. Создание поля со списком......................................................... 41
4.1.3. Создание текстовых полей ........................................................ 43
4.1.4. Создание поля типа «Флажок».................................................. 44
4.1.5. Создание поля типа «Группа переключателей»....................... 45
4.1.6. Отображение фотографий в форме.......................................... 47
4.2. Создание сложной формы............................................................... 50
4.3. Добавление кнопки в форму для вызова другой формы ............... 57
4.4. Первые результаты .......................................................................... 61
4.5. Создание главной кнопочной формы.............................................. 64
5. СОЗДАНИЕ ОТЧЕТОВ ........................................................................... 65
5.1. Построение базового запроса ......................................................... 65
5.2. Разработка отчета в режиме конструктора..................................... 67
5.2.1. Создание заготовки отчета ........................................................ 67
5.2.2. Добавление элементов в отчет Microsoft Access ..................... 68
5.2.3. Вывод отчета Microsoft Access на печать ................................. 70
5.2.4. Операторы Microsoft Access для построения выражений........ 75
5.2.5. Стандартные функции для Microsoft Access и VBA.................. 76
6. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ................................................ 78
6.1. Сжатие базы данных........................................................................ 78
6.2. Преобразование базы данных к предыдущей версии ................... 78
6.3. Анализ быстродействия базы данных ............................................ 79
6.4. Сохранение базы данных в виде MDE-файла................................ 79
6.5. Анализ данных в Microsoft Excel...................................................... 80
6.6. Повышение быстродействия Microsoft Access ............................... 82
7. ПЕРЕВОД ПРИЛОЖЕНИЯ НА ПЛАТФОРМУ КЛИЕНТ-СЕРВЕР ......... 83
7.1. Выбор редакции SQL Server ............................................................ 83

203
7.2. Генерация SQL Server 2000 Developer Edition ................................ 83
7.3. Преобразование базы данных Access в базу SQL Server.............. 93
7.3.1 Создание нового приложения клиент-сервер ............................ 99
7.3.2 Связь Access-приложения с базой данных SQL Server .......... 107
7.3.3 Создание базы SQL Server без изменения приложения........ 108
8. ВНЕСЕНИЕ ИЗМЕНЕНИЙ В ПРОЕКТ MICROSOFT ACCESS ........... 113
8.1. Преимущества работы с мастером преобразования ................... 113
8.2. Перенесенные объекты и оставшиеся проблемы ....................... 114
8.2.1. Запуск Enterprise Manager MS SQL Server .............................. 114
8.2.2. Работа с мастером построения схемы данных ...................... 116
8.2.3. Успешное преобразование запроса Access в вид MS SQL.... 118
8.3. Исправление ошибок мастера преобразования ........................... 119
8.3.1. Создание хранимой процедуры с параметрами..................... 119
8.3.2. Обновление данных в форме с двумя таблицами ................. 120
8.3.3. Создание хранимой процедуры средствами Access .............. 126
8.3.4. Стандартные функции MS SQL Server.................................... 134
8.4. Замена англоязычных сообщений СУБД на русские ................... 136
8.5. Резервное копирование базы данных........................................... 140
8.6. Перенос базы данных на рабочий сервер .................................... 144
8.7. Система безопасности базы данных............................................. 147
8.7.1. Работа системного администратора ....................................... 148
8.7.2. Работа администратора базы данных .................................... 150
8.8. Управление блокировками............................................................. 155
9. ЗАДАНИЯ НА КУРСОВОЙ ПРОЕКТ (РАБОТУ)................................... 158
10. БИБЛИОГРАФИЧЕСКИЕ РЕКОМЕНДАЦИИ ..................................... 199
11. ЧТО СОДЕРЖИТСЯ НА КОМПАКТ-ДИСКЕ ...................................... 202

204
Гурвиц Геннадий Александрович.

РАЗРАБОТКА РЕАЛЬНОГО ПРИЛОЖЕНИЯ В СРЕДЕ КЛИЕНТ-СЕРВЕР.


Учебное пособие.

Редактор Н.В. Смышляева


Корректор Г.Ф. Иванова
Технический редактор О.В. Сенчихина

ИД № 05247 от 2 июля 2001 г. ПЛД № 79-19 от 19.01.2000 г.


Сдано в набор 11.01.2005. Подписано в печать 14.01.2005.
Формат 70х100 1 . Бумага тип. № 2. Гарнитура Arial. Печать плоская.
16
Усл. печ. л. 12,0. Зак. 6. Тираж 300 экз.

Издательство ДВГУПС
680021, г. Хабаровск, ул. Серышева, 47.

205