
Inform2005
.pdf
151
Создайте новый ленточный отчет на основе запроса «Фильмы (жанры)» (см. 4.1) и настройте его следующим образом:
•сохраните созданный отчет под именем Фильмы (жанры) — см. 1.5;
•измените стиль отчета на «Простой» («Обычный» в Access 2000/XP) —
см. 4.3;
•измените ориентацию страницы на книжную (см. 4.4) и откорректируйте
макет отчета так же, как в случае отчета «Фильмы (названия)». Повторно сохраните откорректированный отчет.
Недостатком полученного отчета является то, что в первом и во втором его столбце («Жанр» и «Страна») имеется много одинаковых значений, расположенных одно под другим (в силу сортировки по данным полям — см. 3.8). Одним из способов исправления этого недостатка является группировка данных.
4.11. ГРУППИРОВКА ДАННЫХ В ОТЧЕТЕ:
•перейдите в режим конструктора;
•«Вид | Сортировка и группировка» или ; в результате появится окно «Сортировка и группировка»;
•в первую ячейку столбца «Поле/выражение» с помощью выпадающего списка введите название поля «Жанр»; для свойства «Заголовок группы» в нижней части окна установите значение «Да»;
•закройте окно «Сортировка и группировка», нажав кнопку .
В результате описанных действий в макете отчета появится новый раздел: «Заголовок группы «Жанр»», расположенный непосредственно под разделом верхнего колонтитула. Перетащите мышью в этот раздел поле «Жанр» из раздела «Область данных» и уменьшите высоту раздела «Заголовок группы «Жанр»» так, чтобы выше и ниже поля «Жанр» не было пустых промежутков (см. 2.17).
Перейдя в режим предварительного просмотра, убедитесь, что теперь название каждого жанра выводится один раз — перед группой фильмов данного жанра.
Снова вызовите окно «Сортировка и группировка» и во второй строке верхней таблицы (ниже строки «Жанр») введите название поля «Страна»; для этого поля, как и для жанра, установите значение свойства «Заголовок группы» равным «Да». После закрытия окна «Сортировка и группировка» в макете отчета появится еще один раздел: «Заголовок группы «Страна»». Переместите в этот раздел поле «Страна» из области данных (не меняя его позиции по горизонтали: это поле попрежнему должно располагаться под элементом-надписью «Страна» из верхнего колонтитула).
Перейдя в режим предварительного просмотра, убедитесь, что теперь один раз выводится не только каждый жанр, но и каждая страна в пределах одного жанра.
4.12. ДОПОЛНИТЕЛЬНАЯ СОРТИРОВКА В ОТЧЕТЕ: при выполнении группировки
может быть нарушен порядок сортировки данных по другим полям. Так, в нашем случае названия русских или французских комедий в отчете могут располагаться не по алфавиту. Для восстановления дополнительной сортировки по названиям

152 |
Часть III. Работа с базами данных: Microsoft Access |
следует опять вызвать окно «Сортировка и группировка» и ввести в очередную (третью) ячейку столбца «Поле/выражение» поле «Назв» — с ним, как и с предыдущими полями, автоматически будет связан порядок сортировки «По возрастанию» (порядок сортировки полей указывается во втором столбце окна «Сортировка и группировка»). Подчеркнем, что для поля «Назв» не следует изменять значения его свойств в нижней части окна «Сортировка и группировка».
4.13. ДОПОЛНИТЕЛЬНОЕ ФОРМАТИРОВАНИЕ ЗАГОЛОВКОВ ГРУПП ДАННЫХ: вы-
делите элемент «Линия» в верхнем колонтитуле и скопируйте его в буфер обмена
(кнопкой или комбинацией [Ctrl]+[C]), выделите раздел «Заголовок группы «Жанр»» (щелкнув мышью на его сером заголовке; при этом цвет заголовка разде-
ла изменится на черный) и вставьте в него копию линии (кнопкой или комбинацией [Ctrl]+[V]). В результате линия будет вставлена выше элемента «Жанр». Перетащите мышью вставленную линию ниже элемента «Жанр». С помощью окна свойств линии (см. 2.8) установите ее ширину равной 1 пункту (свойство «Ширина границы» на вкладке «Макет»). Выделите поле «Жанр» и установите для него курсивное начертание (см. 2.11).
Сохраните откорректированный отчет (см. 1.5) и закройте базу данных
(см. 1.17).
A4–2. В существующей базе данных «Спорт» определить на основе запроса «Гимнастика (страны)» (см. упражнение A3–3) ленточный отчет с таким же именем. Установить для отчета книжную ориентацию страниц, отформатировать его по образцу и выполнить в нем группировку по странам.
. . . . . . . . . . . . .

