Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Inform2005

.pdf
Скачиваний:
73
Добавлен:
08.02.2015
Размер:
4.37 Mб
Скачать

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) составную форму «Клиенты и продажи», позволяющую вводить данные в таблицы «Клиенты» и «Продажи».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]