Введение в Microsoft Access
Автор: Белый Евгений Константинович (доцент, пенсионер)
Тип документа: Другое. Аудитория: Преподаватели и учителя информатики. Дата публикации: 20.05.2021
Описание: Книга позволит получить основные навыки создания баз данных в Microsoft Access. Автор исходил из того, что лучший способ научиться программировать -- самому написать программу. Приложение Access читателю предлагается создать совместно с автором. Это будет база данных, отражающая работу школьных кружков. Для ее разработки мы ограничимся минимальными средствами. В частности, не будем использовать модули, написанные на встроенном языке VBA -- Visual Basic for Applications. Зато подробно проиллюстрируем стандартные действия, которые выполняются в процессе разработки баз данных. Пособие ориентировано на практическую составляющую работы и автор, насколько возможно, избегал углубления в теоретические вопросы.

Математик а не для ЕГЭ
Е. К. Белый
Введение
в Microsoft A ccess
Учебное электронное пособие
для учащих с я средних шк ол
Петрозаво дск
Издательство ПетрГУ
2020
У ДК 004.65
ББК 32.973
Б439
Р ецензенты:
Н. А. Бу дник ова , к андидат физик о-математических на ук, доцент
к афедры информатики и математическ ого обеспечения ПетрГУ ;
А. А. Морозов , младший на учный сотру дник от дела институцио-
нального развития регионов институт а эк ономики КарНЦ Р АН
Белый, Евгений Конст антинович.
Б439 Введение в Microsoft A ccess [Электронный ресурс] : учебное
электронное пособие для учащих с я средних шк ол / Е. К. Белый ;
М-во на уки и высшего образования Р ос. Федерации, Федер. гос. бю д-
ж ет . образоват . учреждение высш. образования Петрозаво д. гос.
ун-т . — (Математик а не для ЕГЭ). — Электрон. дан. — Петроза-
во дск : Издательство ПетрГУ , 2020. — 1 электрон. опт . диск ;
(CD-R) ; 12 см. — Систем. требования : РС, МА С с процессором
In tel 1,3 ГГц и выше ; Windo ws, MA C OSX ; 256 Мб ; видеосисте-
ма : разрешение экрана 800𝑋600 и выше ; графический у ск оритель
(опционально) ; мышь или другое аналогичное у стройство. — Заг л.
с этик етки диск а.
ISBN 978-5-8021-3633-1
Учебное пособие ориентировано на учащих с я средних шк ол
и учителей информатики.
ISBN 978-5-8021-3633-1
У ДК 004.65
ББК 32.973
c○ Белый Е. К., 2020
Со дер ж ание
Предисловие 5
Г лава 1. Сущности, т аблицы и запросы 7
§ 1.1. Концепту альная мо дель . . . . . . . . . . . 7
§ 1.2. Т аблица «Ученики» . . . . . . . . . . . . . . 12
§ 1.3. Т аблица «Препо даватели» . . . . . . . . . . 23
§ 1.4. Т аблица «Кружки» . . . . . . . . . . . . . . 30
§ 1.5. Связи . . . . . . . . . . . . . . . . . . . . . . 33
§ 1.6. Запросы . . . . . . . . . . . . . . . . . . . . 36
Г лава 2. Формы и макросы 43
§ 2.1. Форма «Ученики» . . . . . . . . . . . . . . 43
§ 2.2. Форма «Список ученик ов» . . . . . . . . . . 52
§ 2.3. Объекты, свойства, события и мето ды . . . 57
§ 2.4. Форма «Поиск ученик ов» . . . . . . . . . . 69
§ 2.5. Формы «для препо давателей» . . . . . . . . 74
§ 2.6. Формы «для кружк ов» . . . . . . . . . . . . 76
§ 2.7. По дчиненные формы . . . . . . . . . . . . . 80
Г лава 3. Кнопочная форма 89
§ 3.1. Диспетчер кнопочных форм . . . . . . . . . 89
§ 3.2. Один полезный макрос . . . . . . . . . . . . 93
§ 3.3. Страницы кнопочной формы . . . . . . . . 95
§ 3.4. Параметры запу ск а . . . . . . . . . . . . . . 101
§ 3.5. Перекрывание ок он . . . . . . . . . . . . . . 102
§ 3.6. Р едактирование кнопочной формы . . . . . 105
Г лава 4. Отчеты 113
§ 4.1. Отчет «Весь список» . . . . . . . . . . . . . 113
§ 4.2. Отчет «Ученики по классам» . . . . . . . . 118
§ 4.3. Отчет «Возраст учащих с я» . . . . . . . . . 125
§ 4.4. Отчет «Ученики по кружк ам» . . . . . . . 140
§ 4.5. Отчет «Количество ученик ов» . . . . . . . 148
§ 4.6. Р едактирование кнопочной формы . . . . . 157
От ладк а прило ж ения 160
Историческ ая справк а 168
Список литературы 173
Прогр амма выпо лняет не то,
что хочет прогр аммист,
а то, что он напис ал.
IT-афоризм
Предисловие
⇒ 7 Дорогой чит атель! Эт а книг а позволит получить
основные навыки создания баз данных в Microsoft A ccess.
Прежде чем приступить к работе, следу ет определитьс я
с выбором версии A ccess. Если мы х отим, чтобы наше при-
ло ж ение работ ало тольк о у нас, мо жно взять последнюю.
Дело в том, что версии A ccess совместимы снизу ввер х,
но ник ак не наоборот . Прило ж ение A ccess 2003 мо ж ет ра-
бот ать в среде A ccess 10, но мы не смо ж ем открыть при-
ло ж ение A ccess 10, если на нашем к омпьютере у ст анов-
лен A ccess 2003. Почему бы тог да не ост ановитьс я на вер-
сии 2003? На чиная с 7-й произошли существенные изме-
нения, и мы не х отим игнорировать этот факт: по явилс я
эффективный мех анизм присоединения к запис ям фото-
графий и других объектов; вместо мо ду лей ст али исполь-
зовать внедренные макросы (что это т ак ое, вы ск оро узна-
ете); и нак онец, принципиально изменилось оформление
окна базы данных. Поэтому мы ост ановились на A ccess 10.
6 ПРЕДИСЛОВИЕ
Сейчас нет недост атк а в литературе по базам данных.
В частности, для первого знак омства с A ccess мо жно
рек омендовать [3], для серьезной работы – [1], для осно-
вательного изучения теории – [2].
Автор насто ящей книги ис х о дил из того, что лучший
способ на учитьс я программировать – самому написать
программу . Прило ж ение A ccess чит ателю предлаг аетс я со-
здать совместно с автором. Это бу дет база данных, отра-
ж ающая работу шк ольных кружк ов. Для ее разработки
мы ограничимс я минимальными средствами. В частности,
не бу дем использовать мо ду ли, написанные на встроен-
ном язык е VBA – Visual Basic for Applications. Зато по-
дробно проиллюстриру ем ст андартные действия, к оторые
выполняютс я в процессе разработки баз данных. Пособие
ориентировано на практическую сост авляющую работы с
A ccess. Автор, наск ольк о это возмо жно, избег ал уг лубле-
ния в теоретические вопросы. Хочетс я надеятьс я, что кни-
г а бу дет полезна широк ому кругу чит ателей. Как и преж-
де, замечания и предло ж ения вы мо ж ете направлять по
о дному из адресов:
b elyi@p etrsu.ru или kurs_b elyi1@mail.ru .
Евгений Белый
Дек абрь 2019
Г лава 1. Сущности, т аблицы
и запросы
§ 1.1. Концепту альная мо дель
5⇔ 12 Любой проект на чинаетс я с к онцепту альной
мо дели. Действительно, прежде чем приступить к боль-
шой работе, надо понять, что следу ет с делать . Слово
«к онцепция» (лат . c onc eptio ) озна чает «система понима-
ния» . Концепту альная мо дель – это описание мно ж ества
основных понятий и связей между ними. В теории баз
данных т акие понятия называют основными сущност я-
ми [2, с. 41]. Мы выделим три основные сущности: уче-
ники, препо даватели и кружки. На рис. 1 они обозна чены
Рис. 1. Концепту альная мо дель
8 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
замкнутыми област ями. Стрелочки пок азывают связи меж-
ду сущност ями. Два символа « ∞ » у к онцов стрелки слева
озна чают , что в кружк е мо ж ет быть ск ольк о уго дно учени-
к ов и что о дин ученик мо ж ет заниматьс я в любом к оличе-
стве кружк ов. На самом деле здесь бу дут иметь место есте-
ственные ограничения (во вс як ом случае ни о дин шк оль-
ник не мо ж ет заниматьс я в беск онечном к оличестве круж-
к ов). Однак о ограничения у ст анавливаем не мы. Симво-
лы «∞ » и «1» у к онцов стрелки справа говор ят: занятия
в к аждом кружк е ведет о дин препо даватель, но препо да-
ватель мо ж ет работ ать в неск ольких кружк ах.
Сущность – это то, о чем мы бу дем хранить данные. Дан-
ные должны отраж ать интересующие нас свойства сущно-
сти. У к аждой сущности есть набор х арактерных для нее
свойств. Например, сущность «Автомобиль» имеет свой-
ство «Пробег» . Для к аждого автомобиля, предст авителя
этой сущности, свойство «Пробег» принимает к онкретное
зна чение. «Образование» мо ж ет быть свойством сущности
«Лю ди» , но не применимо к автомобилю. Зато свойство ав-
томобиля «Пробег» не мо ж ет х арактеризовать человек а.
В базе данных вс я информация о к аждом предст авителе
сущности хранитс я к ак запись . Запись разбит а на поля,
отраж ающие различные х арактеристики сущности. Т аким
образом, единица данных, образующих запись, – поле .
§ 1.1. Концепту альная мо дель 9
Каждое поле должно иметь имя, позволяющее от личать
его от других полей. Поле со дер жит данные о дного и того
ж е типа для к аждого предст авителя сущности. В нашей
базе данных запись о предст авителе сущности «Ученик»
бу дет хранить его фамилию и имя в поле «ФИ» к ак тек-
стовую строку , а номер класса – в поле «Класс» к ак целое
число от 1 до 11. Т еперь определим данные, с к оторыми
мы собираемс я работ ать. Для этого выделим предст авля-
ющие для нас интерес свойства к аждой сущности.
1) Ученики .
Для ученик ов зарезервиру ем поля, хранящие фамилию,
имя, дату ро ждения, номер и букву класса, телефонный
номер и к оммент арии.
№ Поле Описание
1 ФИ Фамилия и имя
2 ДР Дат а ро ждения: день, мес яц и го д
3 Класс Номер от 1 до 11
4 Буква Буква после номера класса
5 Т елефон Номер телефона
6 Коммент арии Дополнительная информация
В процессе работы с базой мо ж ет ок азатьс я, что мы выбра-
ли не самый у да чный набор свойств. Ничего страшного.
Р азработк а базы данных – творческий процесс,
10 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
и лучшее решение мо ж ет прийти не сразу . Более того, к ак
бы доск онально не очертили мы набор свойств, бу дут воз-
ник ать ситу ации, к ог да данные на вх о де не вписываютс я
в нашу мо дель. Именно поэтому мы добавили в т аблицу
поле «Коммент арии» , предназна ченное для хранения про-
извольной тек стовой строки. Если проблемы соответствия
данных на вх о де принятой мо дели возник ают слишк ом ча-
сто, то к онцепту альная мо дель нуждаетс я в доработк е.
2) Препо даватели.
Первое поле назовем «ФИО» . Оно бу дет хранить фами-
лию, имя и отчество, т . е. полное имя препо давателя.
Иног да для фамилии, имени и отчества выделяют три
от дельных поля, но т ак ой по дх о д мо ж ет привести к непред-
виденным осло жнениям, например, если ваш круж ок
бу дет вести Абу Р ейх ан Мух аммед ибн Ахмед аль-Бируни.
Конечно, это шутк а: персидский ученый аль-Бируни жил
в XI в. н. э. Но действительно, полные имена предст ави-
телей нек оторых наро дов заметно от личаютс я от наших.
А потому полное имя лучше хранить в о дном поле. Вести
круж ок мо ж ет не тольк о шк ольный учитель, но и мастер
шефствующего над шк олой заво да, кто-то из ро дителей
ученик ов и т . д. Веро ятно, предст авляет интерес долж-
ность препо давателя по месту основной работы, его об-
разование, к онт акты (в данном случае телефон). Мо жно
§ 1.1. Концепту альная мо дель 11
добавить электронный адрес.
№ Поле Описание
1 ФИО Фамилия, имя, отчество
2 ДР Дат а ро ждения: день, мес яц и го д
3 Образование Высшее, среднее специальное и т . д.
4 Т елефон Номер телефона
5 Должность Должность по месту работы
6 Коммент арии Дополнительная информация
3) Кружки.
Здесь, помимо названия кружк а и ФИО препо давателя,
важно планиру емое к оличество часов занятий. Если назва-
ние кружк а не полностью раскрывает его цели и зада чи,
то по дробности мо жно записать в поле «Коммент арии» .
№ Поле Описание
1 Название Название кружк а
2 Препо даватель ФИО препо давателя
3 Часы Количество часов за го д
4 Коммент арии Дополнительная информация
12 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
§ 1.2. Т аблица «Ученики»
7⇔ 23 Прежде всего создадим папку , в к оторой бу дет
хранитьс я файл базы данных. Назовем эту папку
«Кружки» . Откроем папку и щелкнем в ее области пра-
вой клавишей мышки. В открывшемс я меню выберем:
Создать ->Прило ж ение Microsoft Office A ccess (рис. 2а).
В папк е по явитс я файл с именем «Прило ж ение Microsoft
Рис. 2. Создание прило ж ения
Office A ccess» и расширением accdb. Переимену ем файл.
Назовем его «Кружки» (рис. 2б). Р азумеетс я, расширение
ост анетс я без изменения. Откроем файл двойным щелчк ом
левой клавиши мыши. На экране по явитс я окно базы дан-
ных (рис. 3). Обратите внимание: слева в разделе «Все
объекты A ccess» пок а пу сто, потому что мы еще не созда-
ли ни о дного объект а.
Создание базы данных обычно на чинают с т аблиц. Каж-
дой из перечисленных в предыдущем разделе сущностей
§ 1.2. Т аблица «Ученики» 13
Рис. 3. Окно базы данных
бу дет соответствовать т аблица. При этом записи соответ-
ству ет строк а т аблицы, а полю – столбец. На логическ ом
уровне у добно счит ать, что данные хранятс я в т аблицах и
располаг аютс я в памяти к омпьютера последовательно: за-
пись за записью, поле за полем. Все записи т аблицы име-
ют о динак овую длину (в байт ах), что позволяет избеж ать
лишних ссылок и обеспечивает быстрый доступ к нужной
записи. Аналогично о дноименные поля в запис ях имеют
о динак овую длину и принадлеж ат к о дному типу данных.
Что т ак ое тип данных, знают все, к ому прих о дилось иметь
дело х оть с о дним из язык ов программирования. Типы
14 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
данных, к оторые мо ж ет предло жить нам A ccess, мы раз-
берем по х о ду создания т аблиц.
Для создания т аблицы щелкнем по пункту вер хнего
меню «Создание» , затем по пиктограмме «Конструктор
т аблиц» . На экране по явитс я окно к онструктора (рис. 4).
Рис. 4. Конструктор т аблиц
В этом окне мы мо ж ем создавать и редактировать струк-
туру т аблицы. Окно разбито на три к олонки: «Имя поля» ,
«Тип данных» и «Описание» . Первые две к олонки запол-
няютс я об язательно, в к олонку «Описание» вы мо ж ете за-
носить любую информацию, по ясняющую со дер ж ание ее
полей. Мы ост авим заполнение этой к олонки на у смотре-
ние чит ателя. Ниж е слева располо ж ены свойства полей,
к оторые вы мо ж ете изменять по мере необ х о димости.
§ 1.2. Т аблица «Ученики» 15
Поля отраж ают выделенные нами в предыдущем пункте
свойства сущностей. Первая т аблица бу дет хранить дан-
ные о сущности «Ученик» .
1. ID_ученик. Мы добавили о дно, не преду смотренное
ранее, поле «ID_ученик» (см. рис. 4). Во второй к олонк е
развернем меню и выберем тип данных «Счетчик» . Поле
типа «Счетчик» в процессе работы с т аблицей заполняетс я
автоматически и хранит к о д записи. Если не менять при-
нятые по умолчанию свойства поля, то для первой записи
зна чение «ID_ученик» бу дет 1 и далее для к аждой сле-
дующей записи бу дет увеличиватьс я на 1. Т аким образом,
ник ог да не по явитс я двух записей с о динак овым к о дом.
За чем нужно это поле, ск оро бу дет понятно.
2. ФИ. На следующей строк е зададим поле «ФИ» , хра-
нящее фамилию и имя ученик а (рис. 5). Тип данных вы-
берем тек стовый. Здесь требу етс я внести нек оторые уточ-
нения в свойства поля. Р азмер поля по умолчанию мо-
ж ет ок азатьс я слишк ом большим. У ст ановим 40. В строк е
«Об язательное поле» у ст ановим «ДА» . Это зна чит , что си-
стема отк аж етс я со хранять запись, в к оторой не заполнено
это поле. Действительно, ина че запись просто бесполезна.
Мо ж ет возникнуть вопрос: а не с делать ли все поля об я-
зательными? Не стоит! Часто, создавая запись, вво дят не
все данные, и ост альные поля заполняютс я в дальнейшем
16 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
Рис. 5. Первые два поля т аблицы
по мере поступления новой информации. Зададим следу-
ющие пять полей (рис. 6).
3. ДР . Поле хранит дату ро ждения. Выберем тип данных
«Дат а/время» . Он позволяет хранить не тольк о день, ме-
с яц и го д, но и часы, минуты и секунды. По ж алуй, это
слишк ом! В разделе «Свойства поля» уточним формат .
Для этого в строк е «Формат поля» у ст ановим зна чение
«Длинный формат даты» .
§ 1.2. Т аблица «Ученики» 17
Рис. 6. Все поля
4. Класс. В четвертую строку т аблицы к онструктора вве-
дем имя поля «Класс» . Выберем тип поля «Числовой» .
Здесь тип т акж е нуждаетс я в уточнении. По умолчанию
размер поля – «Длинное целое» . Это число, принадлеж а-
щее интервалу от −2 147483 648 до+2 147 483 647 . Т аких
классов не бывает! Откроем в строк е «Р азмер поля» меню
и выберем пункт «Байт» . Если бы мы этого не с делали, ни-
чего страшного не случилось бы. Однак о, если вы х отите
ст ать программистом, вы должны воспит ать в себе при-
вычку эк ономить память. Уместно использовать еще о дно
свойство числового поля – «У словие на зна чение» . Запи-
шем в этой строк е: >= 1𝐴𝑛𝑑 < = 11 . Это зна чит , номер
класса долж ен нах о дитьс я на интервале от 1 до 11. Если
18 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
вы попробу ете ввести к ак ое-либо иное зна чение, система
выдаст сообщение об ошибк е.
5. Буква. Класс полностью определяетс я номером и бук-
вой. Мо ж ет возникнуть вопрос: почему бы нам сразу
не задать символьное поле и писать просто 9а, 10б и т . д.?
Но тог да мы не смог ли бы делать выборки по всем 9-м,
10-м и прочим классам. Поэтому ост авим для буквы от-
дельное тек стовое поле, к оторое т ак и назовем – «Буква» .
Длину этого поля мо жно у ст ановить равной 1. Тут есть
по дво дные к амни. Сравните два зна чения поля: «a» и «а» .
Вы ск аж ете, что они совпадают . А вот и нет! В первом
введена анг лийск ая «а» , а во втором – ру сск ая. Для си-
стемы это разные символы, поск ольку им соответствуют
разные к о ды. Т акие ситу ации непременно возникнут при
заполнении базы данных, и у нас бу дут по являтьс я «лиш-
ние» классы. Чтобы избеж ать по добных неприятностей,
в строк е поля «Буква» развернем меню и выберем тип
данных «Мастер по дст ановок» . На самом деле это ник ак ой
не тип данных, а мех анизм, к оторый позволяет выбирать
зна чение поля из списк а. При наж атии на «Мастер по д-
ст ановок» на чнетс я диалог с «мастером» . У ст ановим пе-
реключатель в поло ж ение «Бу дет введен фик сированный
набор...» (рис. 7) . «Далее» . Введем все возмо жные зна-
чения поля «Буква» (рис. 8). «Далее» . Мастер попросит
§ 1.2. Т аблица «Ученики» 19
Рис. 7. Выбор фик сированного набора зна чений
Рис. 8. Фик сированный набор зна чений
задать имя поля. Ост авим прежнее – «Буква» . «Г отово» .
6. Т елефон. Для номера телефона выберем тип данных
«Т ек стовый» . Р азмер поля – 12. Как пок азано на рис. 9,
у ст ановим маску вво да, т . е. набор символов, задающий
формат вво димой информации. Символ «#» озна чает , что
на первом месте в тек стовой строк е могут сто ять « + » , «− » ,
20 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
Рис. 9. Формат номера телефона
цифра или пробел; символ «9» – на этом месте мо ж ет сто-
ять тольк о цифра или пробел; перед символами, к оторые
не вво дятс я, но должны сто ять на фик сированных мест ах,
ст авитс я знак «∖ » .
7. Коммент арии. Выберем тип данных «Поле MEMO» .
Последнее озна чает , что поле мо ж ет хранить тек стовую
строку произвольной длины. Сейчас чит атель имеет пол-
ное право возмутитьс я. Ведь выше было ск азано, что к аж-
дое поле т аблицы имеет фик сированную длину . На самом
деле поле MEMO хранит тольк о ссылку на тек стовую стро-
ку , а сама строк а располаг аетс я вне т аблицы. Поэтому по-
ля MEMO неж елательно использовать для поиск а и сорти-
ровки. Перех о д на строку проис х о дит по ссылк е, а зна чит ,
эти операции бу дут выполнятьс я гораздо медленнее.
По х о ж е, мы сформировали структуру т аблицы, о днак о упу-
стили о дин важный момент . Если сейчас закрыть окно
к онструктора с со хранением резу ль т ат а, система напомнит
нам, что мы не задали ключевое поле . За нами ост ает-
с я право проигнорировать напоминание, но, к ак правило,
§ 1.2. Т аблица «Ученики» 21
ключевое поле лучше все-т аки иметь. Ключевым назы-
вают поле, к оторое о днозна чно идентифициру ет запись.
В принципе, ключевым мо жно с делать любое поле. Но,
если, например, мы возьмем в к а честве ключевого поле
«ФИ» , система отк аж етс я со хранить запись об Иванове
Ване, к ог да в т аблице есть уж е о дин Иванов Ваня. Заме-
тим, в шк оле не т ак уж редк о встречаютс я ученики с сов-
падающими фамилиями и именами. Ключом мо ж ет быть
и совокупность полей. Однак о последнее не всег да реша-
ет проблему . Т ак, в базе данных большой больницы мо-
гут встретитьс я два Иванова Ивана Ивановича с совпа-
дающими дат ами ро ждения. А перепут ать двух больных
мы уж точно не имеем права. Вот почему создают специ-
альные поля с к о дом записи. Мы с этой целью добавили
к полям, хранящим данные о сущности, поле «ID_ученик» .
Оно дает к аждому ученику уник альный к о д. Cделаем его
ключевым. Для этого у ст ановим ук азатель на строк е
«ID_ученик» и щелкнем по изображ ению ключа с по д-
писью «Ключевое поле» в левом вер хнем уг лу окна базы
данных. Слева от имени поля «ID_ученик» по явитс я изоб-
раж ение ключик а. Если теперь чит атель еще раз взг ля-
нет на рис. 6 (с. 17), он заметит , что мы заранее с делали
это поле ключевым. Но мы ост авили разговор о ключевых
полях «на десерт» .
22 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
Закроем окно к онструктора, т . е. нажмем на крестик
в правом вер хнем его уг лу . По явитс я диалоговое окно
«Со хранить изменения мак ет а или структуры объект а?» .
Ответим: «ДА» . В следующем окне нам предло ж ат дать
имя т аблице. Назовем ее «Ученики» . Слева
в области «Все объекты A ccess» по явилась первая
т аблица с присвоенным нами именем. Если в дальнейшем
у нас возникнет необ х о димость отредактировать структу-
ру т аблицы (например, добавить еще о дно поле), мы мо-
ж ем щелкнуть правой клавишей мышки по имени т аблицы
и в открывшемс я меню выбрать пункт «Конструктор» . На
экране по явитс я окно к онструктора.
В процессе разработки прило ж ения нуж ен реальный или
по х о жий на реальный набор данных. Щелчк ом по имени
«Ученики» в области «Все объекты A ccess» откроем т аб-
лицу для заполнения. Мы ввели 20 записей (рис. 10). Ес-
ли введем больше, бу дет тольк о лучше. При вво де данных
следу ет обратить внимание на следующие моменты:
1. Хот я дат а ро ждения предст авляетс я в длинном фор-
мате, вво дить ее у добней в кратк ом. Например, вместо
«1 январ я 2005» мо жно ввести «1.1.5» или «1/1/5» .
2. Зна чение поля «Буква» мо жно выбрать из меню, но
быстрей ввести с клавиатуры.
3. Поле «Коммент арии» не стоит заполнять сразу .
§ 1.3. Т аблица «Препо даватели» 23
Рис. 10. Список ученик ов
Т еперь, к ог да мы зак ончили вво д данных, закроем т абли-
цу , щелкнув по крестику в правом вер хнем ее уг лу . Т аким
образом, с объектом Microsoft A ccess «Т аблицы» мы мо-
ж ем работ ать в двух режимах: режиме т аблицы (рабочий
режим), к ог да вво дим или редактиру ем записи,
и режиме к онструктора, к ог да создаем или редактиру ем
структуру т аблицы.
§ 1.3. Т аблица «Препо даватели»
12⇔ 30 Сна чала создадим вспомог ательную т аблицу-
справочник, в к оторой бу дут хранитьс я виды образова-
ния. Для этого, к ак и при создании предыдущей т аблицы,
24 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
щелкнем по пункту вер хнего меню «Создание» , а затем
по пиктограмме «Конструктор т аблиц» . В к онструкторе
определим два поля: «ID_образование» и «Образование» .
Первое поле типа «Счетчик» с делаем ключевым, второе
– тек стовой строк ой из 15 символов (рис. 11а). Закроем
Рис. 11. Т аблица «Образование»
к онструктор с со хранением созданной структуры. Новой
т аблице дадим имя «Образование» . В области «Все объ-
екты A ccess» по явилась новая т аблица. Откроем т аблицу
двойным щелчк ом по ее имени и заполним, к ак пок аза-
но на рис. 11б. Закроем т аблицу . В ближ айшее время она
нам понадобитс я. А пок а создадим в режиме к онструктора
т аблицу , к оторая бу дет хранить данные о препо давателях.
Определим ее поля, действу я, к ак в § 1.2:
1. ID_препо даватель. Счетчик. Это поле сразу мо жно
с делать ключевым.
2. ФИО. Т ек стовая строк а длиной в 50 символов. По-
ск ольку без этого поля запись тер яет смысл, с делаем это
§ 1.3. Т аблица «Препо даватели» 25
поле об язательным. Ост альные поля, к ак и прежде, ост а-
вим необ язательными.
3. ДР . Определяетс я, к ак и в предыдущем параграфе.
4. Образование. Р азвернем меню в столбце «Тип дан-
ных» и выберем «Мастер по дст ановок» . На экране по явит-
с я первое диалоговое окно мастера (рис. 12). У ст ановим
Рис. 12. Выбор способа по дст ановки
переключатель в поло ж ение «...получит зна чение из дру-
гой т аблицы...» и нажмем «Далее» . По явитс я окно, в к о-
тором нам предстоит с делать выбор т аблицы (рис. 13а).
Нас интересу ет т аблица «Образование» . «Далее» . В сле-
дующем диалоговом окне перебросим интересующие нас
поля из левой области «Доступные поля» в правую «Вы-
бранные поля» (рис. 13б). Поск ольку доступны всего два
поля, со дер ж ащие к о д и соответствующий ему тек ст , на-
жмем двойную стрелку и перебросим сразу все. «Далее» .
У ст ановим сортировку записей по возраст анию зна чений
26 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
Рис. 13. Выбор т аблицы и полей
поля «Образование» (рис. 14а), т . е. в алфавитном пор яд-
к е. «Далее» . См. рис. 14б. Опять «Далее» . Ост авим имя
Рис. 14. По дст ановк а для поля «Образование»
поля «Образование» . Поск ольку мастер у ст анавливает связь
с т аблицей-справочник ом, система потребу ет со хранить т аб-
лицу (рис. 15). Со храним т аблицу по д именем «Препо-
даватели» . Обратите внимание, что после диалог а мастер
у ст ановил для поля тип данных «Числовой» (рис. 16).
§ 1.3. Т аблица «Препо даватели» 27
Рис. 15. Со хранение т аблицы
Рис. 16. Структура т аблицы «Препо даватели»
Пришло время по яснить, что ж е т ак ое эт а самая по дст а-
новк а. Для этого рассмотрим более наг лядный пример.
Пу сть мы работ аем с базой данных большой фирмы.
В базе есть т аблица «Сотру дники» , и в ней поле «От дел» –
тек стовая строк а с названием от дела, в к отором работ ает
сотру дник. Какие «приключения» ждут нас в этом слу-
чае? Во-первых, названия от делов бывают длинные и на-
бор их отнял бы много времени у оператора. О нераци-
ональном рас х о довании памяти мы уж е не говорим. Во-
вторых, лю ди не тольк о могут делать ошибки, но
28 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
и делают их. Даж е лишний пробел в названии от дела для
системы озна чает другую тек стовую строку . В базе ст али
бы по являтьс я «двойники» от делов. В-третьих, если бы
вдруг изменилось название о дного из от делов, нам при-
шлось бы вручную менять его в к аждой записи, г де оно
встречаетс я. И если бы тольк о в о дной т аблице. Поле «От-
дел» мо ж ет фигурировать во многих других т аблицах. Уж е
страшно? Поэтому разумно во всех т аблицах вместо на-
звания хранить к о д от дела. Обычно к о д более к омпактен.
Если изменитс я название от дела, к о д ост анетс я прежний.
Соответствие между к о дами и названиями от делов хра-
нитс я в т аблице-справочник е. Однак о пользователь не дол-
ж ен дер ж ать в голове к акие-либо к о ды. Тут и прих о дит на
помощь «Мастер по дст ановок» . В т аблице хранитс я к о д,
но мастер выво дит на экран соответствующее зна чение из
справочник а. Здесь мы ст алкиваемс я с о дним из про явле-
ний принципа нормирования данных. В случае изменения
названия от дела его потребу етс я изменить всего в о дном
поле о дной записи. Несоблю дение этого принципа ведет
к нарушению целостности данных.
5. Т елефон. Создаетс я т ак ж е, к ак и в предыдущем
параграфе.
6. Должность. Т ек стовое поле, хранящее должность пре-
по давателя по основному месту работы.
§ 1.4. Т аблица «Кружки» 29
7. Коммент арии. Поле MEMO.
Закроем окно к онструктора с со хранением и ту ж е т аб-
лицу откроем в рабочем режиме. Как вы помните, для
этого дост аточно с делать двойной щелчок по имени т абли-
цы «Препо даватели» . Заполнение полей больше не должно
вызывать затру днений. Заметим, что зна чение поля «Об-
разование» мо жно вво дить не тольк о из меню (рис. 17).
Часто у добней на чинать набор с клавиатуры. В данном
Рис. 17. Выбор зна чения поля в меню
случае, к ак тольк о вы введете букву «в» , у ст ановитс я зна-
чение поля «Высшее» . Мы опять ввели небольшое к оличе-
ство записей (рис. 18). Ведь пок а данные нужны тольк о
Рис. 18. Т аблица «Препо даватели»
для тестирования прило ж ения.
30 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
§ 1.4. Т аблица «Кружки»
23⇔ 33 Отт алкиваясь от свойств сущности «Кружки» ,
создадим еще о дну т аблицу . Определим ее поля:
1. ID_круж ок. Счетчик. Ключевое поле.
2. Название. Т ек стовое. Р азмер – 40. Об язательное.
3. Препо даватель. На чинаем диалог с «Мастером по д-
ст ановок» . Данные берем из т аблицы «Препо даватели» .
Перебросим нужные нам поля – «ID_препо даватель»
и «ФИО» – из левой области в правую (рис. 19),
у ст ановим сортировку по возраст анию поля «ФИО» .
Рис. 19. Выбор полей для по дст ановки
Далее система пок аж ет нам столбец по дст ановки (рис. 20).
Имя поля ост авим «Препо даватель» . Поск ольку мы у ст а-
новили связь с другой т аблицей, система потребу ет со хра-
нить текущую. Со храним ее по д именем «Кружки» . Поле
«Препо даватель» имеет тип данных «Числовой» , т . е. на
§ 1.4. Т аблица «Кружки» 31
Рис. 20. Столбец по дст ановок
самом деле т аблица хранит числовой к о д препо давателя.
4. Часы. Выберем тип данных «Числовой» . В свойствах
поля возьмем формат «Целое» .
5. Коммент арий. Поле MEMO.
На рис. 21 пок азано окно к онструктора. Закроем к онструк-
Рис. 21. Структура т аблицы «Кружки»
тор с со хранением резу ль т атов. Т еперь в области «Все объ-
екты A ccess» мы видим имена четырех т аблиц (рис. 22).
Откроем т аблицу «Кружки» и введем неск ольк о записей
32 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
Рис. 22. Все объекты
(рис. 23). Конечно, кружк ов в шк оле должно быть
Рис. 23. Т аблица «Кружки»
гораздо больше. Но нам сейчас много не надо.
§ 1.5. Связи 33
Т аким образом, мастер по дст ановок у ст ановил связь меж-
ду т аблицами «Кружки» и «Препо даватели» . Связь меж-
ду т аблицами «Ученики» и «Кружки» пок а не у ст ановле-
на. И мастер по дст ановок здесь нам не помо ж ет .
§ 1.5. Связи
30⇔ 36 Т аблицы «Ученики» и «Кружки» связаны бо-
лее сло жным образом. Т ак ая связь мо ж ет рассматривать-
с я к ак еще о дна сущность, и мы зададим ее при помощи
т аблицы. Эт а т аблица бу дет иметь три поля:
1. ID_ученик_круж ок. Счетчик. Ключевое поле.
2. Ученик. В столбце «Тип данных» выбираем «Мастер
по дст ановок» . По дст ановки берем из т аблицы «Ученики» .
Выбранные поля – «ID_ученик» и «ФИ» (рис. 24). Сорти-
ровк а по возраст анию зна чений «ФИ» . Ост авим имя поля
«Ученик» . При создании связи система потребу ет со хра-
нить т аблицу . Со храним по д именем «Ученик_круж ок» .
3. Круж ок. Снова использу ем «Мастер по дст ановок» . По д-
ст ановки берем из т аблицы «Кружки» . Выберем
поля «ID_круж ок» и «Название» (рис. 25). Сортиру ем
по возраст анию зна чений поля «Название» .
Закроем к онструктор с со хранением резу ль т атов и откро-
ем т аблицу для вво да данных. Пок а заполним о дну строку
34 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
Рис. 24. По дст ановк а из т аблицы «Ученики»
Рис. 25. По дст ановк а из т аблицы «Кружки»
(рис. 26). Закроем т аблицу . Т еперь самое время рассмот-
Рис. 26. Вво д данных в т аблицу «Ученик_круж ок»
реть систему связей между созданными нами
т аблицами. Выберем пункт меню «Р абот а с базами дан-
ных» и щелкнем по пиктограмме «Сх ема данных» .
§ 1.5. Связи 35
В открывшемс я окне щелкнем правой клавишей мышки
и выберем пункт меню «Отобразить все» . В окне по явятс я
все созданные нами т аблицы и связи между ними. Здесь
ж е мо жно у ст ановить новые связи. Для этого дост аточ-
но поместить ук азатель на интересующее нас поле о дной
т аблицы, наж ать левую клавишу и, не отпу ск ая ее, у ст а-
новить ук азатель на соответствующем поле другой т аб-
лицы. После того к ак мы отпу стим клавишу , по явитс я ли-
ния, соединяющая соответствующие поля двух т аблиц. Р а-
зумеетс я, не все поля мо жно и нужно связывать. Т абли-
цы на с х еме мо жно передвиг ать, чтобы добитьс я у добно-
го для нас располо ж ения. Р азместим их т ак, к ак пок азано
на рис. 27. На с х еме видно, что наша база данных
Рис. 27. Сх ема данных
предст авляет собой нечто целое, а не просто набор т аблиц.
Закроем окно с х емы данных и займемс я другим классом
объектов.
36 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
§ 1.6. Запросы
33⇔ 43 В повседневной жизни по д запросом понимают
официальное обращение с требованием, просьбой о предо-
ст авлении к аких-либо сведений. Если мы обращаемс я
к программной системе, просьба должна быть сост авлена
на понятном ей язык е. В нашем случае – это язык управ-
ления базами данных. К счастью, в A ccess почти все язы-
к овые проблемы решает «Конструктор запросов» . Запро-
сы бывают на выборку , мо дифик ацию и у даление данных,
а т акж е на создание т аблиц. Но пок а нас бу дут интересо-
вать тольк о запросы на выборку . Т акие запросы позволя-
ют отбирать записи по о дному или неск ольким признак ам,
собирать данные из разных т аблиц, группировать записи
и получать по группам обобщенную информацию: среднее,
наибольшее или наименьшее зна чение поля, к оличество
записей в группе. Возмо жности выбора в первую очередь
определяютс я разнообразием полей. Р езу ль т аты выполне-
ния запросов система предст авляет в виде т аблиц, внешне
ничем не от личающих с я от тех, к оторые мы тольк о что
создали. Поэтому иног да запрос на выборку называют ло-
гическ ой т аблицей. В этом параграфе мы создадим три
запроса, со дер ж ащие все записи нек оторых т аблиц, но не
все поля. Эти запросы приго дятс я нам в дальнейшем.
§ 1.6. Запросы 37
1. Ученики Запрос. Этот запрос долж ен со дер ж ать спи-
сок ученик ов, занимающих с я в кружк ах. Выберем
пункт меню «Создание» и щелкнем по пиктограмме «Ма-
стер запросов» . Мы мог ли бы создать запрос и непосред-
ственно в режиме «Конструктор запросов» . Однак о мастер
это делает быстрее. Дост аточно лишь в процессе диалог а
объяснить мастеру , что мы х отим. В первом диалоговом
окне выберем «Простой запрос» , к ак пок азано на рис. 28.
«Далее» . Слева в вер хней части следующего окна откроем
Рис. 28. Выбор вида запроса
меню и выберем источник данных для запроса – т аблицу
«Ученики» . Пользу ясь стрелочк ой, перебросим слева на-
право интересующие нас поля: «ID_ученик» , «ФИ» ,
«Класс» и «Буква» (рис. 29). «Далее» . У ст ановим пере-
ключатель в поло ж ение «по дробный» (рис. 30). «Далее» .
Мастер предлаг ает дать запросу имя «Ученики Запрос» .
Мо жно дать запросу другое имя, но мы ост авим предло-
ж енное мастером. «Г отово» . На экране по явитс я т абличное
предст авление запроса (рис. 31). Сразу мо жно заметить,
38 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
Рис. 29. Выбор т аблицы и полей
Рис. 30. Выбор по дробного отчет а
Рис. 31. Т абличное предст авление запроса
§ 1.6. Запросы 39
что иск ать ученик а в т ак ом списк е неу добно. Хотелось бы
видеть список в алфавитном пор ядк е. Эту проблему мы
сейчас решим. Обратим внимание, что в области «Все объ-
екты A ccess» по явилс я новый объект «Ученики Запрос» .
Закроем запрос. Щелкнем правой клавишей по имени за-
проса: «Ученики Запрос» . В развернувшемс я вертик аль-
ном меню выберем «Конструктор» . На экране по явитс я ок-
но к онструктора запросов (рис. 32). В вер хней части окна
Рис. 32. Конструктор запросов
мы видим т аблицу «Ученики» , точнее список ее полей;
внизу – выбранные поля. Каждому полю соответству ет
столбец т аблицы. В первой строк е даны имена полей, во
второй – имя т аблицы. Далее нам придетс я сост авлять за-
просы из данных разных т аблиц и эт а строк а пок аж ет ,
40 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
из к ак ой т аблицы взято поле. Третья строк а – «Cорти-
ровк а» . Откроем во втором столбце третьей строки меню
и выберем «По возраст анию» . Это зна чит , записи бу дут
упор ядочены в алфавитном пор ядк е зна чений поля «ФИ» .
В четвертой строк е изображ ены «птички» . Если о дну из
«птичек» убрать, щелкнув по ней левой клавишей, соот-
ветствующее поле не бу дет выво дитьс я на экран. В пятой
строк е записываютс я у словия отбора данных. Это на слу-
чай, если мы зах отим видеть не все, а тольк о интересую-
щие нас записи. Например, если в пятую строку столбца
«Класс» ввести число 10, при открытии запроса в рабо-
чем режиме мы увидим тольк о записи об ученик ах 10-х
классов. Но нас пок а интересу ет общий список. Закроем
к онструктор, откроем запрос в рабочем режиме и убедим-
с я, что записи действительно располо ж ены по возраст а-
нию поля «ФИ» . Закроем запрос. Т еперь нам предстоит
создать еще два запроса. Диалог с мастером ведетс я, к ак
и в случае первого запроса. Поэтому здесь воздер жимс я
от по дробных иллюстраций.
2. Препо даватели Запрос. Откроем «Мастер запросов» .
Выберем т аблицу «Препо даватели» , а в ней поля
«ID_препо даватель» и «ФИО» (рис. 33). На рис. 34 пок а-
зан запрос в рабочем режиме. Закроем запрос и откроем
его в режиме к онструктора. Зададим сортировку записей
§ 1.6. Запросы 41
Рис. 33. Выбор т аблицы и полей
Рис. 34. Препо даватели Запрос
по возраст анию зна чений «ФИО» . Закроем к онструктор.
3. Кружки Запрос. Откроем «Мастер запросов» . Выбе-
рем т аблицу «Кружки» , а в ней поля «ID_круж ок» , «На-
звание» и «Препо даватели» . Запрос со храним по д именем
«Кружки Запрос» . На рис. 35 пок азан запрос в рабочем
режиме.
42 Г ЛАВА 1. СУЩНОСТИ, Т АБЛИЦЫ И ЗАПРОСЫ
Рис. 35. Сх ема данных
В дальнейшем нам часто придетс я создавать запросы на
выборку к ак источники данных для различных объектов
Microsoft A ccess.
Г лава 2. Формы и макросы
Вво д, редактирование и просто просмотр данных непо-
средственно в т аблицах и запросах очень неблаго дарное
занятие. Во-первых, если т аблица большая, много време-
ни ух о дит на перемещение по строк ам и столбцам. Во-
вторых, нек оторые поля, например MEMO, изна чально не
предназна чены для просмотра в т аблице. В-третьих, ино-
г да х очетс я видеть, по возмо жности целик ом, тольк о нуж-
ную запись. И нак онец, для эффективной работы с базой
данных требуютс я еще нек оторые функции управления!
Все эти проблемы решают формы.
§ 2.1. Форма «Ученики»
36⇔ 52 На чнем с создания формы, отображ ающей все
поля записи в о дном окне. Выберем пункт меню «Созда-
ние» и щелкнем по пиктограмме «Мастер форм» . В первом
диалоговом окне в к а честве источник а данных выберем
т аблицу «Ученики» и наж атием двойной стрелки перебро-
сим все «Доступные поля» в список «Выбранные поля»
(рис. 36). «Далее» . Выберем вид формы «в о дин столбец»
(рис. 37). «Далее» . Мастер предлаг ает назвать форму ,
к ак и соответствующую т аблицу , – «Ученики» (рис. 38).
44 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Рис. 36. Выбор т аблицы и полей
Рис. 37. Выбор внешнего вида формы
Ост авим это название и нажмем «Г отово» . На экране от-
кроетс я форма (рис. 39). В вер хней части – «Заголовок
формы» , г де в данный момент располо ж ена надпись «Уче-
ники»; ниж е – «Область данных» . Здесь предст авлены все
поля записи с надпис ями. Если у ст ановить ук азатель
§ 2.1. Форма «Ученики» 45
Рис. 38. Вво д имени формы
Рис. 39. Форма «Ученики»
в поле «Коммент арии» , то в левой его части по явитс я поло-
са прокрутки. Слева – область выделения. После щелчк а
по ней левой клавишей область окраситс я в черный цвет .
46 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Если после этого наж ать на клавиатуре «Delete» , запись
бу дет у далена. Но мы пок а этого делать не бу дем! Внизу
вы видите кнопки перех о да. Сейчас у нас на экране отоб-
раж ена запись номер 1 из 20. С помощью стрелочек мы
мо ж ем перемещатьс я по запис ям.
Рис. 40. Форма «Ученики» в режиме к онструктора
В т ак ой форме у добно работ ать с данными к онкретного
ученик а, но тру дно найти нужную запись.
Т еперь закроем форму и откроем в режиме к онструкто-
ра (рис. 40). В этом режиме мы мо ж ем перест авлять поля,
менять надписи (сейчас перед к аждым полем стоит
надпись, совпадающая с его именем). Над к аждой
§ 2.1. Форма «Ученики» 47
областью располо ж ена планк а с названием этой области.
В режиме к онструктора мы обнаружим еще о дну область,
к оторую не видели в рабочем режиме, – «Примечание фор-
мы» . Обратим внимание на набор зна чк ов в вер хней ча-
сти окна базы данных – «Панель элементов управления» .
В развернутом виде она выг лядит , к ак на рис. 41.
Рис. 41. Панель элементов управления
Отсю да мы берем элементы управления для размещения в
форме. Г овор ят , что форма являетс я к онтейнером для эле-
ментов управления. Познак омимс я с о дним из них. Этот
элемент называетс я «Кнопк а» и на панели элементов управ-
ления обозна чаетс я пр ямоугольник ом с надписью «XXXX» .
Р азместив в форме кнопку , мы мо ж ем приписать ей нек о-
торые действия. В ст андартных ситу ациях с этой зада чей
прекрасно справляетс я мастер. Убедимс я, что мастер по д-
ключен. Внизу панели элементов управления его
48 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
пиктограмма снаб ж ена надписью «Использовать мастер» ,
во включенном состо янии она окрашена в ж елтый цвет .
Щелкнем по «XXXX» , а потом г де-нибу дь в правой части
примечания формы. На чнетс я диалог с мастером. Преж-
де всего выберем к атегорию действия и действие, к ото-
рое должно произойти при наж атии кнопки. Как пок аза-
но на рис. 42, мы выбрали к атегорию «Р абот а с формой»
и действие «Закрыть форму» . «Далее» . Выберем рисунок
Рис. 42. Выбор к атегории и действия
с открытой для вых о да дверью (рис. 43). «Далее» . Да-
дим кнопк е имя «Закрыть» (рис. 44а) и нажмем «Г отово» .
Заметим, что «Кнопк а» – название элемент а управления,
а имя «Закрыть» мы дали к онкретной кнопк е.
В форме к аждая кнопк а и любой другой элемент управле-
ния должны иметь уник альное имя. И ж елательно, чтобы
§ 2.1. Форма «Ученики» 49
Рис. 43. Выбор рисунк а
Рис. 44. а) Вво д имени кнопки; б) переключение режима работы
это имя отраж ало назна чение элемент а управления. За-
кроем к онструктор с со хранением к орректировок. Открыв
форму в рабочем режиме, увидим, что в ней по явилась
кнопочк а с дверью. Наж атие на эту кнопку приво дит к
закрытию формы.
Обратим внимание на пиктограммы в правом нижнем уг лу
окна формы (рис. 44б). С их помощью мы мо ж ем опера-
тивно менять режимы работы. В частности, наж атие на
последнюю, на рисунк е окрашенную в ж елтый цвет , пере-
во дит форму в режим к онструктора. Наж атие на первую
50 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
возвращает форму в рабочий режим. Внимательно рас-
смотрим форму на предмет , что мо жно у лучшить, и перей-
дем в режим к онструктора. У далим надпись «Ученики» из
заголовк а формы. Зацепим курсором планку с надписью
«Область данных» и по днимем ее ввер х. Ко д ID учени-
к а не долж ен интересовать пользователя прило ж ения. Мы
его переместим в примечание формы. А надпись к нему
просто у далим за ненадобностью. По дпись «ФИ» мо жно
исправить на более понятную «Фамилия Имя» . По дпись
«ДР» – на «День ро ждения» . Поле «Буква» вплотную
придвинем к полю «Класс» . По дпись у далим. В к онечном
итоге мы получили то, что видим на рис. 45. Закроем
Рис. 45. Форма в режиме к онструктора после редактирования
§ 2.1. Форма «Ученики» 51
к онструктор с со хранением к орректировок. В рабочем
режиме форма бу дет иметь вид, к ак на рис. 46.
Рис. 46. Форма «Ученики» после редактирования
Рис. 47. Свойства поля «ДР»
В целом имена полей т аблиц, созданных в первой г лаве,
у страивают нас и к ак по дписи. Но если мы х отим в даль-
нейшем избавить себ я от необ х о димости исправления по д-
писи к полю «ДР» , закроем форму и откроем т аблицу
«Ученики» в режиме к онструктора. У ст ановим ук азатель
на поле «ДР» . В свойствах поля у ст ановим «По дпись» –
52 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
«День ро ждения» (см. рис. 47). Т еперь всю ду
бу дет фигурировать новая по дпись, от личная от имени по-
ля. Повторим про деланные выше манипу ляции с т аблицей
«Препо даватели» . К форме «Ученики» мы еще вернемс я.
§ 2.2. Форма «Список ученик ов»
43⇔ 57 Следующую форму , к ак и предыдущую, созда-
ем в процессе диалог а с мастером. В к а честве источни-
к а данных выберем запрос «Ученики Запрос» (рис. 48а).
Рис. 48. Выбор запроса, полей и вида формы
Наж атием на двойную стрелку перебросим все поля в спи-
сок выбранных. Источник ом данных для формы мо ж ет
быть к ак т аблица, т ак и запрос. Внешний вид формы на
этот раз выберем «ленточный» (рис. 48б). Дадим форме
имя «Список ученик ов» (рис. 49). «Г отово» .
На экране по явитс я окно формы (рис. 50). Заметим:
§ 2.2. Форма «Список ученик ов» 53
Рис. 49. Вво д имени формы
Рис. 50. Форма «Список ученик ов»
первой в списк е стоит запись с номером 6. Это потому , что
в источник е данных записи отсортированы по алфавиту .
Структура окна в целом т а ж е: ввер ху – заголовок формы,
ниж е – область данных, еще ниж е – примечание формы.
Слева от к аждого поля – область выделения. Напомним,
что если щелкнуть по этой области левой клавишей мы-
ши, а затем наж ать «Delete» , то запись бу дет у далена.
Перейдем в режим к онструктора и внесем небольшие к ор-
ректировки: из заголовк а формы у далим надписи
54 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
«Список ученик ов» , «ID_ученик» и «Буква» . Сократим
область заголовк а. Ненужное пользователю поле
«ID_ученик» , располо ж енное в области данных, переме-
стим в примечание формы. Отк орректиру ем размеры по-
лей и поле «Буква» придвинем поближ е к полю «Класс» .
И нак онец, создадим в примечании формы кнопку «За-
крыть» . Закроем к онструктор с со хранением резу ль т атов
и откроем форму в рабочем режиме (рис. 51). Убедимс я
Рис. 51. Форма «Список ученик ов»
в том, что форма закрываетс я при наж атии на созданную
нами кнопку .
Т аким образом, мы создали две формы: о дна позволит
просмотреть упор ядоченный список ученик ов и быстро
§ 2.2. Форма «Список ученик ов» 55
найти интересующего нас; друг ая предост авляет нам
в у добном виде всю имеющуюс я в базе информацию об
ученик е. Возник ает вопрос: а нельзя ли их к ак-то объеди-
нить? Действительно, кнопочных дел мастер предост ав-
ляет нам т акую возмо жность. Откроем форму «Список
ученик ов» в режиме к онструктора. Бросим в примечание
формы кнопку и на чнем диалог с мастером. Прежде всего
сообщим ему , что кнопк а бу дет выполнять работу с фор-
мой, а именно: она должна открыть форму (рис. 52а).
Ук аж ем, что кнопк а должна открывать форму «Ученики»
Рис. 52. Создание кнопки
(рис. 52б) и не для всех, а тольк о отобранных записей
(рис. 52в). Далее мы должны ук азать, к акие поля ис-
пользуютс я для отбора записей. В диалоговом окне нам
предлаг ают выбрать эти поля в формах «Список учени-
к ов» (слева) и «Ученики» (справа). В обеих формах вы-
бираем поле «ID_ученик» (рис. 53). Т еперь видно, что
56 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Рис. 53. Связь между формами
ненужное пользователю поле «ID_ученик» для разработ-
чик а очень даж е полезно. После того к ак мы выделили эти
поля, нажмем двойную стрелку посередине. Внизу диа-
логового окна за надписью «Соответствующие поля» по-
явитс я тек ст: ID_ученик<->ID_ученик. Присвоим кноп-
к е имя «По дробно» , нажмем «Г отово» и закроем к онструк-
тор. Откроем форму в рабочем режиме. Рядом с кнопк ой
«Закрыть» по явилась кнопк а «По дробно» (рис. 54). Убе-
димс я, что при наж атии на эту кнопку открываетс я фор-
ма с по дробной информацией о том ученик е, на к отором
в списк е мы у ст ановили ук азатель. У нас есть время по ду-
мать, что нам не нравитс я в тольк о что созданных формах.
§ 2.3. Объекты, свойства, события и мето ды 57
Рис. 54. Новая кнопк а
А пок а разберем о дин теоретический вопрос.
§ 2.3. Объекты, свойства, события и мето ды
52⇔ 69 Немного теории. Прило ж ения Microsoft A ccess
используют по дх о д, за к оторым закрепилось название
«объектно-ориентированное программирование» (ООП).
Одно из ключевых понятий ООП – объект . Объекты де-
лятс я на классы. Каждый к онкретный объект – предст ави-
тель своего класса. В частности, объектом являетс я фор-
ма. В свою очередь, форма – к онтейнер для элементов
управления (надписи, поля, кнопки, переключатели, флаж-
ки и т . д.), к оторые т акж е предст авляют собой объекты.
Не следу ет ото ждествлять понятия «объект» и «класс объ-
ектов» , х от я, например, по д словом «кнопк а» мы мо ж ем
по дразумевать к ак к онкретную кнопку , т ак
и кнопку вообще. Т очно т ак ж е в быту словом «дерево»
58 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
мы иног да обозна чаем дерево, растущее у нас по д окном,
а иног да класс растений. Класс объектов обладает нек о-
торым набором присущих ему свойств. Каждый предст а-
витель класса имеет к онкретные зна чения этих свойств.
Например, класс «Поле» обладает свойством «Цвет фона»
и поля о дной формы, в общем случае, могут быть окраше-
ны в разные цвет а. С объект ами могут проис х о дить «со-
бытия» . Например, для формы – это «Открытие формы» ,
«Закрытие формы» и т . д., для кнопки – «Наж атие кноп-
ки» , «Двойное наж атие кнопки» и т . д. Каждому событию
мо ж ет быть приписано действие, к оторое в ООП называ-
ют мето дом. Приведем известный к аждому пользователю
персонального к омпьютера пример. В окнах многих при-
ло ж ений Microsoft мо жно встретить пиктограмму с изоб-
раж ением но жниц. Если у ст ановить курсор на эту пикто-
грамму , всплывет по дск азк а «Вырезать» . Хот я, на первый
взг ляд, ничего не случилось: у пиктограммы произошло
событие «Получение фоку са» , в ответ на это событие сра-
бот ал «мето д» – система выдала всплывающую по дск азку .
Откроем в режиме к онструктора форму «Ученики» . Р а-
нее мы обратили внимание, что поле «ID_ученик» для
пользователя не предст авляет интерес, но у далить его мы
§ 2.3. Объекты, свойства, события и мето ды 59
не мо ж ем, т ак к ак оно нужно для у ст ановления связи меж-
ду формами. Дабы оградить пользователя от ненужной
ему информации, с делаем поле невидимым. Выделим поле
«ID_ученик» . В правой части окна базы данных откроетс я
окно его свойств (рис. 55). Выберем вкладку
Рис. 55. Свойства поля «ID_ученик»
«Мак ет» . По явитс я список свойств по д заголовк ом «Фор-
мат поля» . Найдем строку «Выво д на экран» . Мы видим,
что этому свойству назна чено зна чение «Да» . Изменим его
на «Нет» (рис. 56а), выбрав соответствующий пункт ме-
ню или введя тек ст вручную. Т еперь в рабочем режиме
это поле бу дет невидимым. Далее, если нам понадобит-
с я перейти к свойствам другого элемент а управления, не
закрывая окно свойств, дост аточно с делать о дин щелчок
левой клавишей по изображ ению соответствующего эле-
мент а. Чтобы увидеть свойства области данных (она то ж е
60 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Рис. 56. Как с делать поле «невидимк ой»
объект), надо найти в этой области данных пу стое место,
т . е. место, не занятое элемент ами управления, и щелк-
нуть по нему . А чтобы перейти к свойствам самой формы,
надо щелкнуть по квадратику , располо ж енному в вер хней
части формы слева от линейки. Это мы сейчас и с дела-
ем. На экране по явятс я свойства формы (рис. 56б). Изме-
ним нек оторые из них. Ког да мы у ст ановили связь меж-
ду формами «Ученики» и «Список ученик ов» (с. 55), то
не по думали, к акие к онфликты из-за этого могут возник-
нуть. Например, мы у далим запись в форме «Ученики» ,
а в форме «Список ученик ов» она ост анетс я. Конечно, си-
стема выдаст соответствующее сообщение, но лучше сразу
§ 2.3. Объекты, свойства, события и мето ды 61
договоритьс я, что у даление и добавление записей разреше-
но тольк о в форме «Список ученик ов» . В форме «Учени-
ки» мы тольк о просматриваем и редактиру ем записи. Зна-
чит , в ней не нужны область выделения и кнопки навиг а-
ции. Отредактиру ем свойства на вкладк е «Мак ет» .
В первой строк е по дпись «Ученики» мо жно исправить на
«Ученик»; в строк е «Область выделения» развернем меню
и выберем пункт «Отсутству ет»; «Кнопки навиг ации» –
«Нет»; «Полосы прокрутки» – «Отсутствуют» . Перейдем
на вкладку «Данные» . У ст ановим зна чения: «Р азрешить
добавление» – «Нет»; «Р азрешить у даление» – «Нет» . На
самом деле в процессе редактирования формы мы часто
перех о дим в рабочий режим, чтобы посмотреть, что по-
лучилось, и опять возвращаемс я в режим к онструктора.
Т еперь мы умеем делать это быстро. На вс який случай
напомню: для этих целей есть пиктограммы справа в ниж-
ней части окна формы (рис. 44 на с. 49). Что нам еще
не нравитс я в созданной мастером форме? По ж алуй, она
к ак ая-то бледная, даж е по сравнению с диалоговыми ок-
нами мастера. Попробу ем это исправить. Щелкнем по об-
ласти данных. Справа по явитс я окно ее свойств (рис. 57).
В этом окне выберем строку «Цвет фона» . Как тольк о ук а-
затель ок аж етс я на этой строк е, в правой ее части по явит-
с я кнопк а с тек стом « ··· » . Щелкнув по ней,
62 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Рис. 57. У ст ановк а цвет а фона
развернем набор цветов и выберем 5-й свер ху в первой
к олонк е. На новом фоне ж елательно изменить цвет а тек-
стов. Выделим все элементы управления, к ак пок азано
на рис. 58. Для этого дост аточно у ст ановить ук азатель
Рис. 58. У ст ановк а цвет а шрифт а
§ 2.3. Объекты, свойства, события и мето ды 63
в о дном из уг лов области данных, наж ать левую клавишу
мыши и, не отпу ск ая ее, перевести ук азатель в противопо-
ло жный угол. В окне свойств найдем строку «Цвет тек ст а»
и выберем черный цвет . Если теперь перейти в рабочий
режим, форма бу дет иметь вид, к ак на рис. 59. Закроем
Рис. 59. Ок ончательный вид формы «Ученики»
форму «Ученики» и откроем в режиме к онструктора фор-
му «Список ученик ов» . Перенесем в примечание и с дела-
ем невидимым поле «ID_ученик» . У ст ановим цвет а фона и
тек ст а. В списк е часто для у добства просмотра цвет а строк
чередуютс я, т . е. четные и нечетные выделяютс я разными
цвет ами. Если нам это не требу етс я, у ст ановим о дин цвет
в строк ах «Цвет фона» и «Цвет чередования фона» . Мо ж-
но к артинку на кнопк е с надписью «По дробно» заменить
на «Бинокль» . Для этого дост аточно в свойствах кнопки
у ст ановить ук азатель на строку «Рисунок» , наж ать « ··· »
64 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
и выбрать нужный рисунок. Заметим, что мы не учли еще
о дной ситу ации. Если в форме «Список ученик ов» вве-
сти фамилию и имя нового ученик а и сразу ж е открыть
форму «Ученики» наж атием кнопки «По дробно» , то ни-
чего у нас не получитс я. Потому что новая запись еще не
со хранена, т . е. в т аблице «Ученики» , к оторая являетс я
источник ом данных для о дноименной формы, т ак ой запи-
си просто нет . Зна чит , предварительно мы должны со хра-
нить новую запись. Бросим в примечание формы еще о д-
ну кнопку . В диалоговом окне ук аж ем мастеру к атегорию
действия «Обработк а записей» и действие «Со хранить за-
пись» (рис. 60). Дадим новой кнопк е имя «Со хранить» .
Рис. 60. Создание кнопки «Со хранить»
Поместим по д кнопк ой т акую ж е надпись. Т еперь в рабо-
чем режиме форма «Список ученик ов» примет вид, к ак
на рис. 61. Уж е непло х о! Однак о если пользователь бу дет
§ 2.3. Объекты, свойства, события и мето ды 65
Рис. 61. Ок ончательный вид формы «Список ученик ов»
часто просматривать по дробную информацию об учени-
к ах, ему неу добно бу дет к аждый раз обращатьс я к распо-
ло ж енной внизу кнопк е. Мо жно было бы привязать мето д,
т . е. нек оторую процедуру , открывающую форму «Учени-
ки» , к событию «Наж атие кнопки» . Но это событие проис-
х о дит и тог да, к ог да мы х отим просто исправить ошибку
в фамилии. Уточним, что по д наж атием кнопки здесь по д-
разумеваетс я щелчок левой клавишей мыши. Щелчок
не по дх о дит . Ост аетс я двойной щелчок. Ит ак, при
66 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
двойном щелчк е по полю «ФИ» должна открыватьс я фор-
ма «Ученики» . Здесь поле «ФИ» – объект , «Двойное на-
ж атие» – событие, а мето дом бу дет «Внедренный мак-
рос» , к оторый нам предстоит создать. Макрос – это по-
следовательность макрок оманд. Макрок оманда, по сути,
«большая к оманда» . Макрок оманды могут выполнять т а-
кие ст андартные действия, к ак открытие и закрытие форм
и других объектов A ccess, перех о ды по запис ям и т . д.
Внедренным называют макрос, привязанный к от дельно
взятому объекту . Откроем форму «Список ученик ов» в ре-
жиме к онструктора и рассмотрим окно свойств поля «ФИ»
(рис. 62). В окне свойств поля выберем вкладку
Рис. 62. Свойства поля «ФИ»
«События» . У ст ановим ук азатель на строк е «Двойное на-
ж атие кнопки» . Щелкнем по по явившейс я кнопк е « ··· » .
В правой части экрана по явитс я «Кат алог макрок оманд»
(рис. 63). Определим для события «Двойное наж атие
§ 2.3. Объекты, свойства, события и мето ды 67
Рис. 63. Кат алог макрок оманд
кнопки» мето д. В меню выберем «Объекты базы данных» ,
затем «Открыть форму» . На экране по явитс я окно пара-
метров макрок оманды «Открыть форму» (рис. 64). Нам
Рис. 64. Окно параметров макрок оманды «Открыть форму»
предстоит заполнить его. Р азвернем меню в строк е «Имя
формы» и выберем форму «Ученики» (рис. 65). В строк е
«У словия отбора» запишем:
[Формы]![Список ученик ов]![ID_ученик]=[ID_ученик].
68 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Рис. 65. Параметры макрок оманды
Здесь мы ук азали, что в форме «Ученики» бу дут просмот-
рены тольк о те записи, у к оторых зна чение поля
«ID_ученик» совпадает со зна чением аналогичного поля
формы «Список ученик ов» . Обратите внимание, что поле
текущей формы задаетс я тольк о именем, а поле другой за-
даетс я полностью: имя класса объектов, имя формы, имя
поля. Все эти имена разделены символом «!» . Квадратные
ск обки вокруг имен объектов при вво де выраж ения вруч-
ную мо жно не писать, если имена не со дер ж ат пробелов.
Т еперь закроем окно макросов и саму форму .
§ 2.4. Форма «Поиск ученик ов» 69
§ 2.4. Форма «Поиск ученик ов»
57⇔ 74 Даж е если ученики располо ж ены в алфавитном
пор ядк е, но к ог да список большой, иск ать в нем нужные
фамилии, пользу ясь полосой прокрутки, не всег да у добно.
Особенно если фамилию помнишь неточно. На этот слу-
чай мы создадим еще о дну форму . Поск ольку новая фор-
ма не привязана ни к о дному из источник ов данных, мы
не бу дем прибег ать к у слуг ам мастера. Выберем пункт ме-
ню «Создание» и щелкнем левой клавишей по пиктограм-
ме «Пу ст ая форма» (рис. 66а). По явитс я пу ст ая форма.
Рис. 66. Создание формы вручную
Перейдем в режим к оструктора и с панели элементов управ-
ления возьмем «Поле» (рис. 66б). На экране по явитс я
«свобо дное» поле с надписью (рис. 66в). В это поле бу дем
вво дить символьную строку для поиск а. Изменим надпись
70 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
на «ФИ» . Р аст янем поле. Откроем свойства поля. Выберем
вкладку «Другие» и дадим полю имя «ФИ» . Перейдем на
свойства формы, выберем вкладку «Мак ет»
и введем по дпись «Поиск ученик а» . Далее, к ак и в преды-
дущих формах, у ст ановим цвет фона в области данных.
Р азместим в области данных кнопку для закрытия фор-
мы. Кнопк е дадим имя «Закрыть» . С панели элементов
возьмем объект «Надпись» , разместим его по д кнопк ой
и наберем в его области слово «Закрыть» . Если теперь от-
крыть форму в рабочем режиме, она бу дет иметь вид, к ак
на рис. 66г . Закроем к онструктор с со хранением резу ль-
т атов. Пок а наша форма «ничего не умеет» . Добавим еще
о дну кнопку (рис. 67). Бросим кнопку в область данных
Рис. 67. Создание кнопки «Поиск»
р ядом с кнопк ой «Закрыть» , но на этот раз уклонимс я от
диалог а с мастером, наж ав в первом ж е диалоговом окне
кнопку «Отмена» . Затем немного отредактиру ем внешний
вид кнопки. Сделаем ее пошире, разместим по д ней над-
пись «Поиск» . Откроем свойства кнопки. Выберем для нее
§ 2.4. Форма «Поиск ученик ов» 71
рисунок «Бинокль» . Рисунок принадлежит группе свойств
«Мак ет» . Перейдем на заст авку «Другие» . При создании
кнопки система присвоила ей имя вро де «Кнопк а7» . Мы
дадим ей имя, х арактеризующее ее назна чение: «Найти» .
Т еперь перейдем на заст авку «События» . На первом ме-
сте стоит самое важное событие, к ак ое тольк о мо ж ет про-
изойти с кнопк ой, – «Наж атие кнопки» . Пост авим в со-
ответствие этому событию мето д. У ст ановим ук азатель на
соответствующей строк е. Щелкнем по изображ ению « ··· » .
На экране по явитс я окно «Построитель» (см. рис. 67). Вы-
берем строку «Макросы» . Откроетс я «Кат алог макросов» .
Выберем «Объекты базы данных» , а затем «Открыть фор-
му» . Т еперь нам предстоит у ст ановить параметры макро-
са, к оторые ук азаны в окне с заголовк ом «Поиск ученик а:
Найти: Наж атие кнопки» (рис. 68). Заголовок говорит
нам о том, что в форме «Поиск ученик а» мы определя-
ем действие для объект а «Найти» , вызванное событием
«Наж атие кнопки» . Выбираем в меню форму , к оторую мы
должны открыть, – «Список ученик ов» . В строк е «У сло-
вие отбора» вво дим тек ст:
InStr(1;” ” & [ФИ];F orms![Поиск ученик а]![ФИ];1)>1.
Здесь мы впервые встречаемс я с функцией VBA, т . е. Visual
Basic for Applications. VBA – язык программирования,
встроенный в Microsoft A ccess. В данный момент нас
72 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Рис. 68. Параметры макрок оманды
интересу ет тольк о его функция InStr. Она определяет вх о ж-
дение о дной символьной строки в другую и имеет четыре
аргумент а. Первый задает позицию, с к оторой на чинаетс я
поиск. Второй – строк а, в к оторой осуществляетс я поиск
(в данном случае это поле «ФИ» открываемой формы).
Слева от поля [ФИ] пришлось добавить пробел, т . е. сим-
вольную строку , со дер ж ащую о дин пробел. Знак «&» здесь
обозна чает операцию сцепления строк. Вреда от этого про-
бела точно не бу дет , а прицепил его автор потому , что в но-
вой версии функция почему-то перест ала «замечать» пер-
вый символ. Третий аргумент – строк а, вх о ждение к ото-
рой в первую мы х отим у ст ановить, т . е. поле «ФИ» фор-
мы «Поиск ученик а» . Четвертый – тип сравнения (в на-
шем случае – 1). Функция возвращает позицию первого
§ 2.4. Форма «Поиск ученик ов» 73
вх о ждения о дной строки в другую. Если это зна чение боль-
ше ну ля, вх о ждение имеет место. Это и есть наше у сло-
вие отбора. Возмо жно, чит атель заметил, что слово «Фор-
мы» на этот раз автор написал по-анг лийски. Это не на-
рочно, но система т акую оплошность «прог лотит» . Т акж е
слово «F orms» не заключено в квадратные ск обки. Их си-
стема потом добавит сама. Г лавное, чтобы названия объ-
ектов, со дер ж ащие пробел, заключались в ск обки. Закро-
ем к онструктор с со хранением резу ль т атов и проверим,
к ак работ ает поиск (рис. 69). Для этого откроем форму
Рис. 69. Поиск ученик а
«Поиск_ученик а» , в его поле «ФИ» введем «ва» и нажмем
кнопку «Найти» (рис. 69а). В резу ль т ате откроетс я форма
74 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
«Список ученик ов» , со дер ж ащая список тольк о тех уче-
ник ов, в фамилии или имени к оторых со дер житс я строк а
«ва» (см. рис. 69б). Р азумеетс я, теперь вы мо ж ете, с делав
двойной щелчок по полю с фамилией и именем, открыть
форму с по дробной информацией об ученик е.
§ 2.5. Формы «для препо давателей»
69⇔ 76 До сих пор в этой г лаве мы занимались тольк о
формами для ученик ов. Вернемс я к рис. 1 на с. 7 и обра-
тимс я к правой части рисунк а. Нам предстоит создать три
формы, аналогичные созданным ранее: «Препо даватели»
(рис. 70), «Список препо давателей» (рис. 71) и «По-
иск препо давателя» (рис. 72а). Но на этот раз чит а-
телю предост авляетс я возмо жность выполнить эту рабо-
ту самосто ятельно. Если вы тщательно проработ али ма-
териал предыдущих параграфов, это не должно вызвать
больших затру днений. В к онце работы протестируйте со-
зданный вами фрагмент прило ж ения. Например, прове-
рим работу формы «Поиск препо давателя» . Для этого от-
кроем форму и в поле «ФИО» введем «ло» (рис. 72а).
После наж атия кнопки «Поиск» откроетс я форма «Спи-
сок препо давателей» с набором всех записей, поле «ФИО»
к оторых со дер жит по дстроку «ло» (рис. 72б). Проверь те
§ 2.5. Формы «для препо давателей» 75
Рис. 70. Форма «Препо даватели»
Рис. 71. Форма «Список препо давателей»
76 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Рис. 72. Поиск препо давателя
т акж е, открываетс я ли форма с по дробной информацией
о препо давателе при двойном щелчк е по полю «ФИО» .
§ 2.6. Формы «для кружк ов»
74⇔ 80 Снова обратимс я к рис. 1 на с. 7. Р азумеетс я,
рисунок не есть к онцепту альная мо дель, но он напомина-
ет нам, ку да и за чем мы идем. Наст ало время занятьс я
центральным понятием в нашей работе – кружк ами, т . е.
тем, что изображ ено в центре рисунк а. Т очно т ак ж е, к ак
и прежде, создадим «форму в столбец» (рис. 73), к оторая
со дер жит по дробную информацию о к аждом кружк е. За-
тем ленточную форму «Список кружк ов» (рис. 74). Р азу-
меетс я, со всеми кнопк ами и всем тем набором возмо жно-
стей, к оторые мы ранее у ст анавливали для
§ 2.6. Формы «для кружк ов» 77
Рис. 73. Форма «Кружки»
Рис. 74. Форма «Список кружк ов»
78 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
аналогичных форм. Проверим формы в работе. На дан-
ный момент у нас имеетс я три «изолированных» фраг-
мент а прило ж ения. Вернемс я к форме «Кружки» . Т еперь,
к ог да мы освоили «внедренные макросы» , т . е. макросы,
приписанные к от дельным элемент ам управления, у нас
мо ж ет по явитьс я ж елание с делать т ак, чтобы из формы
с по дробной информацией о кружк е мо жно было по двой-
ному щелчку по полю «Препо даватель» получить инфор-
мацию о препо давателе. Для этого в режиме к онструктора
в форме «Кружки» откроем окно свойств поля «Препо да-
ватель» . Выберем вкладку «События» и пост авим в соот-
ветствие событию «Двойное наж атие кнопки» внедренный
макрос. Для этого щелкнем по кнопк е « ··· » , в окне «Кат а-
лог макросов» выберем «Объекты базы данных» , а затем
«Открыть форму» . На экране по явитс я окно параметров
макрок оманды (рис. 75). Заполним окно, к ак пок азано
на рис. 75. В строк е «Имя формы» ук аж ем «Препо дава-
тели» , т . е. зададим имя той формы, к оторую мы х отим
открыть. В строк е «У словия отбора» задаем у словия, по
к оторым отбираютс я записи из ук азанной формы:
[ID_препо даватель]=[Формы]![Кружки]![Препо даватель].
Напомним, что в поле «Препо даватель» формы «Кружки»
на самом деле хранитс я к о д препо давателя, но мастер по д-
ст ановок вместо к о да пок азывает соответствующий ему
§ 2.6. Формы «для кружк ов» 79
Рис. 75. Параметры макрок оманды
Рис. 76. Поиск кружк а
тек ст . Ост алось закрыть к онструктор с со хранением ре-
зу ль т атов к орректировок. Откроем форму в рабочем ре-
жиме и проверим ее работу . По аналогии
с формами «Поиск ученик а» и «Поиск препо давателя» со-
здадим форму «Поиск кружк а» (см. рис. 76). Заметим,
что пок а в наших формах ник оим образом не отраж ена
связь между сущност ями «Кружки» и «Ученики» . Этой
связью нам и предстоит занятьс я в дальнейшем.
80 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
§ 2.7. По дчиненные формы
76⇔ 89 Р анее мы заметили, что связь между т аблица-
ми «Кружки» и «Ученики» имеет более сло жный х арак-
тер, чем между т аблицами «Кружки» и «Препо даватели» .
Для задания этой связи мы в § 1.5 на с. 30 создали т аб-
лицу «Ученик_круж ок» . Т еперь в процессе диалог а с ма-
стером построим соответствующую форму . Выберем т аб-
лицу «Ученик_круж ок» и тольк о о дно ее поле «Ученик»
(рис. 77). «Далее» . Вид формы «ленточный» (рис. 78).
Рис. 77. Выбор т аблицы и полей
«Далее» . Со храним форму по д тем ж е именем, что и соот-
ветствующую т аблицу (рис. 79). «Г отово» . На экране по-
явитс я новая форма (рис. 80). В ней пок а мы видим тольк о
о дну запись, поск ольку тольк о о дну и заполнили (рис. 26
на с. 34). Отредактиру ем форму «Ученик_круж ок» в ре-
жиме к онструктора (рис. 81а). Добавим в ее примеча-
ние тольк о о дну кнопку «Со хранить» , к оторая отвечает
§ 2.7. По дчиненные формы 81
Рис. 78. Выбор типа формы
Рис. 79. Вво д имени формы
за со хранение новой записи. В рабочем режиме форма бу-
дет иметь вид, к ак на рис. 81б. Форма имеет единствен-
ное поле «Ученик» . У чит ателя мо ж ет возникнуть вопрос:
нельзя ли снова с делать т ак, чтобы по двойному щелчку
по этому полю открывалась форма с по дробной информа-
цией об ученик е? Попробу ем. В окне свойств поля «Уче-
ник» выберем вкладку «События» (рис. 82). У ст ановим
82 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Рис. 80. Форма «Ученик_круж ок»
Рис. 81. Форма «Ученик_круж ок» после редактирования
Рис. 82. Свойства поля «Ученик»
ук азатель на строк е «Двойное наж атие кнопки» . Щелк-
нем по зна чку «··· » . Откроетс я «Построитель» (рис. 83).
§ 2.7. По дчиненные формы 83
Выберем строку «Макросы» . Мы х отим реализовать
Рис. 83. «Построитель»
мето д, связанный с событием «Двойное наж атие кнопки» .
В окне «Кат алог макрок оманд» выберем «Объекты базы
данных» , а затем «Открыть форму» (рис. 84).
Рис. 84. Кат алог макрок оманд
84 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Зададим параметры макрок оманды «Открыть форму» . Преж-
де всего, это имя формы, к оторую мы х отим открыть:
«Ученики» (рис. 85). «У словие отбора»:
Рис. 85. Параметры макрок оманды
ID_ученик=Формы![Ученик_круж ок]![Ученик].
Закроем к онструктор с со хранением резу ль т атов. Откроем
форму в рабочем режиме и убедимс я, что двойной щел-
чок по полю «Ученик» вызывает форму «Ученики» . От-
кроем в режиме к онструктора форму «Кружки» . Зацепим
ук азателем нижний правый ее угол и расширим пр ямо-
угольник формы. В свобо дное пространство в правой ча-
сти формы мы собираемс я поместить элемент управления,
к оторый называетс я «По дчиненная форма» . Возьмем его
с панели элементов (рис. 86) т ак ж е, к ак мы брали кнопки
§ 2.7. По дчиненные формы 85
и т . д. На экране по явитс я первое диалоговое окно (рис. 87).
Рис. 86. Панель элементов
В этом окне выберем форму , к оторую х отим разместить
Рис. 87. Выбор формы
в области данных формы «Кружки» . Это форма «Уче-
ник_круж ок» . В следующем окне выберем поле связи
«ID_ученик» (рис. 88). Ост алось дать новому элемен-
ту управления имя «Ученик_круж ок» . Это имя совпадает
с именем известной нам формы. Посмотрим, что
86 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
Рис. 88. Выбор поля связи
получилось. В области формы «Кружки» по явилась фор-
ма «Ученик_круж ок» (рис. 89). Не следу ет думать, что
Рис. 89. По дчиненная форма в режиме к онструктора
элемент управления и о дноименная по дчиненная форма
суть о дно и то ж е. Элемент управления здесь выступает
в к а честве мех анизма, к оторый обеспечивает связь форм.
§ 2.7. По дчиненные формы 87
Закроем к онструктор с со храниением резу ль т атов и проте-
стиру ем прило ж ение. Откроем форму «Список кружк ов» .
Дважды щелкнем в этом списк е по названию кружк а «Вы-
шивание» . Откроетс я форма «Кружки» (рис. 90). Вро де
Рис. 90. По дчиненная форма в рабочем режиме
все непло х о. Как и прежде, если с делать двойной щелчок
по полю «Препо даватель» , откроетс я форма с по дробной
информацией о препо давателе. Но вот беда: если теперь
мы с делаем двойной щелчок по полю с фамилией и име-
нем интересующего нас ученик а, на экране по явитс я диа-
логовое окно с просьбой ввести его к о д. Система не опре-
делила этот к о д. Дело в том, что, к ог да форма ст ановит-
с я по дчиненной, она частично тер яет свой «суверенитет» .
Т еперь нам понадобитс я внести исправления в «У словие
отбора» . Чтобы обратитьс я к полю «Ученик» , мы должны
сослатьс я на «вышесто ящую инст анцию» . Откроем в ре-
жиме к онструктора окно «Кружки» , выйдем на свойства
88 Г ЛАВА 2. ФОРМЫ И МАКРОСЫ
поля «Ученик» и т . д., пок а не увидим окно парамет-
ров макрок оманды (рис. 91). Внесем изменения в строку
Рис. 91. Параметры макрок оманды
«У словия отбора» . Т еперь строк а должна выг лядеть т ак:
[ID_ученик]=[Формы]![Кружки]![Ученик_круж ок].[F orm]![Ученик]
После знак а равенства сна чала мы ссылаемс я на элемент
управления: [Формы]![Кружки]![Ученик_круж ок]. Затем,
после «точки» , ук азываем интересующее нас поле в этом
элементе управления. Следу ет запомнить, что здесь следу-
ет писать не [Форма], а [F orm]. Не потому , что в этом кро-
етс я к ак ой-то г лубокий смысл, а потому , что ина че
не бу дет работ ать.
Г лава 3. Кнопочная форма
§ 3.1. Диспетчер кнопочных форм
80⇔ 93 Далее мы мог ли бы занятьс я созданием других
фрагментов прило ж ения, но не бу дем злоупотреблять тер-
пением чит ателя. Он имеет право нак онец увидеть нечто
целое, объединяющее все созданные ранее объекты базы
данных. Для этой цели задейству ем «Диспетчер кнопоч-
ных форм» . В окне A ccess 10 вы мо ж ете не найти соответ-
ствующей пиктограммы, поск ольку в этой версии имеют-
с я и другие средства навиг ации. Нек оторые думают , что
этого диспетчера здесь и вовсе нет . Однак о пиктограм-
му «Диспетчер кнопочных форм» надо просто предвари-
тельно у ст ановить на панели быстрого доступа. Для этого
выберем пункт вер хнего горизонт ального меню «Файл» .
В развернувшемс я вертик альном меню щелкнем по стро-
к е «Параметры» . На экране по явитс я окно «Параметры
A ccess» (рис. 92). В меню его левой части выберем стро-
ку «Панель быстрого доступа» . На экране по явитс я окно
с заголовк ом «Настройк а панели быстрого доступа» . Ни-
ж е – список к оманд. Этот список предст авлен неск ольки-
ми наборами. По умолчанию у ст ановлены «Часто исполь-
зу емые к оманды» (рис. 93). Р азвернем меню и выберем
90 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
Рис. 92. Параметры A ccess
Рис. 93. Выбор набора к оманд
строку «Вкладк а ”Р абот а с базами данных”» (рис. 94).
В окне по явитс я набор к оманд. Выберем «Диспетчер кно-
почных форм» . Нажмем кнопку «Добавить» справа
§ 3.1. Диспетчер кнопочных форм 91
от списк а (рис. 95). Команда бу дет добавлена в к онец
Рис. 94. Выбор к оманды
Рис. 95. Добавление новой к оманды на панель быстрого доступа
списк а справа (рис. 96а). Ост авим в поле над списк ом
зна чение по умолчанию «Для всех документов» . Нажмем
«ОК» . В левом вер хнем уг лу окна базы данных по явил-
с я зна чок диспетчера кнопочных форм (рис. 96б). По-
чему этот зна чок не пост авили на панель сразу? Ответ
очевиден. Если все к оманды из тольк о что рассмотрен-
ного списк а разместить на панели быстрого доступа, па-
нель перест анет быть т ак овой. А потому к аждый сам обу-
92 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
Рис. 96. У ст ановк а пиктограммы для кнопочной формы
страивает свое рабочее место т ак, к ак ему к аж етс я к ом-
фортней. Щелкнем по зна чку диспетчера. Всплывет диа-
логовое окно, в к отором сообщаетс я, что не у далось найти
кнопочную форму (рис. 97). Правильно. Ведь мы ее еще
Рис. 97. Создание кнопочной формы
не создали. На вопрос «Создать кнопочную форму?» отве-
тим: «Да» . По явитс я окно с заголовк ом «Диспетчер кно-
почных форм» (рис. 98). Ост алось создать и заполнить
странички кнопочной формы. Но мы ненадолго от ло жим
эту работу и закроем окно диспетчера наж атием кнопки
§ 3.2. Один полезный макрос 93
Рис. 98. Окно диспетчера кнопочных форм
«Закрыть» . В дальнейшем мы всег да легк о мо ж ем его от-
крыть щелчк ом по пиктограмме, к оторую разместили
в левой вер хней части окна базы данных (см. рис. 96б).
§ 3.2. Один полезный макрос
89⇔ 95 Создадим о дин полезный макрос. В предыду-
щей г лаве мы уж е имели дело с внедренными макросами,
к оторые привязаны к к онкретному объекту и активизиру-
ютс я тольк о при наступлении того события, в соответствие
к оторому их пост авили. Сейчас мы создаем т ак называ-
емый автономный макрос . Для этого выберем пункт
94 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
меню «Создание» и в группе «Макросы» нажмем кнопку
«Макрос» (рис. 99). На экране по явитс я уж е знак омый
Рис. 99. Создание автономного макроса
нам «Кат алог макрок оманд» . Выберем в к ат алоге «Си-
стемные к оманды» , а затем «ВыйтиИзA ccess» (рис. 100).
Наш макрос опять бу дет состо ять из о дной единственной
Рис. 100. Макрок оманда «ВыйтиИзA ccess»
§ 3.3. Страницы кнопочной формы 95
макрок оманды. Закроем окно и со храним макрос по д име-
нем «Вых о д» (рис. 101). Чит атель, возмо жно, уж е
Рис. 101. Со хранение макроса
дог адалс я, что этот макрос бу дет завершать работу
прило ж ения с со хранением резу ль т атов.
§ 3.3. Страницы кнопочной формы
93⇔ 101 Откроем окно диспетчера кнопочных форм
щелчк ом по пиктограмме (см. рис. 96б). По д надписью
«Страницы кнопочной формы» располаг аетс я список стра-
ниц. Пок а мы видим тольк о о дну , к оторой по умолчанию
дано имя «Г лавная кнопочная форма» . Нажмем кнопку
«Изменить» . По д надписью «Название кнопочной формы»
запишем новое имя страницы: «Кружки» (рис. 102).
«Закрыть» . Создадим еще три страницы. Для этого в окне
«Страницы кнопочной формы» нажмем «Создать» .
По д надписью «Название кнопочной формы» запишем имя
следующей страницы: «Отчеты» . «Закрыть» .
96 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
Рис. 102. Новое название страницы
Т очно т ак ж е создадим страницы «Первичные данные»
и «Поиск» . Окно примет вид, к ак на рис. 103. Приступим
Рис. 103. Список страниц кнопочной формы
к заполнению страниц. В списк е выберем г лавную фор-
му «Кружки» и нажмем «Изменить» . Т еперь создадим
кнопки. Нажмем «Создать» . По явитс я диалоговое окно.
В строку «Т ек ст» введем имя кнопки «Первичные дан-
ные»; в следующей строк е ост авим к оманду «Перейти
к кнопочной форме»; в третью строку введем имя кнопоч-
ной формы «Первичные данные» . Нажмем «ОК» (рис. 104).
В списк е «Элементы кнопочной формы» по явитс я
§ 3.3. Страницы кнопочной формы 97
Рис. 104. Заполнение странички «Кружки»
Рис. 105. Создание кнопки «Выйти из прило ж ения»
название кнопки «Первичные данные» . Т акж е создадим
кнопки «Поиск» для перех о да к кнопочной форме «По-
иск» и «Отчеты» для перех о да к кнопочной форме «От-
четы» . Нажмем «Создать» . Для этой кнопки введем тек ст
«Выйти из прило ж ения» и выберем к оманду «Выполнить
макрос»; в третьей строк е зададим имя созданного на-
98 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
ми в предыдущем параграфе автономного макроса «Вы-
х о д» (см. рис. 105). «ОК» . Окно странички «Кружки»
приняло вид, к ак на рис. 106. «Закрыть» . Выберем
Рис. 106. Страница кнопочной формы «Кружки»
в списк е страничек «Первичные данные» . «Изменить» . При-
ступим к созданию кнопок. Нажмем «Создать» . Введем
тек ст «Список ученик ов»; выберем к оманду «Открыть фор-
му для изменения»; зададим имя формы «Список уче-
ник ов» (рис. 107). «ОК» . Аналогично создадим кнопки
«Список препо давателей» и «Список кружк ов» . Нажмем
«Создать» . Для следующей кнопки введем тек ст «Г лав-
ное меню» . Ост авим к оманду «Перейти к кнопочной фор-
ме» . Зададим имя странички «Кружки» . При наж атии на
эту кнопку мы должны вернутьс я на страничку «Круж-
ки» (рис. 108). «ОК» . «Закрыть» . Выберем страничку
«Поиск» . Создадим кнопки «Поиск ученик а» ,
«Поиск препо давателя» и «Поиск кружк а» для открытия
§ 3.3. Страницы кнопочной формы 99
Рис. 107. Кнопк а «Список ученик ов»
Рис. 108. Страничк а «Первичные данные»
о дноименных форм. Т акж е добавим кнопку «Г лавное ме-
ню» для перех о да на страничку «Кружки» (рис. 109). На-
жмем «Закрыть» и еще раз «Закрыть» . Т еперь мо жно на-
чать работу с кнопочной формой. Найдем ее
100 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
Рис. 109. Список кнопок на страничк е «Поиск»
в списк е «Все объекты A ccess» и откроем (рис. 110).
Проверим работу кнопочной формы. Убедимс я, что при
Рис. 110. Кнопочная форма
наж атии кнопок выполняютс я именно те действия, к ото-
рые мы х отели предписать этим кнопк ам. Кнопочную фор-
му , к ак и любую другую, мо жно открыть в режиме
к онструктора и отредактировать ее внешний вид.
§ 3.4. Параметры запу ск а 101
§ 3.4. Параметры запу ск а
95⇔ 102 Т еперь работу с базой данных бу дем на чи-
нать с открытия кнопочной формы. А нельзя ли с делать
т ак, чтобы эт а форма открывалась сразу автоматически?
Для этого надо у ст ановить соответствующий параметр ба-
зы данных. Откроем вертик альное меню «Файл» и вы-
берем строку «Параметры» (рис. 111а). Откроетс я окно
Рис. 111. Параметры A ccess
«Параметры A ccess» (рис. 111б). Выберем строку «Т е-
кущая база данных» . Справа по явитс я панель «Парамет-
ры для текущей базы данных» (рис. 112). Р азвернем ме-
ню в строк е «Форма просмотра» . В списк е выберем имя
«Кнопочная форма» . «ОК» . По явитс я диалоговое окно
102 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
Рис. 112. Параметры для текущей базы данных
с предупреждением о необ х о димости закрыть и снова от-
крыть базу данных (рис. 113). «ОК» .
Рис. 113. Диалоговое окно
§ 3.5. Перекрывание ок он
101⇔ 105 До сих пор, если из формы «Ф1» мы от-
крывали форму «Ф2» , она просто располаг алась повер х
предыдущей формы. Вс я последовательность открытых
форм отраж алась на вкладк ах ввер ху окна форм. Однак о
многие чувствуют себ я к омфортней, к ог да последователь-
но открытые формы располаг аютс я в перекрывающих с я
§ 3.5. Перекрывание ок он 103
окнах. Чтобы формы располаг ались т аким образом, надо,
к ак и в предыдущем параграфе, открыть панель «Пара-
метры для текущей базы данных» (рис. 114) и в разделе
«Параметры окна документ а» у ст ановить переключатель
в поло ж ение «Перекрывание ок он» . Нажмем «ОК» . Систе-
Рис. 114. Параметры окна документ а
ма, дабы параметр вступил в силу , опять предло жит пере-
запу стить прило ж ение. Т еперь последовательно открыва-
емые окна бу дут перекрывать друг друг а (рис. 115). Здесь
мы мо ж ем столкнутьс я с о дним неу добством. Если новое
открытое окно «Ф2» целик ом укладываетс я на экране в
область «Ф1» и вы случайно с делали щелчок по «Ф1» , то
«Ф1» примет фоку с и заслонит собой «Ф2» . Само по себе
это нестрашно, но иног да есть резон запретить работу с
ранее открытыми формами до тех пор, пок а не закроетс я
104 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
Рис. 115. Перекрывающиес я окна
последняя. Для этого следу ет поочередно в режиме к он-
структора с делать все формы мо дальными (рис. 116). Мы
с делали мо дальной кнопочную форму .
Рис. 116. У ст ановк а параметра «Мо дальное окно»
Т еперь нетру дно убедитьс я, что в процессе работы при-
ло ж ения ранее открытые формы ник ог да не перекрыва-
ют последнюю. В этой г лаве мы объединили все прежде
§ 3.6. Р едактирование кнопочной формы 105
разработ анные фрагменты базы данных, о днак о разработ-
к а прило ж ения на этом не зак ончилась.
§ 3.6. Р едактирование кнопочной формы
102⇔ 113 В кнопочной форме наг лядно предст авлены
все возмо жности созданной нами базы данных и теперь
мы мо ж ем критически посмотреть на резу ль т аты работы.
Процесс разработки прило ж ения не состоит из последо-
вательности единственно правильных шагов и не выпол-
няетс я по к ак ой-то раз и навсег да определенной с х еме.
В нашем случае мы видим, что пользователь мо ж ет про-
смотреть список ученик ов, занимающих с я в данном круж-
к е, но не мо ж ет рассматривать списки «кружк овцев» по
классам. Добавим и т акую возмо жность. Для этого созда-
дим новую форму . Специально еще раз разберем весь про-
цесс. Нажмем «Создание» , затем «Конструктор форм» .
Мы не обращаемс я к мастеру потому , что форма не свя-
зана ни с к аким источник ом данных. На экране по явитс я
пу ст ая форма. Возьмем с панели элементов управления
элемент «Поле» (рис. 117). В это поле бу дем записывать
номер класса. Для вво да «буквы класса» возьмем «Поле
со списк ом» . Откроетс я диалоговое окно (рис. 118). Вы-
берем фик сированный набор зна чений. «Далее» . Введем
106 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
Рис. 117. Панель элементов
Рис. 118. Выбор фик сированного набора зна чений
список зна чений: а, б, в, г . У далим по дпись к полю «Бук-
ва» , передвинем поле со списк ом ближ е к полю с номером
класса, чтобы мы мог ли видеть полностью идентифик атор
класса. Например, 10а. Первому полю дадим имя «Класс»
(рис. 119), а второму – «Буква» . Напомним, что к аждый
Рис. 119. Присвоение имени элементу управления
элемент управления долж ен иметь имя, по к оторому мы
мог ли бы обращатьс я к нему . Система присвоит элементу
имя, даж е если мы забу дем с делать это. Но с именем типа
§ 3.6. Р едактирование кнопочной формы 107
«Кнопк а17» нам тру дно бу дет работ ать. Добавим кнопку
для закрытия формы. Как и в созданных ранее формах,
дадим ей имя «Закрыть» и пост авим по д ней по дпись «За-
крыть» . Следующая кнопк а бу дет открывать список уче-
ник ов. Возьмем ее с панели элементов. Здесь мы отк аж ем-
с я от у слуг мастера. Для этого мо жно отключить «Ма-
стер» на панели элементов управления или в первом диа-
логовом окне наж ать «Отмена» . На экране по явитс я кноп-
к а. Дадим ей имя «Список» (на вкладк е «Другие»), вы-
берем рисунок (на вкладк е «Мак ет»). По д кнопк ой поме-
стим по дпись «Список» . Р аскрасим форму т ак ж е, к ак мы
это делали ранее, и со храним по д именем «Список клас-
са» (рис. 120). Откроем форму в рабочем режиме. Пок а
Рис. 120. Со хранение формы
при наж атии на кнопку «Список» ничего не проис х о дит .
Р абот ает тольк о кнопк а «Закрыть» . Заметим, что фор-
ма имеет р яд ненужных атрибутов, т аких к ак, например,
108 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
область выделения. Переведем форму в режим к онструк-
тора. В окне свойств кнопки «Список» перейдем на вклад-
ку «События» . Мы уж е умеем присваивать событию ме-
то д. В данном случае событию «Наж атие кнопки» пост а-
вим в соответствие макрос «ОткрытьФорму» (рис. 121).
В окне параметров макроса выберем имя формы «Список
Рис. 121. Параметры макроса
ученик ов» . В строку «У словие отбора» введем тек ст:
[Класс]=[Формы]![Список классов]![Класс] And
[Буква]=[Формы]![Список классов]![Буква].
Т аким образом, мы ук азали, что критерием отбора запи-
сей в форме «Список ученик ов» бу дет совпадение зна че-
ний полей «Класс» и «Буква» со зна чениями о дноименных
полей формы «Список класса» . Р азумеетс я, совпадение
имен полей вовсе не об язательно. Мы мог ли полям формы
«Список класса» дать и другие имена. Со храним макрос.
Перейдем к свойствам формы. На вкладк е
§ 3.6. Р едактирование кнопочной формы 109
«Мак ет» ук аж ем зна чения свойств: «Область выделения»
– «Нет»; «Кнопки навиг ации» – «Нет»; «Полосы прокрут-
ки» – «Отсутствуют» (рис. 122). На вкладк е «Другие»
Рис. 122. Свойства формы
с делаем окно мо дальным. Отк орректиру ем свойства по-
ля «Класс» . На вкладк е «Данные» в строк е «У словие на
зна чение» зададим: >=1 And <=11 (рис. 123). Мо жно
Рис. 123. У ст ановк а связи между формами
задать зна чение по умолчанию, например 10 . Для поля
110 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
«Класс» т акж е мо жно задать зна чение по умолчанию «а» .
Ост алось внести изменения в кнопочную форму . Щелкнем
по известному нам зна чку в левой вер хней части окна ба-
зы данных, откроем страничку «Первичные данные» . В
списк е страниц у ст ановим ук азатель на «Первичные дан-
ные» и нажмем «Изменить» . На открывшейс я страничк е
нажмем «Создать» . Откроетс я окно для создания кнопки
(рис. 124). Введем тек ст «Список класса» .
Рис. 124. Создание кнопки
В строк е «Команда» выберем «Открыть форму для из-
менения» . В строк е «Форма» выберем «Список класса» .
«ОК» . Новая кнопк а ок азалась внизу списк а. У ст ановим
ук азатель на ней и, пользу ясь кнопк ой «Ввер х» , передви-
нем в поло ж ение после кнопки «Список ученик ов»
(рис. 125). Закроем окно странички, а затем и всего дис-
петчера кнопочных форм. После всех правок еще раз про-
тестиру ем прило ж ение. Откроем кнопочную форму . В ней
нажмем кнопку «Список класса» . Откроетс я о дноименная
§ 3.6. Р едактирование кнопочной формы 111
Рис. 125. Задание имени формы
Рис. 126. Список ученик ов 10а класса
форма. Зададим в поле класс зна чение 10, а в поле «Бук-
ва» – «а» и нажмем кнопку «Список» . По явитс я список
всех «кружк овцев» , ученик ов 10а класса (рис. 126). В на-
шем случае их ок азалось всего двое, т ак к ак мы для тести-
рования прило ж ения создали небольшой набор
112 Г ЛАВА 3. КНОПОЧНАЯ ФОРМА
первичных данных. На последнем эт апе разработки тести-
рование ж елательно провести с большим (а еще лучше с
полным) набором данных.
Поск ольку в параметрах A ccess у ст ановлено «Перекрыва-
ние ок он» , на экране мы видим сразу все открытые
формы. Их поло ж ение на экране мо жно определить, задав
свойство на вкладк е «Мак ет» в строк е «Выравнивание по
центру»: «Да» или «Нет» .
Г лава 4. Отчеты
В Microsoft A ccess пользователь имеет возмо жность вы-
вести на печать со дер жимое любой т аблицы, запроса или
формы. Однак о сог ласитесь, в резу ль т ате получитс я не то,
что мо жно поло жить на чальнику на стол. Отчет – это до-
кумент , предназна ченный для печати. В простейшем слу-
чае он состоит из заголовк а – тек ст а, располо ж енного
в на чале документ а; вер хнего к олонтиту ла – тек ст а, рас-
поло ж енного в вер хней части к аждой страницы; области
данных; нижнего к олонтиту ла – тек ст а, располо ж енного
внизу к аждой страницы; примечания – тек ст а, располо-
ж енного в к онце отчет а.
Отчет мо ж ет иметь и более сло жную структуру . Но мы
бу дем двиг атьс я от простого к сло жному .
§ 4.1. Отчет «Весь список»
105⇔ 118 Прежде всего создадим отчет , к оторый бу дет
предст авлять собой список всех «кружк овцев» в алфавит-
ном пор ядк е с ук азанием класса, дня ро ждения и телефо-
на. Для этого выберем пункт меню «Создание» и щелк-
нем по пиктограмме «Мастер отчетов» . В первом диало-
говом окне выберем в к а честве источник а данных т аблицу
114 Г ЛАВА 4. ОТЧЕТЫ
«Ученики» . Возьмем для отчет а поля «ФИ» , «Класс» , «Бук-
ва» , «ДР» и «Т елефон» (рис. 127). «Далее» . В следующем
Рис. 127. Выбор т аблицы и полей
диалоговом окне мастер предло жит добавить уровни груп-
пировки. Обойдемс я без группировки. «Далее» (рис. 128).
У ст ановим сортировку по возраст анию зна чений поля «ФИ» ,
Рис. 128. Уровни группировки
т . е. по алфавиту (рис. 129). «Далее» . Выберем мак ет «т аб-
личный» и ориент ацию «книжная» (рис. 130). «Далее» .
Дадим отчету имя «Весь список» (рис. 131). «Г отово» . На
экране по явитс я отчет (рис. 132). Обычно после
§ 4.1. Отчет «Весь список» 115
Рис. 129. Сортировк а по зна чениям поля «ФИ»
Рис. 130. Выбор мак ет а и ориент ации страницы
Рис. 131. Со хранение отчет а
мастера отчет прих о дитс я дорабатывать. В частности, ес-
ли мы собираемс я печат ать отчеты на черно-белом прин-
тере, цветной фон в заголовк е отчет а бу дет неуместен.
Щелчк ом по зна чку к онструктора в правом нижнем уг-
лу окна базы данных переведем отчет в режим к онструк-
тора (рис. 133). Т очно т ак ж е, к ак в случае с форма-
ми, отредактиру ем цвет фона и тек ст а. После небольших
116 Г ЛАВА 4. ОТЧЕТЫ
Рис. 132. Отчет «Весь список»
Рис. 133. Отчет «Весь список» в режиме к онструктора
к орректировок отчет примет вид, к ак на рис. 134. На-
до заметить, между формами и отчет ами много общего.
В частности, отчет , к ак и форма, являетс я к онтейнером
для элементов управления. На рисунк е мы видим основ-
ные разделы отчет а, о к оторых говорили в на чале
§ 4.1. Отчет «Весь список» 117
Рис. 134. Отчет после к орректировки
Рис. 135. Ок ончательный вид отчет а «Весь список»
118 Г ЛАВА 4. ОТЧЕТЫ
параграфа. Обратим внимание на поля в области нижнего
к олонтиту ла. Поле слева со дер жит вычисляемое зна чение
«=No w()» . Функция No w при обращении к ней возвращает
зна чение текущей даты. Выраж ение в поле справа форми-
ру ет тек стовую строку с номером текущей страницы отче-
т а и общего к оличества страниц. Причем номер текущей
страницы хранитс я в поле отчет а [P age], а общее к оличе-
ство страниц – в поле [P ages]. Закроем к онструктор с со-
хранением резу ль т атов. Т еперь при открытии отчет бу дет
иметь вид, к ак на рис. 135.
§ 4.2. Отчет «Ученики по классам»
113⇔ 125 Следующий отчет бу дет со дер ж ать список
ученик ов, сгруппированный по классам. Источник данных
– т аблица «Ученики» . Выберем поля «ФИ» , «ДР» , «Класс»
и «Буква» (рис. 136). Выделим два уровня группировки
по зна чениям полей «Класс» и «Буква» (рис. 137). Внут-
ри групп упор ядочим записи по зна чениям поля «ФИ»
(рис. 138). Выберем мак ет отчет а «ступенчатый» и книж-
ную ориент ацию страницы (рис. 139). Со храним отчет
по д именем «Ученики по классам» (рис. 140). Поск ольку
в последнем диалоговом окне мы выбрали параметр «Про-
смотреть отчет» , на экране по явитс я тольк о что создан-
§ 4.2. Отчет «Ученики по классам» 119
Рис. 136. Выбор источник а данных и полей
Рис. 137. Уровни группировки
Рис. 138. Сортировк а записей
120 Г ЛАВА 4. ОТЧЕТЫ
Рис. 139. Выбор мак ет а отчет а
Рис. 140. Со хранение отчет а
ный нами документ (рис. 141). Пок а работ а мастера нас
не очень у страивает . Р асполо ж ение полей в области дан-
ных не соответству ет надпис ям. Поля «Класс»
и «Буква» захватили большую часть пространства отче-
т а. Да еще у двух ученик ов вместо дат ро ждения прост ав-
лены последовательности символов «#» . Последнее быва-
ет , если данные не укладываютс я в размер поля в фор-
ме или отчете. Переведем отчет в режим к онструктора
и отредактиру ем его, к ак пок азано на рис. 142. Т акж е до-
бавим линии, разделяющие данные о классах. Эти линии
вы легк о найдете на панели элементов управления. Закро-
ем к онструктор с со хранением. Если теперь открыть отчет
§ 4.2. Отчет «Ученики по классам» 121
Рис. 141. Отчет , созданный мастером
Рис. 142. Отчет в режиме к онструктора
в рабочем режиме, он бу дет иметь вид, к ак на рис. 143.
Допу стим, нас попросили предст авить в отчете данные
122 Г ЛАВА 4. ОТЧЕТЫ
Рис. 143. Отчет «Ученики по классам»
о численности «кружк овцев» . В режиме к онструктора мы
видели, что отчет имеет заголовок и примечание, а груп-
пам «Класс» и «Буква» мастер выделил тольк о заголовок.
Здесь явно есть к ак ая-то дискриминация. На самом деле
группам то ж е полаг аетс я примечание. Нажмем в вер хней
части окна базы данных на пиктограмму «Группировк а»
(рис. 144а). В нижней части по явитс я панель
с надписью «Группировк а, сортировк а и итоги» . В строк е
§ 4.2. Отчет «Ученики по классам» 123
Рис. 144. Создание примечания группы
«Группировк а Класс» нажмем «Больше» и развернем ме-
ню по д тек стом «без раздела примечания» . Выберем
«с разделом примечания» (рис. 144б). Т о ж е про дела-
ем и в строк е «Группа Буква» . Как видно на рис. 145,
в окне к онструктора по явились области примечаний групп
«Класс» и «Буква» . Т еперь наст ало время объяснить, за-
чем нам эти области нужны. А нужны они нам затем,
что в них мы собираемс я разместить данные о численно-
сти групп. Поместим в примечание группы «Буква» поле.
Поле возьмем с панели элементов. Отформатиру ем его,
к ак пок азано на рис. 145. Сделаем надпись «Количе-
ство в классе» . В поле поместим вычисляемое выраж е-
ние =Coun t(*). Введем надпись «Количество в классе» .
Функция Coun t(*) возвращает к оличество записей в груп-
пе. Ск опиру ем это поле в примечание группы «Класс»
и в примечание отчет а. Т ек ст в надписи заменим на
124 Г ЛАВА 4. ОТЧЕТЫ
Рис. 145. Р едактирование отчет а «Ученики по классам»
Рис. 146. Ок ончательный вид отчет а «Ученики по классам»
«По всем буквам» и «Итого» соответственно. Закроем к он-
структор с со хранением. Если теперь открыть отчет , он
бу дет иметь вид, к ак на рис. 146.
§ 4.3. Отчет «Возраст учащих с я» 125
§ 4.3. Отчет «Возраст учащих с я»
118⇔ 140 Создадим отчет , к оторый по к аждому круж-
ку бу дет выдавать средний возраст , минимальный возраст
и мак симальный возраст посещающих его ученик ов, а т ак-
ж е их численность. Для этого нам понадобитс я источник
данных – запрос. Выберем пункт меню «Создание» и щелк-
нем по пиктограмме «Мастер запросов» . В первом диало-
говом окне выберем строку «Простой запрос» (рис. 147).
«Далее» . Выбираем т аблицу «Ученики» и ее поля
Рис. 147. Простой запрос
«ID_ученик» , «ФИ» , «ДР» (рис. 148). «Далее» . Со храним
запрос по д именем «Возраст» . В рабочем режиме он бу дет
иметь вид, к ак на рис. 149. Переведем запрос в режим к он-
структора (рис. 150). Мы видим три заполненных столб-
ца. В первый свобо дный столбец справа в строк е «Поле»
введем тек ст: Возраст: DateDiff(”yyyy”;[ДР];Date()). Т аким
образом, мы создали в запросе поле с вычисляемым зна че-
нием. До двоеточия – имя поля – «Возраст» .
126 Г ЛАВА 4. ОТЧЕТЫ
Рис. 148. Выбор источник а данных и полей
Рис. 149. Запрос в рабочем режиме
Рис. 150. Запрос «Возраст» в режиме к онструктора
Т о, что после двоеточия, вычисляемое зна чение, к оторое
нах о дит функция DateDiff. Эт а функция возвращает раз-
ность на чальной и системной, т . е. текущей, даты. Первый
§ 4.3. Отчет «Возраст учащих с я» 127
параметр задает единицу времени. В нашем случае ”yyyy”
озна чает , что разность дат бу дет выдана в го дах. Вто-
рой – на чальная дат а, день ро ждения ученик а [ДР]. Тре-
тий – системная дат а, к оторую выдает функция без па-
раметров Date(). Параметры разделены знак ом «;» . За-
кроем к онструктор с со хранением и откроем запрос в т аб-
личном режиме (рис. 151). Как мы видим, действитель-
Рис. 151. Запрос «Возраст» в рабочем режиме
но по явилс я новый столбец «Возраст» . Зна чение возраст а
бу дет менятьс я к аждый раз, к ог да у к ого-то из ученик ов
наступит день ро ждения. Здесь мы снова видим про явле-
ние принципа нормирования данных: не следу ет хранить
в базе то, что мо ж ет быть получено из уж е имеющих с я
данных. В данном случае неразумно было бы создавать
и заполнять поле «Возраст» . Следующий запрос. Источ-
ник ом данных для него бу дут две т аблицы и о дин запрос.
128 Г ЛАВА 4. ОТЧЕТЫ
«Создание» . «Мастер запросов» . В первом диалоговом окне
мастера опять выберем строку «Простой запрос» . «Далее» .
Источник данных – т аблица «Кружки» . Выбранные поля:
«ID_круж ок» и «Название» (рис. 152).
Рис. 152. Поля, выбранные из т аблицы «Кружки»
Снова откроем меню «Т аблицы и запросы» и выберем
т аблицу «Ученик_круж ок» . Перебросим в раздел «Вы-
бранные поля» все ее поля: «ID_ученик_круж ок» , «Уче-
ник» и «Круж ок» (рис. 153). Еще раз откроем меню «Т аб-
Рис. 153. Поля, добавленные из т аблицы «Ученик_круж ок»
лицы и запросы» , выберем запрос «Возраст» . Т от самый,
§ 4.3. Отчет «Возраст учащих с я» 129
к оторый тольк о что создали. Из этого запроса возьмем
о дно поле – «Возраст» (рис. 154). Список полей запроса
Рис. 154. Поля, добавленные из запроса «Возраст»
сформирован. Нажмем «Далее» . Ост авим переключатель
в поло ж ении «по дробный» (рис. 155).
Рис. 155. Запрос «по дробный»
Со храним запрос по д именем «Кружки_ученики» (рис. 156).
На экране по явитс я по дробный запрос, в к отором к аждой
Рис. 156. Со хранение запроса
130 Г ЛАВА 4. ОТЧЕТЫ
строк е соответству ет пара «круж ок – ученик» (рис. 157).
Закроем запрос. Создадим еще о дин простой запрос.
Рис. 157. Запрос «Кружки_ученики»
Источник данных – «Кружки_ученики» . Выбранные по-
ля: «ID_круж ок» , «Название» и «Возраст» (рис. 158).
На этот раз у ст ановим переключатель в поло ж ение
Рис. 158. Выбранные поля
«итоговый» (рис. 159). Нажмем кнопку «Итоги» . По яви-
лось окно, в к отором мы должны ук азать, к акие итого-
вые зна чения следу ет вычислить (рис. 160). В этом окне
мы видим тольк о строку «Возраст» . По зна чениям поля
§ 4.3. Отчет «Возраст учащих с я» 131
Рис. 159. Итоговый запрос
Рис. 160. Выбор итоговых зна чений
«ID_круж ок» записи бу дут разбиватьс я на группы. В стро-
к е «Возраст» расст авим г алочки ок оло интересующих нас
функций. Выберем A vg – среднее зна чение, Min – наи-
меньшее зна чение, Max – наибольшее зна чение. Кроме то-
го, попросим мастера по дсчит ать число записей в к аж-
дой группе. «ОК» . Со храним запрос по д именем «Воз-
раст_учащих с я» (рис. 161). На экране по явитс я
132 Г ЛАВА 4. ОТЧЕТЫ
Рис. 161. Со хранение запроса
т абличное предст авление запроса (рис. 162). Р ассмотрим
Рис. 162. Т абличное предст авление запроса «Возраст_учащих с я»
его внимательно и выявим все, что нам здесь не нравитс я.
Нам не нравятс я имена, к оторые присвоила полям запро-
са система. И еще система выдала средний возраст чле-
на кружк а «Мо делирование» с точностью до 13-го знак а
после запятой. Это уж точно лишнее. Переведем запрос
в режим к онструктора (рис. 163). Р ассмотрим вер хнюю
Рис. 163. Запрос «Возраст_учащих с я» в режиме к онструктора
строку . Она со дер жит имена полей. Первые два имени до-
ст ались от т аблицы «Ученики» . Следующие поля
§ 4.3. Отчет «Возраст учащих с я» 133
вычисляемые. Здесь до знак а «:» сто ят присвоенные систе-
мой имена. После двоеточия в третьем, четвертом
и пятом столбцах – имя поля – источник а данных для
групповых операций. Это поле «Возраст» . В последнем
столбце после двоеточия видим уж е знак омую нам функ-
цию Coun t(*). Р ассмотрим третью строку . В первых двух
столбцах стоит «Группировк а» . Это зна чит , что зна чения
соответствующих полей поло ж ены в основу группировки.
В следующих трех столбцах ук азаны групповые операции.
И нак онец, в последнем столбце слово «Выраж ение» го-
ворит нам о том, что зна чение этого поля вычисляетс я.
Исправим названия полей, на чиная с третьего, на «Сред-
ний возраст» , «Минимальный возраст» , «Мак симальный
возраст» и «Количество» (рис. 164). Займемс я форма-
Рис. 164. Р едактирование запроса «Возраст_учащих с я»
том поля, со дер ж ащего средний возраст члена кружк а.
Для этого в соответствующем столбце щелчк ом правой
клавиши мыши развернем вертик альное меню и выберем
в нем строку «Свойства» (рис. 165). В окне свойств у ст а-
новим фик сированный формат поля и число знак ов по-
сле запятой – 1 (рис. 166). Последнему полю дадим имя
134 Г ЛАВА 4. ОТЧЕТЫ
Рис. 165. «Свойства» поля «Средний возраст»
Рис. 166. Формат поля «Средний возраст»
«Количество» . Закроем к онструктор с со хранением резу ль-
т атов. На экране по явитс я предст авление отчет а в т аблич-
ном режиме (рис. 167). Закроем запрос. Выберем пункт
меню «Создание» , щелкнем по пиктограмме «Мастер отче-
тов» . В первом диалоговом окне выберем источник данных
– запрос «Возраст_учащих с я» и поля «Название» , «Сред-
ний возраст» , «Минимальный возраст» , «Мак симальный
§ 4.3. Отчет «Возраст учащих с я» 135
Рис. 167. Запрос «Возраст учащих с я»
возраст» и «Количество» (рис. 168). «Далее» . Добавлять
Рис. 168. Выбор источник а данных и полей
уровни группировки не бу дем (рис. 169). «Далее» .
Рис. 169. Уровни группировки
У ст ановим сортировку по возраст анию зна чений поля «На-
звание» (рис. 170). «Далее» . Выберем мак ет отчет а
136 Г ЛАВА 4. ОТЧЕТЫ
Рис. 170. Сортировк а
и ориент ацию страницы (рис. 171). Со храним отчет по д
Рис. 171. Мак ет отчет а
именем «Возраст учащих с я» (рис. 172). На экране
Рис. 172. Со хранение отчет а
по явитс я отчет (рис. 173). Переведем его в режим к он-
структора и отредактиру ем, к ак мы делали это ранее,
с расчетом на черно-белый принтер. Кроме того, в при-
мечании отчет а по дведем черту (черту берем с панели эле-
ментов управления) и ск опиру ем ту да ж е строку
§ 4.3. Отчет «Возраст учащих с я» 137
Рис. 173. Отчет «Возраст учащих с я»
области данных. Копиру ем всю строку потому , что т ак
быстрее, неж ели поочередно «т аск ать» поля с панели эле-
ментов. Введем тек ст надписи «По всем кружк ам» . Четы-
ре поля бу дут со дер ж ать вычисляемые зна чения. В пер-
вом бу дет нах о дитьс я зна чение среднего возраст а по всем
кружк ам (рис. 174). Среднее от средних. Выберем в окне
Рис. 174. Ок ончательный вид отчет а «Весь список»
свойств вкладку «Данные» и в строку «Данные» введем
тек ст:
=Sum([Средний возраст]*[Количество])/Sum([Количество]).
Функция Sum возвращает сумму зна чений поля в той
138 Г ЛАВА 4. ОТЧЕТЫ
группе области данных, к к оторой относитс я примечание.
В нашем случае, поск ольку мы работ аем в примечании
отчет а, суммирование произво дитс я по всей области дан-
ных. Обратите внимание, что зна чение среднего возраст а
вычисляетс я по форму ле средней взвешенной. Здесь нель-
зя просто взять среднее арифметическ ое, т ак к ак числен-
ности групп или, к ак говор ят в ст атистик е, веса групп
различные. А потому нах о дим сумму произведений зна че-
ний среднего возраст а на к оличество ученик ов в кружк е:
Sum([Средний возраст]*[Количество]) и делим ее на сум-
марное к оличество ученик ов во всех кружк ах
Sum([Количество]). Аналогично у ст анавливаем вычисляе-
мое зна чение для минимального минимума:
=Min([Минимальный возраст]) (рис. 175) и для мак-
Рис. 175. Минимальный минимум
Рис. 176. Мак симальный мак симум
симального мак симума: =Max([Мак симальный возраст])
(рис. 176). Общее к оличество ученик ов нах о дитс я просто
к ак сумма к оличеств по от дельным кружк ам (рис. 177):
§ 4.3. Отчет «Возраст учащих с я» 139
=Sum([Количество]). Закроем к онструктор с со хранением
Рис. 177. Общее к оличество «кружк овцев»
резу ль т атов. Т еперь отчет бу дет иметь вид, к ак на рис. 178.
Для создания этого отчет а нам пришлось предварительно
Рис. 178. Ок ончательный вид отчет а «Возраст учащих с я»
создать три запроса. Для к аждого, на чиная со второго,
источник ом данных являетс я предыдущий запрос.
140 Г ЛАВА 4. ОТЧЕТЫ
§ 4.4. Отчет «Ученики по кружк ам»
125⇔ 148 В § 4.2 мы оформили отчет к ак список
ученик ов, сгруппированных по классам. Т еперь создадим
список ученик ов, сгруппированных по кружк ам. Мо жно,
к ак в § 4.3, сформировать последовательность запросов,
а затем мастер создаст отчет с группировк ой по полю «Кру-
ж ок» . Но мы, дабы не повтор ятьс я, пойдем другим путем.
Вспомним, к ак в § 2.7 мы использовали по дчиненную фор-
му (с. 80). Сейчас аналогичные манипу ляции про делаем
с отчетом. Прежде всего создадим по дчиненный отчет . Вы-
берем пункт меню «Создание» и щелкнем по пиктограм-
ме «Мастер отчетов» . В первом диалоговом окне выбе-
рем т аблицу «Ученик_круж ок» , а в ней поля «Ученик»
и «Круж ок» (рис. 179). «Далее» . Уровни группировки
Рис. 179. Выбор т аблицы и полей
добавлять не надо. «Далее» . Сортировк а не требу етс я. «Да-
лее» . Ост авляем, обычно принятые по умолчанию, у ст а-
новки: мак ет «т абличный» и ориент ация страницы
§ 4.4. Отчет «Ученики по кружк ам» 141
«книжная» . Со храним отчет по д именем «Список учени-
к ов» . На экране по явитс я отчет в рабочем виде (рис. 180).
Переведем его в режим к онструктора и внесем р яд исправ-
Рис. 180. Отчет «Список ученик ов»
лений: отредактиру ем цвет а фона и тек ст а; уберем над-
пись к полю «Круж ок» , а само поле с делаем невидимым
(для этого в свойствах поля на вкладк е «Мак ет» в строк е
«Выво д на экран» надо у ст ановить зна чение «Нет»); у да-
лим надпись в заголовк е отчет а; с двинем до предела ввер х
планку с надписью «Вер хний к олонтиту л»; в нижнем к о-
лонтиту ле у далим поля с датой и номером страницы; по д-
нимем до предела ввер х планку с надписью «Примечание
отчет а» , к ак пок азано на рис. 181. Закроем к онструктор
142 Г ЛАВА 4. ОТЧЕТЫ
Рис. 181. Свойства поля «Круж ок»
с со хранением к орректировок. Откроем отчет в рабочем
режиме. Т еперь он имеет вид, к ак на рис. 182. Обратим
Рис. 182. Ок ончательный вид отчет а «Список ученик ов»
§ 4.4. Отчет «Ученики по кружк ам» 143
внимание, что сейчас в отчете со дер жимое полей мо ж ет
повтор ятьс я. Это потому , что на самом деле в списк е пред-
ст авлен перечень всех возмо жных пар «Ученик_круж ок» .
Но поле «Круж ок» мы с делали невидимым. В дальней-
шем в по дчиненной форме оно нам не потребу етс я, но про-
сто убрать его нельзя, поск ольку связь между основной
и по дчиненной формами бу дет у ст ановлена именно
по полю «Круж ок» .
Т еперь создадим основной отчет . В первом окне диалог а
с мастером выберем источник данных – запрос «Кружки
Запрос» , а в нем поля «ID_круж ок» , «Название» и «Пре-
по даватель» (рис. 183). Бу дем нажимать кнопку «Далее»
Рис. 183. Выбор запроса и полей
до тех пор, пок а мастер не предло жит со хранить отчет . Со-
храним его по д именем «Ученики по кружк ам» (рис. 184).
На экране по явитс я отчет (рис. 185).
Переведем его в режим к онструктора и перейдем к редак-
тированию. Ото двинем вниз планку с надписью «Нижний
к олонтиту л» и поместим ту да взятый с панели
144 Г ЛАВА 4. ОТЧЕТЫ
Рис. 184. Со хранение отчет а
Рис. 185. Отчет «Ученики по кружк ам»
элементов по дчиненный отчет (рис. 186). В открывшемс я
диалоговом окне ост авим переключатель в поло ж ении
«Имеющиес я отчеты и формы» и выберем созданный
в этом параграфе по дчиненный отчет «Список ученик ов»
(рис. 187). Выберем поле связи «ID_круж ок» (рис. 188).
Дадим по дчиненному отчету имя «Список ученик ов»
(рис. 189). Отк орректиру ем цвет а фона и тек ст а, а т ак-
ж е размеры полей. Закроем к онструктор с со хранением
резу ль т атов. Т еперь отчет выг лядит , к ак на рис. 190.
§ 4.4. Отчет «Ученики по кружк ам» 145
Рис. 186. Отчет «Ученики по кружк ам» в режиме к онструктора
Рис. 187. Выбор по дчиненного отчет а
Рис. 188. Выбор поля связи
146 Г ЛАВА 4. ОТЧЕТЫ
Рис. 189. Присвоение имени по дчиненной форме
Рис. 190. Ок ончательный вид отчет а «Ученики по кружк ам»
§ 4.4. Отчет «Ученики по кружк ам» 147
Список «Все объекты A ccess» в левой части окна базы дан-
ных пополнилс я еще о дним отчетом (рис. 191а).
Рис. 191. Все объекты A ccess
Чит атель, наверно, уж е обратил внимание на то, что все
чаще для открытия нужного объект а прих о дитс я пользо-
ватьс я полосой прокрутки. Если это в т ягость, мо жно от-
крыть меню справа от заголовк а списк а объектов и у ст а-
новить по дх о дящий филь тр (рис. 191б). Например, чтобы
перед вами был тольк о список отчетов.
148 Г ЛАВА 4. ОТЧЕТЫ
§ 4.5. Отчет «Количество ученик ов»
140⇔ 157 Следующий отчет бу дет со дер ж ать к оличе-
ство ученик ов по классам и кружк ам. Причем нас бу дут
интересовать тольк о ученики 9–11-х классов. На самом
деле последнее бу дет уж е не совсем к оличеством учени-
к ов, поск ольку о дин ученик мо ж ет заниматьс я в неск оль-
ких кружк ах. Правильнее говорить о к оличестве пар «уче-
ник – круж ок» . Для на чала создадим о дин вспомог атель-
ный запрос: «Создание» , «Мастер запросов» , «Простой за-
прос» , «ОК» . Выберем т аблицу «Ученики» , а в ней поля
«ID_ученик» и «Класс» (рис. 192). Не закрывая окна,
Рис. 192. Выбор полей из т аблицы «Ученики»
снова развернем меню «Т аблицы и запросы» и выберем
т аблицу «Ученик_круж ок» , а из нее тольк о о дно поле «Кру-
ж ок» (рис. 193). Как видно на рисунк е, всего мы выбрали
три поля из двух т аблиц, связанных по полю «ID_ученик» .
«Далее» . Ост авим переключатель в поло ж ении
§ 4.5. Отчет «Количество ученик ов» 149
Рис. 193. Выбор полей из т аблицы «Ученик_круж ок»
«по дробный» (рис. 194). «Далее» . Со храним запрос по д
Рис. 194. Все объекты A ccess
именем «Количество ученик ов_0» . На экране по явитс я т аб-
личное предст авление запроса (рис. 195). Здесь фигури-
Рис. 195. Запрос «Количество ученик ов_0»
руют тольк о к о ды ученик ов. Как мы ранее отмечали, к о ды
уник альны, а имена не всег да. Переведем запрос в режим
к онструктора (рис. 196). В столбце поля «Класс» в строк е
150 Г ЛАВА 4. ОТЧЕТЫ
Рис. 196. Запрос «Количество ученик ов_0» в режиме к онструктора
«У словия отбора» пишем: >= 9 . Это зна чит ,
в запросе бу дут предст авлены тольк о записи, относ ящие-
с я к ученик ам 9-го и выше классов. Закроем к онструктор.
Убедимс я в правильной работе запроса. Перейдем к ос-
новному запросу: «Создание» , «Мастер запросов» , «Пере-
крестный запрос» , «ОК» . Выберем источник данных. Для
этого у ст ановим переключатель в поло ж ение «Запросы»
и выберем запрос «Количество ученик ов_0» (рис. 197).
«Далее» . Выберем поле «Круж ок» , зна чения к оторого бу-
дут заголовк ами строк (рис. 198). «Далее» . В к а честве
заголовк ов столбцов выберем зна чения поля «Класс»
(рис. 199). «Далее» . Ост алось поле «ID_ученик» . Ему мы
пост авим в соответствие функцию «Число» , к ак пок аза-
но на рис. 200. Это зна чит , что в ячейк е, строк а к оторой
§ 4.5. Отчет «Количество ученик ов» 151
Рис. 197. Выбор запроса
Рис. 198. Определение строк
Рис. 199. Определение столбцов
соответству ет кружку , а столбец – классу , бу дет нах о дить-
с я соответствующее число ученик ов. Со храним запрос по д
152 Г ЛАВА 4. ОТЧЕТЫ
Рис. 200. Выбор функции
именем «Количество ученик ов» . «Г отово» . На экране по-
явитс я т абличное предст авление запроса (рис. 201). Пе-
Рис. 201. Запрос «Количество ученик ов»
реведем его в режим к онструктора и в последнем столб-
це немного сократим имя вычисляемого поля. В первую
строку этого столбца до двоеточия вместо «Итоговое зна-
чение» введем тек ст «Итого» (рис. 202). Во второй стро-
к е мы видим о дно и то ж е для всех четырех столбцов
§ 4.5. Отчет «Количество ученик ов» 153
Рис. 202. Запрос «Количество ученик ов» в режиме к онструктора
«Имя т аблицы» – запрос «Количество ученик ов_0» . В тре-
тьей строк е столбцов «Круж ок» и «Класс» стоит отметк а
«Группировк а» . Зна чит , по зна чениям этих полей произво-
дитс я группировк а, а в столбце «ID_ученик» ук азана уж е
знак омая нам групповая операция «Coun t» – число запи-
сей. Последнее поле служит для нах о ждения итогового,
т . е. суммарного зна чения к оличества записей по к аждой
строк е. Перейдем к созданию отчет а. «Создание» . «Мастер
отчетов» . Источник данных – запрос «Количество учени-
к ов» . Выбранные поля – все, т . е. «Круж ок» , «Итого» ,
«9» , «10» и «11» (рис. 203). Это к аж етс я непривычно, но
«9» , «10» и «11» здесь – это имена полей. «Далее» . Уров-
ни группировки пропу стим (рис. 204). «Далее» . Со хра-
ним отчет по д именем «Количество ученик ов» (рис. 205).
На экране по явитс я созданный мастером отчет (рис. 206).
Внимательно рассмотрим его, чтобы сразу оценить, что
здесь нуждаетс я в доработк е. Перейдем в режим
154 Г ЛАВА 4. ОТЧЕТЫ
Рис. 203. Выбор источник а данных и полей
Рис. 204. Уровни группировки
Рис. 205. Со хранение отчет а
к онструктора (рис. 207). Отредактиру ем надпись в за-
головк е отчет а. В примечание добавим надпись «Всего»
и четыре поля, соответствующие полям из области дан-
ных. Эти поля проще просто ск опировать, дабы не тратить
§ 4.5. Отчет «Количество ученик ов» 155
Рис. 206. Отчет «Количество ученик ов»
Рис. 207. Отчет «Количество ученик ов» в режиме к онструктора
время на форматирование. Поля бу дут со дер ж ать суммар-
ные зна чения по столбцам: «=Sum([Итого])» , «=Sum([9])» ,
«=Sum([10])» и «=Sum([11])» . Для их вво да лучше вос-
пользоватьс я окном свойств (вкладк а «Данные»), к ак по-
к азано на рис. 207. Веро ятно, придетс я немного
156 Г ЛАВА 4. ОТЧЕТЫ
отредактировать размеры полей и их располо ж ение. Фон
с делаем белым, а цвет шрифт а – черным. По ж алуй все!
Закроем к онструктор с со хранением. Т еперь при откры-
тии отчет бу дет иметь вид, к ак на рис. 208.
Рис. 208. Ок ончательный вид отчет а «Количество ученик ов»
Всего, не счит ая по дчиненного, в этой г лаве мы создали
пять различных отчетов, рассмотрев наиболее распростра-
ненные вопросы, возник ающие при их создании. Во мно-
гом возмо жности отчетов определяютс я набором тех ос-
новных сущностей, к оторые мы выделили в на чале книги,
и, разумеетс я, их свойствами. Т ак, если мы не отмети-
ли т ак ое свойство ученик а, к ак «Пол» , то лишили себ я,
§ 4.6. Р едактирование кнопочной формы 157
а зна чит и пользователя прило ж ения, возмо жности полу-
чать отчеты о к оличестве маль чик ов и девочек, посещаю-
щих кружки.
§ 4.6. Р едактирование кнопочной формы
148⇔ 160 Ост алось обеспечить навиг ацию по создан-
ным отчет ам. Р анее мы зарезервировали для отчетов стра-
ничку кнопочной формы. Щелкнем по пиктограмме «Дис-
петчер кнопочных форм» в левом вер хнем уг лу окна ба-
зы данных. На экране всплывет окно диспетчера. Выбе-
рем «Отчеты» и нажмем «Изменить» или просто дважды
щелкнем по соответствующей строк е. По явитс я странич-
к а «Отчеты» (рис. 209). «Создать» . В диалоговом окне
Рис. 209. Окно диспетчера кнопочных форм
в строк е «Т ек ст» наберем «Весь список»; в строк е «Коман-
да» откроем меню и выберем «Открыть отчет»;
в строк е «Отчет» в меню выберем «Весь список» (рис. 210).
У нас тек ст «Весь список» , к оторый в дальнейшем бу дет
158 Г ЛАВА 4. ОТЧЕТЫ
Рис. 210. Параметры элемент а кнопочной формы
служить надписью к соответствующей кнопк е, совпадает
с названием отчет а, к оторый долж ен открыватьс я при на-
ж атии на эту кнопку . В общем случае это не об язатель-
но. Нажимаем «ОК» . Далее точно т ак ж е создаем кнопки
для ост альных отчетов: «Возраст учащих с я» , «Количество
ученик ов» , «Ученики по классам» и «Ученики по круж-
к ам» . Кнопк а «Г лавное меню» , к оторая служит для воз-
врат а на г лавную страницу кнопочной формы, ок азалась
ввер ху . У ст ановим на соответствующей строк е ук азатель
и, пользу ясь кнопк ой «Вниз» , переместим ее в к онец спис-
к а (рис. 211). Нажмем «Закрыть» и еще раз «Закрыть» .
Рис. 211. Страница кнопочной формы «Отчеты»
§ 4.6. Р едактирование кнопочной формы 159
Т еперь откроем кнопочную форму . Нажмем кнопку «От-
четы» . На экране по явитс я окно с кнопк ами для вызо-
ва отчетов (рис. 212). Убедимс я, что кнопки вызывают
Рис. 212. Окно кнопочной формы «Отчеты»
Рис. 213. Вызов отчет а
отчеты, соответствующие надпис ям. Например, при наж а-
тии на кнопку с надписью «Ученики по кружк ам» откры-
ваетс я о дноименный отчет (рис. 213). Открытый отчет мы
мо ж ем вывести на печать. Для этого дост аточно наж ать
«Файл» в вер хнем меню окна базы данных и в открыв-
шемс я вертик альном меню выбрать строку «Печать» .
От ладк а прило ж ения
157⇔ 168 Ког да к аж етс я, что дело с делано, на чина-
етс я самый серьезный эт ап работы – от ладк а. Хот я про-
граммист в процессе разработки прило ж ения занимаетс я
от ладк ой посто янно, тольк о сейчас мо жно ск онцентриро-
вать все внимание на вопросах надежности прило ж ения.
Для этого еще раз проверим в работе все его к омпоненты.
В частности, заметим, что набор данных, с к оторым мы
до сих пор работ али, возмо жно, не отраж ает все ситу-
ации, к оторые могут возникнуть при эк сплу ат ации при-
ло ж ения. Кроме того, мы ни разу не у даляли первичные
данные. Откроем кнопочную форму , перейдем на ее стра-
ничку «Первичные данные» (рис. 110 на с. 100) и откроем
форму «Список ученик ов» . Допу стим, о дин из ученик ов,
например Петров Коля, переех ал в другой горо д. У далим
запись, в к оторой поле «ФИ» имеет зна чение «Петров Ко-
ля» . Для этого щелкнем левой клавишей мыши по обла-
сти выделения в соответствующей строк е. Область выде-
ления окраситс я в черный цвет . Нажмем на клавиатуре
к омпьютера «Delete» . По явитс я диалоговое окно с прось-
бой по дтвер дить у даление. После по дтвер ждения в лен-
точной форме пропадет соответствующая строк а.
От ладк а прило ж ения 161
Закроем форму и откроем «Список кружк ов» . Сделаем
двойной щелчок по названию кружк а «Физический» .
Всплывет форма с информацией о кружк е, в к оторой пред-
ст авлен список членов кружк а. Как мы видим (рис. 214),
на месте записи «Петров Коля» по явилась пу ст ая стро-
к а. При этом в т аблице «Ученик_круж ок» по-прежнему
Рис. 214. Физический круж ок
хранитс я к о д Петрова Коли, но к этому к о ду отсутству ет
по дст ановк а. Закроем форму и откроем «Список круж-
к ов» . У далим в нем круж ок «Умелые руки» . Если теперь
просмотреть отчеты, пок аж етс я, что вс я информация о де-
ятельности кружк а бесследно исчезла. Но не тут-то бы-
ло! Закроем кнопочную форму и откроем т аблицу «Уче-
ник_круж ок» . Ее фрагмент предст авлен на рис. 215. Мы
видим р яд записей, в к оторых отсутству ет название круж-
к а. Опять т а ж е история: запись о связи между ученик ом
и кружк ом со хранилась, к о д кружк а со хранилс я, но от-
сутству ет по дст ановк а к к о ду , поск ольку у далена запись
в т аблице «Кружки» , к оторая связывала к о д и название.
162 ОТ ЛАДКА ПРИЛО ЖЕНИЯ
Рис. 215. Т аблица «Ученик_круж ок»
В двух запис ях – пу стое зна чение «ФИ» . Здесь был «Ко-
ля Петров» . Его к о д со хранилс я, но по дст ановк а пропала.
Т аким образом, имеет место нарушение целостности дан-
ных. В т аблице «Ученик_круж ок» присутствуют неакту-
альные записи. Этот недост аток мы должны у странить.
Пришло время открыть маленький секрет . Прежде чем
демонстрировать у даление ученик а и кружк а, автор с де-
лал к опию файла «Кружки.accdb» и все эти манипу ляции
выполнил на к опии. Как говоритс я, «в процессе съемок
никто не пострадал» . Жалк о ведь тру дов по вво ду дан-
ных. У далим к опию базы данных и с делаем новую к опию
От ладк а прило ж ения 163
ис х о дного файла. Откроем ее. В кнопочной форме перей-
дем на страничку «Первичные данные» . Откроем форму
«Список препо давателей» и у далим запись «Крылов Ни-
к олай Кузьмич» , рук ово дитель кружк а «Умелые руки» .
Закроем форму и откроем «Список кружк ов» . На месте
рук ово дителя кружк а «Умелые руки» мы видим пу стую
строку (рис. 216). Ух о д рук ово дителя не всег да озна чает
Рис. 216. Список кружк ов
прекращение работы кружк а. Мы мо ж ем открыть меню
и назна чить нового рук ово дителя из списк а препо дава-
телей. Здесь угрозы целостности данных нет . Выйдем из
прило ж ения. «Испорченную» к опию мо жно у далить. От-
кроем ис х о дный файл. Закроем кнопочную форму , щелк-
нув по крестику в правом вер хнем уг лу ее окна. Выберем
пункт меню «Р абот а с базами данных» . Щелкнем по пик-
тограмме «Сх ема данных» . В открывшемс я окне
164 ОТ ЛАДКА ПРИЛО ЖЕНИЯ
с х емы данных (рис. 27 на с. 35) дважды щелкнем по ли-
нии, соединяющей поле «ID_ученик» т аблицы «Ученики»
с полем «Ученик» т аблицы «Ученик_круж ок» . Откроет-
с я окно с заголовк ом «Изменение связей» (рис. 217а).
У ст ановим флажки: «Обеспечение целостности данных» ,
Рис. 217. Изменение связей
«Каск адное обновление связанных полей» и «Каск адное
у даление связанных записей» . «ОК» . Аналогично дважды
щелкнем по линии, соединяющей поле «Круж ок» т аблицы
«Ученик_круж ок» с полем «ID_круж ок» т аблицы «Круж-
ки» , и у ст ановим т акие ж е флажки (рис. 217б). У к онцов
линий по явились зна чки: « 1−∞ » и «∞− 1 » соответствен-
но (рис. 218). Это зна чит , что к аждый ученик мо ж ет за-
ниматьс я в неск ольких кружк ах, а в к аждом кружк е мо-
ж ет заниматьс я неск ольк о ученик ов. Т еперь система бе-
рет на себ я заботу об обеспечении целостности данных.
От ладк а прило ж ения 165
Рис. 218. Сх ема данных
В случае у даления записи об ученик е бу дут у далятьс я все
соответствующие ему записи из связанной т аблицы
«Ученик_круж ок» . Если у далили запись о Коле Петро-
ве, то автоматически система у далит все записи из т абли-
цы «Ученик_круж ок» , в к оторых фигуриру ет Коля Пет-
ров, точнее его к о д. В случае у даления записи о круж-
к е бу дут у далятьс я все соответствующие записи т аблицы
«Ученик_круж ок» .
Зададимс я вопросом: что проис х о дит при у далении запи-
сей? Мо ж ете легк о проверить, что при у далении записей
размер файла не уменьшаетс я. Г овор ят , что записи у да-
ляютс я логически, но не физически. В процессе разра-
ботки прило ж ения мы часто вносим исправления в со-
зданные нами объекты базы данных. Но даж е если ис-
правление состоит в том, что мы у далили к ак ой-либо объ-
ект , размер файла не уменьшитс я. Т аким образом, к ак
в процессе разработки прило ж ения, т ак и в процессе его
эк сплу ат ации размер файла бу дет тольк о увеличиватьс я.
166 ОТ ЛАДКА ПРИЛО ЖЕНИЯ
Если нам придетс я часто добавлять и у далять записи, зна-
чительная часть занимаемой прило ж ением памяти бу дет
хранить «му сор» . Нерациональное использование памяти
само по себе пло х о, но это т акж е ведет к замедлению ра-
боты прило ж ения. Чтобы у странить эту проблему , приме-
няют процедуру с ж атия файла. Выберем пункт вер хнего
меню «Файл» и щелкнем по большой кнопк е с надписью
«Сж ать и восст ановить базу данных» (рис. 219). В нашем
Рис. 219. Сж атие базы данных
случае к к онцу разработки прило ж ения его файл занимал
1,38МБ, после с ж атия – 0,99МБ. Однак о дабы не нагру-
ж ать пользователя лишними забот ами, лучше с делать т ак,
чтобы с ж атие время от времени проис х о дило автоматиче-
ски. Для этого преду смотрен специальный параметр базы
От ладк а прило ж ения 167
данных. Выберем: «Файл» , «Параметры» , «Т екущая ба-
за данных» . В открывшемс я окне у ст анавливаем флаж ок
перед строк ой «Сжимать при закрытии» (рис. 220). Это
Рис. 220. Сх ема данных
зна чит , что с ж атие вашей базы данных бу дет проис х о дить
при к аждом ее закрытии.
Т еперь прило ж ение мо жно с дать в эк сплу ат ацию. Но для
программист а и это еще не к онец тру дов. Как тольк о
зак азчик приступит к работе с прило ж ением, его, т . е.
зак азчик а, непременно на чнут посещать фант азии, порой
достойные внимания Бехтерева. Он бу дет посто янно тор-
мошить программист а, и бедняге придетс я создавать все
новые и новые поля, запросы, формы, отчеты...
Историческ ая справк а
160⇔ 173 Microsoft – крупнейшая транснациональная
к омпания по произво дству программного обеспечения
и ак сессу аров для персональных к омпьютеров. Програм-
мы Microsoft переведены более чем на 45 язык ов.
Основали к омпанию в 1975 го ду два друг а-сту дент а – Билл
Г ейтс и Пол Аллен. Г ейтсу тог да исполнилось 20 лет ,
Рис. 221. Билл Г ейтс и Пол Аллен
а Аллену 22 го да. Друзьями и единомышленник ами они
были еще со шк ольной ск амьи в Сиэт ле. Восьмиклассник
Г ейтс и дес ятиклассник Аллен познак омились на заняти-
ях по программированию. Оба все свобо дное время по-
свящали к омпьютору , часто в ущерб другим предмет ам.
169
При этом Г ейтс с выраж енным математическим мышлени-
ем более т яготел к программированию, а Аллена больше
интересовала техническ ая сторона вычислительной тех-
ники. Г лавный к апит ал, к оторый мог ли тог да вло жить
Рис. 222. Билл Г ейтс
170 ИСТОРИЧЕСКАЯ СПР АВКА
Рис. 223. Пол Аллен
в бизнес друзья, – это их мозги, идеи и ж елание работ ать.
Проект ок азалс я у спешным. Всего через 11 лет
171
Билл Г ейтс, а немного позж е и Пол Аллен ст али мил-
лиар дерами. Возмо жно, кто-то ск аж ет: «Сбылась амери-
к анск ая мечт а» . Но для Г ейтса и Аллена это было толь-
к о на чало пути. В 1983 г . Пол Аллен покидает Microsoft,
а в 2008 г . Билл Г ейтс ост авляет должность рук ово ди-
теля к орпорации. В 2010 г . Г ейтс ост авляет т акж е пост
исполнительного директора Microsoft, чтобы полностью
посвятить себ я благотворительным проект ам. Среди
состо ятельных лю дей мира Г ейтс являетс я абсолютным
чемпионом по рас х о дам на благотворительность. С 1994
по 2010 г . он вло жил в фонд Билла и Мелинды Г ейтс
28 млр д долларов. Г ейтс по ддер живает проекты, связан-
ные с эк ологией, поиск ом чистой и аль тернативной энер-
гии. В феврале 2010 г . он выступает с предло ж ением к о
всем миллиар дерам о переда че половины своих состо яний
на благотворительность.
Пол Аллен после ух о да из Microsoft субсидиру ет создание
первого частного суборбит ального к орабля SpaceShip one,
на к отором были осуществлены два у спешных к осмиче-
ских полет а. В 2005 г . финансиру ет строительство радио-
телеск опа для поиск а внеземных цивилизаций. В 2011 г .
ст ановитс я о дним из основателей к омпании Stratolaunc h
Systems, разрабатывающей системы дост авки грузов на
орбиту . На о дной из своих яхт , снаб ж енной двумя
172 ИСТОРИЧЕСКАЯ СПР АВКА
по дво дными мини-ло дк ами, Аллен прово дит по дво дные
ар х еологические эк спедиции. К со ж алению, в 2018 г .
болезнь прервала жизнь этого выдающегос я человек а.
В насто ящее время про дукция Microsoft занимает зна чи-
тельную долю рынк а программного обеспечения. Наиболь-
шую известность получили операционная система
Windo ws, тек стовый процессор W ord, т абличный процес-
сор Excel, реляционная СУБД A ccess. На данный момент
председателем совет а директоров Microsoft являетс я Дж он
Т омпсон, г лавным управляющим – Сатья Наделла.
Фотографии (рис. 221–223) взяты с сайт а:
h ttps://y andex.ru/images
Список литературы
[1] Гурвиц, Г . А. Microsoft A ccess 2010. Р азработк а прило-
ж ений на реальном примере / Г . А. Гурвиц. – Санкт-
Петербург : БХВ – Петербург , 2010. – 496 с.
[2] Дейт , К. Дж. Введение в системы баз данных /
К. Дж. Дейт . – Москва : Вильямс, 2001. – 1072 с.
[3] Бек аревич, Ю. Б. Самоучитель A ccess 2010 / Ю. Б.
Бек аревич. – Санкт-Петербург : БХВ – Петербург ,
2011. – 432 с.
Вышли в печать книги серии
«Математик а не для ЕГЭ»:
Белый Е. К. Символы и их творцы. – Петрозаво дск:
Издательство ПетрГУ , 2018. – 72 с.
Белый Е. К. Вредная геометрия. – Петрозаво дск:
Издательство ПетрГУ , 2017. – 36 с.
Белый Е. К. Египетский счет . – Петрозаво дск:
Издательство ПетрГУ , 2017. – 36 с.
Белый Е. К. Прогрессии. – Петрозаво дск: Издательство
ПетрГУ , 2016. – 132 с.
Белый Е. К., Дорофеева Ю. А. Алгебраические уравне-
ния. – Петрозаво дск: Издательство ПетрГУ , 2015. – 240 с.
Книги мо жно найти в сети Интернет , в частности на
сайте «Учительский порт ал»: h ttps://www.uc hp ortal.ru/
Учебное электронное издание
Белый Евгений Конст антинович
Математик а не для ЕГЭ
Введение в Microsoft A ccess
Учебное электронное пособие
для учащих с я средних шк ол
Р едактор Е. Е. Порывакина
Оригинал-мак ет , электронная версия Е. К. Бе лого
Оформление обло жки Е. Ю. Т ихоновой
По дписано к изготовлению 25.01.20. 1CD-R. 9.4 Мб.
Тираж 100 экз. Изд. № 236
Федеральное госу дарственное бю дж етное
образовательное учреждение высшего образования
ПЕТРОЗАВО ДСКИЙ ГОСУ ДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
185910, г . Петрозаво дск, пр. Ленина, 33
h ttps://p etrsu.ru
Т ел.: (8142) 71-10-01
Изготовлено в Издательстве ПетрГУ
185910, г . Петрозаво дск, пр. Ленина, 33
URL: press.p etrsu.ru/UNIPRESS/UNIPRESS.h tml
Т ел./фак с: (8142) 78-15-40
n vpahomo v a@y andex.ru