153
A4–3. В существующей базе данных «Магазин» определить на основе запросов «Клиенты (ФИО)» и «Клиенты (скидка)» (см. упражнение A3–6) ленточные отчеты с такими же именами. Установить для обоих отчетов книжную ориентацию страниц и отформатировать их по образцам; в отчете «Клиенты (скидка)» выполнить группировку по полю «Скидка».
. . . . . . . . . . . . .
. . . . . . . . . . . . .

154 |
Часть III. Работа с базами данных: Microsoft Access |
5.Базы данных, содержащие несколько связанных таблиц. Составные формы и составные отчеты
A5–1. Дополнить существующую базу данных «Видео» (см. упражнение A1–1), включив в таблицу «Фильмы» поле «НомКас» (см. последний столбец таблицы 1 в приложении) и создав таблицу «Кассеты» (см. таблицу 4 в приложении). Связать таблицы с помощью полей «Ном» (таблица «Кассеты») и «НомКас» (таблица «Фильмы»), после чего заполнить их данными, указанными в таблицах 1 и 4 приложения.
Решение
Откройте базу данных «Видео» (см. 2.1).
Откорректируйте структуру таблицы «Фильмы», открыв ее в режиме конструктора (см. 1.15) и добавив в список полей новое поле НомКас типа «Числовой» размера «Длинное целое» (см. 1.3, 1.7), после чего сохраните структуру таблицы (см. 1.5) и закройте таблицу «Фильмы» (см. 1.16).
Действуя так же, как при создании таблицы «Фильмы» (см. 1.2–1.3), создайте новую таблицу, определив ее поля следующим образом:
Имя поля |
Тип данных |
Описание |
Ном |
Счетчик |
Порядковый номер кассеты |
Фирма |
Текстовый |
Фирма-производитель |
Длит |
Числовой |
Длительность кассеты |
Определите следующие свойства полей таблицы (см. 1.7):
Поле «Ном» |
Подпись: |
Номер |
Поле «Фирма» |
Размер поля: |
10 |
|
Обязательное поле: |
Да |
Поле «Длит» |
Размер поля: |
Целое |
|
Подпись: |
Длительность |
|
Обязательное поле: |
Да |
Поле «Ном» сделайте ключевым (см. 1.4).
Сохраните созданную таблицу под именем Кассеты (см. 1.5) и закройте ее
(см. 1.16).
5.1. ОПРЕДЕЛЕНИЕ СВЯЗЕЙ МЕЖДУ ТАБЛИЦАМИ:
•«Сервис | Схема данных...» или ;
•с помощью появившегося окна «Добавление таблицы» добавьте в схему данных таблицы «Кассеты» и «Фильмы» (щелкая на их именах мышью и нажимая [Добавить]), затем нажмите кнопку [Закрыть]. В результате в окне «Схема данных» будут отображаться окна таблиц, содержащие все их поля (как в верхней части окна конструктора запросов — см. 3.1);

155
•увеличьте высоту окна таблицы «Фильмы» так, чтобы в нем отображались все поля (для этого надо зацепить мышью за нижнюю рамку окна «Фильмы» и перетащить рамку вниз);
•по условию упражнения таблицы должны быть связаны с помощью полей «Ном» (таблица «Кассеты») и «НомКас» (таблица «Фильмы»). Для создания этой связи зацепите мышью одно из данных полей (например, поле «Ном» таблицы «Кассеты») и перетащите его на другое поле («НомКас» таблицы «Фильмы»);
•в появившемся окне «Связи» («Изменение связей» в Access 2000/XP) уста-
новите флажок «Обеспечение целостности данных» и нажмите кнопку [Создать].
Созданная связь будет изображаться в окне схемы данных в виде линии с метками на концах (рядом с полем «Ном» таблицы «Кассеты» указывается цифра «1», а рядом с полем «НомКас» таблицы «Фильмы» — знак бесконечности «∞»). Наличие этих двух меток означает, что данная связь имеет тип «Один ко многим»: с одной («1») записью из таблицы «Кассеты» можно связать
много («∞») записей из таблицы «Фильмы» (иными словами, на одну кассету можно записать несколько фильмов).
lФлажок «Обеспечение целостности данных» позволяет избежать ошибочных ситуаций при вводе данных в связанные таблицы. Так, при попытке ввести в поле «НомКас» номер, отсутствующий в таблице «Кассеты» (то есть при попытке связать фильм с несуществующей кассетой), будет выдано сообщение об ошибке. Заметим, что установить связь с обеспечением целостности данных можно только между полями одного и того же типа и размера (в нашем случае оба поля связи имеют тип «Числовой» и размер «Длинное целое»).
lДля удаления связи между таблицами следует щелкнуть мышью на линии, изображающей данную связь (при этом толщина линии увеличится), нажать клавишу [Del] и подтвердить удаление в диалоговом окне, выбрав в нем вариант [Да].
lДля повторного отображения окна «Связи», в котором настраиваются свойства связи между таблицами, надо выполнить двойной щелчок мышью на линии, изображающей данную связь.
Сохраните схему данных одним из действий, описанных в 1.5, и закройте окно схемы данных.
Заполните таблицу «Кассеты», используя таблицу 4 приложения, после чего заполните поле «НомКас» в существующих записях таблицы «Фильмы».
l Порядок заполнения таблиц является существенным: наличие контроля за целостностью данных (см. первое примечание к 5.1) приводит к тому, что в поле «НомКас» таблицы «Фильмы» можно вводить только номера существующих кассет (то есть кассет, информация о которых хранится в таблице «Кассеты»).

156 |
Часть III. Работа с базами данных: Microsoft Access |
A5–2. В существующей базе данных «Видео» разработать на основе связанных таблиц «Фильмы» и «Кассеты» (см. упражнение A5–1) составную форму «Кассеты и фильмы» и отформатировать ее по образцу.
Решение
Ввод данных в связанные таблицы удобно выполнять с помощью особой составной формы, состоящей из двух форм: основной и подчиненной.
Создайте новую простую форму на основе таблицы «Кассеты» (см. 2.20); эта форма будет играть роль основной формы. В созданной форме настройте подписи к полям и расположите поля в одну линию, как указано в образце; поле «Фирма» преобразуйте в поле со списком значений Sony;RAKS;TDK;Konica (см. 2.7–2.9); поле «Ном» отцентрируйте (см. 2.11) и отключите к нему доступ, не меняя его внешнего вида (см. прием 2.10 и примечание к нему). Измените заголовок формы на Кассеты и фильмы (см. 2.18) и сохраните форму под этим же именем (см. 1.5).
5.2. ВКЛЮЧЕНИЕ В ОСНОВНУЮ ФОРМУ ПОДЧИНЕННОЙ ФОРМЫ С ПОМОЩЬЮ
ПЕРЕТАСКИВАНИЯ: увеличьте высоту области данных основной формы (см. 2.17) и расположите на экране без наложений два окна: окно конструктора с основной формой «Кассеты и фильмы» и окно базы данных (проще всего это сделать командой «Окно | Слева направо»). В окне базы данных перейдите к группе объектов «Формы». Зацепите мышью значок формы «Фильмы (ленточная форма)» в окне базы данных и перетащите этот значок на свободное место в нижней части раздела «Область данных» макета формы «Кассеты и фильмы». В результате в область данных основной формы «Кассеты и фильмы» будет вставлен новый элемент — подчиненная форма. Измените заголовок элемента – подчиненной формы на Фильмы и настройте шрифт заголовка по образцу (см. 2.11).
Перейдите в стандартный режим формы и убедитесь, что в подчиненной форме отображаются те записи из таблицы «Фильмы», которые связаны с текущей записью из таблицы «Кассеты». Настройте размеры подчиненной и основной формы по образцу (см. рис.) и сохраните откорректированную основную форму.
l Связь между основной и подчиненной формой устанавливается с помощью свойств подчиненной формы «Объект-источник», «Подчиненные поля» и «Основные поля» на вкладке «Данные» (в свойстве «Основные поля» указывается поле связи из основной формы, в свойстве «Подчиненные поля» указывается поле связи из подчи-

157
ненной формы). При описанном выше перетаскивании эти поля определяются автоматически на основе информации о связях между таблицами «Кассеты» и «Фильмы».
lВ качестве подчиненной была выбрана ранее созданная форма «Фильмы (ленточная форма)» (см. упражнение A2–1), которую можно использовать и как самостоятельную форму базы данных. Чаще подчиненную форму разрабатывают специально для включения в некоторую составную форму.
lСоставная форма содержит два набора кнопок: один — для перемещения по записям в основной форме (то есть по кассетам), другой — для перемещения по записям в подчиненной форме (то есть по фильмам, записанным на текущей кассете). Для того чтобы с помощью клавиатуры перейти из подчиненной формы в основную, надо использовать комбинации [Ctrl]+[Tab] (переход к следующей записи в основной форме) и [Ctrl]+[Shift]+[Tab] (переход к текущей записи в основной форме).
lСоставную форму можно использовать для добавления записей как в таблицу «Кассеты», так и в таблицу «Фильмы», причем добавлять новые фильмы можно только в одну из имеющихся кассет, и при этом добавлении номер кассеты автоматически записывается в поле «НомКас» добавляемого фильма.
X Добавьте в базу данных «Видео» с помощью формы «Кассеты и фильмы» новую кассету «Sony 180» (номер 9) и введите в нее данные о двух фильмах:
Меч в камне |
США |
Мультфильм |
75 |
25.04.00 |
Аладдин |
США |
Мультфильм |
75 |
17.05.00 |
Завершив ввод данных, вызовите таблицу «Фильмы» и убедитесь, что введенные записи содержат в поле «НомКас» значение «9» (то есть номер новой кассеты).
A5–3. В существующей базе данных «Видео» разработать на основе связанных таблиц «Фильмы» и «Кассеты» (см. упражнение A5–1) составной отчет «Кассеты и фильмы» и отформатировать его по образцу.
. . . . . . . . . . . . .

158 |
Часть III. Работа с базами данных: Microsoft Access |
Решение
Создайте новый простой отчет на основе таблицы «Кассеты» (см. первое примечание к 4.1); этот отчет будет играть роль основного отчета. В созданном отчете отформатируйте подписи к полям и расположите поля в одну линию, как указано в образце; поля «Ном» и «Длит» отцентрируйте. Откорректируйте нижний колонтитул по образцу (см. 4.9), измените заголовок отчета на Кассеты и фильмы и сохраните отчет под этим же именем (см. 5.1).
В качестве заготовки для подчиненного отчета удобно использовать имеющийся отчет «Фильмы (названия)» (см. упражнение A4–1), сохранив его под новым именем. Для этого выполните следующие действия.
5.3.СОХРАНЕНИЕ ОТЧЕТА ПОД НОВЫМ ИМЕНЕМ: в окне базы данных перейдите
кгруппе объектов «Отчеты», выделите отчет «Фильмы (названия)», «Файл | Сохранить как/экспорт...» («Файл | Сохранить как...» в Access 2000/XP), в появившемся диалоговом окне введите новое имя Фильмы (подчиненный отчет) (в Access 97, кроме того, выберите вариант «В текущей базе данных») и нажмите [OK].
5.4.УДАЛЕНИЕ РАЗДЕЛОВ ЗАГОЛОВКОВ, ПРИМЕЧАНИЙ И КОЛОНТИТУЛОВ В
ПОДЧИНЕННОМ ОТЧЕТЕ: перейдите в режим конструктора для отчета «Фильмы (подчиненный отчет)», снимите флажок рядом с командой меню «Вид | Заголовок/примечание отчета», в появившемся окне подтвердите удаление данных разделов, нажав кнопку [Да]; затем снимите флажок рядом с командой меню «Вид | Колонтитулы», в появившемся окне подтвердите удаление колонтитулов, нажав кнопку [Да].
l В подчиненных отчетах колонтитулы не используются. Области заголовка и примечаний использовать допустимо, но не рекомендуется, так как это перегружает составной отчет повторяющимися надписями.
Сохраните откорректированный отчет «Фильмы (подчиненный отчет)» (см. 1.5) и закройте его (см. 4.10).
5.5. ВКЛЮЧЕНИЕ В ПОДЧИНЕННЫЙ ОТЧЕТ ПОЛЯ СВЯЗИ: откройте в режиме кон-
структора запрос «Фильмы (названия)», на котором основан отчет «Фильмы (подчиненный отчет)», и поместите на бланк запроса еще одно поле: «НомКас» (см. 3.2). После этого сохраните измененный запрос (см. 1.5) и закройте его
(см. 1.16).
l Поле «НомКас» не используется при отображении подчиненного отчета, но оно необходимо для установления связи между основным и подчиненным отчетом.
5.6. ВКЛЮЧЕНИЕ В ОСНОВНОЙ ОТЧЕТ ПОДЧИНЕННОГО ОТЧЕТА С ПОМОЩЬЮ
ПАНЕЛИ ЭЛЕМЕНТОВ: откройте основной отчет «Кассеты и фильмы» в режиме конструктора (см. первое примечание к 1.15) и отобразите на экране вспомогательное окно «Панель элементов», выполнив команду «Вид | Панель элементов» или нажав
кнопку . Отожмите (то есть переведите в ненажатое состояние) кнопку
на этой панели. Увеличьте высоту раздела «Область данных» в макете отчета,

159
нажмите на панели элементов кнопку и щелкните мышью в нижней части раздела «Область данных». В результате в отчет будет вставлен элемент типа «Подчиненный отчет», однако пока этот элемент не будет связан с каким-либо из имеющихся в базе данных отчетов. Измените связанный с подчиненным отчетом элемент-надпись на Фильмы (элемент-надпись расположен выше рамки подчиненного отчета).
l Упростить вставку в форму или отчет сложных элементов может мастер вставки (если он был инсталлирован в процессе установки программы Access). Для акти-
визации мастера при вставке элемента необходимо, чтобы кнопка на панели элементов была «вдавленной» (нажатой); в этом случае в момент вставки элемента в форму/отчет на экране появляется окно, позволяющее в диалоговом режиме установить основные свойства добавляемого элемента. Кроме того, существуют дополнительные приемы, упрощающие настройку добавляемого элемента; с одним из них — вставкой подчиненной формы/отчета с помощью перетаскивания из окна базы данных — мы познакомились при разработке составной формы (см. 5.2).
5.7. НАСТРОЙКА СВОЙСТВ ПОДЧИНЕННОГО ОТЧЕТА: вызовите окно свойств
подчиненного отчета (см. 2.8), перейдите на вкладку «Данные» и определите свойство «Объект-источник», выбрав из выпадающего списка вариант «Отчет.Фильмы (подчиненный отчет)». В свойство «Подчиненные поля» введите НомКас, в свойство «Основные поля» введите Ном. Закройте окно свойств.
Перейдите в режим предварительного просмотра и убедитесь, что теперь в полученном отчете после данных о каждой кассете выводятся данные о записанных на ней фильмах.
Настройте ширину подчиненного отчета так, чтобы она оказалась достаточной для отображения всех его столбцов, и откорректируйте высоту области данных основного отчета.
Повторно сохраните откорректированный отчет «Кассеты и фильмы» и закройте базу данных (см. 1.17).
A5–4. Дополнить существующую базу данных «Магазин» (см. упражнение A1–3), создав новые таблицы «Товары» и «Продажи» (см. таблицы 5 и 6 в приложении). Связать таблицы «Клиенты» и «Продажи» с помощью полей «Ном» (таблица «Клиенты») и «НомКли» (таблица «Продажи»), а таблицы «Товары» и «Продажи» — с помощью полей «Ном» (таблица «Товары») и «НомТов» (таблица «Продажи»). Заполнить таблицы «Товары» и «Продажи» данными, указанными в таблицах 5 и 6 приложения. Для заполнения таблицы «Товары» разработать ленточную форму «Товары» по образцу.

160 |
Часть III. Работа с базами данных: Microsoft Access |
Указание
После установления связей между таблицами (см. 5.1) схема данных должна выглядеть следующим образом:
l Необходимость во вспомогательной таблице «Продажи» возникает из-за того, что записи таблиц «Клиенты» и «Товары» находятся в отношении «Многие ко многим» (многие клиенты могут купить один и тот же товар, и многие товары могут быть куплены одним клиентом), — сравните с отношением типа «Один ко многим», для которого вводить вспомогательную таблицу не требуется: достаточно дополнить одну из таблиц полем, ссылающимся на запись из другой таблицы (см. упражнение A5–1). Заметим, что в таблице «Продажи» можно также хранить дополнительные сведения о каждой конкретной продаже (например, ее дату).
A5–5. В существующей базе данных «Магазин» разработать на основе связанных таблиц «Клиенты», «Товары» и «Продажи» (см. упражнение A5–4) составную форму «Клиенты и продажи», позволяющую вводить данные в таблицы «Клиенты» и «Продажи».