
- •Исмагилова к.К. Работа с базами данных
- •Общие положения.
- •Структура базы данных
- •Простейшие базы данных
- •Свойства полей. Типы полей
- •Связанные таблицы
- •Поля уникальные и ключевые
- •Субд access
- •Объекты access
- •Режимы работы с access
- •Особенности таблиц баз данных
- •Надежность и безопасность баз данных
- •Совместное использование данных
- •Приемы работы с таблицами баз данных
- •Создание связей между таблицами
- •Практическая работа с базами данных в программе microsoft access
- •1. Создание и заполнение таблиц баз данных
- •2. Формы
- •3. Запросы. Вычисляемые поля
- •3.1. Создание запроса:
- •4. Отчеты
- •4.11. Группировка данных в отчете:
- •5. Базы данных, содержащие несколько связанных таблиц. Составные формы и составные отчеты
- •5.1. Определение связей между таблицами:
- •6. Запросы на основе связанных таблиц. Группировка и перекрестные запросы. Запросы с параметрами
- •6.2. Настройка свойств полей с результатами группировки:
- •7. Макросы и автоматизация работы с базой данных
- •7.7. Настройка параметров запуска базы данных:
- •7.9. Определение элементов кнопочной формы:
- •7.10. Настройка макета кнопочной формы:
- •Приложение
- •Литература
6.2. Настройка свойств полей с результатами группировки:
вернитесь в режим конструктора и перейдите на поле «Ном» в бланке запроса;
«Вид | Свойства» или
.
в появившемся окне «Свойства поля» на вкладке «Общие» определите свойство «Подпись» следующим образом: Кол-во фильмов;
не закрывая окна свойств, щелкните мышью на поле «Длит» в бланке запроса; в результате в окне свойств отобразятся свойства данного поля. Введите в свойство «Подпись» текст Сумм. длит.;
закройте окно свойств, нажав кнопку
.
Выполните запрос и сохраните его под именем А6-1-1 (см. 1.5).
Запрос А6-1-2
Очистите бланк запроса (см. 3.13), поместите на него поля «Страна» и «Ном», установите сортировку поля «Ном» по убыванию.
Измените значение строки Группировка в поле «Ном» на Count. С помощью окна свойств определите значение свойства «Подпись» для поля «Ном»: Кол-во фильмов (см. 6.2).
Выполните запрос и сохраните его под новым именем А6-1-2 (см. 3.5).
Запрос А6-1-3
Очистите бланк запроса.
6.3. удаление таблицы из запроса: щелкните мышью на окне таблицы «Фильмы» в верхней части окна конструктора; «Запрос | Удалить таблицу».
Добавьте в запрос новую таблицу «Кассеты» (см. второе примечание к 3.1), поместите на бланк запроса ее поля «Ном» и «Длит».
Установите в строке «Групповая операция» для поля «Ном» вариант Count, а для поля «Длит» — вариант Sum. С помощью окна свойств определите свойство «Подпись» для полей запроса: «Ном» — Кол-во кассет, «Длит» — Сумм. длит. (см. 6.2).
Выполните созданный запрос и сохраните его под новым именем А6-1-3.
Поскольку в данном запросе ни по одному полю не проводится группировка, в результате будет получена таблица, состоящая из одной строки.
Запрос А6-1-4
Очистите бланк запроса.
В дополнение к имеющейся таблице «Кассеты» включите в запрос таблицу «Фильмы» (см. второе примечание к 3.1); при этом в окне конструктора запроса будут показаны не только окна таблиц, но и связи между ними.
Скройте строку «Групповая операция» на бланке запроса (см. второе примечание к 6.1).
Последовательно поместите на бланк запроса поля «Назв» и «ДатаЗап» из таблицы «Фильмы» и поля «Фирма» и «Длит» из таблицы «Кассеты»; установите сортировку поля «ДатаЗап» по возрастанию. Выполните созданный запрос и сохраните его под новым именем А6-1-4.
Благодаря имеющейся связи между таблицами «Фильмы» и «Кассеты», рядом с данными о каждом фильме будут указаны данные о той кассете, номер которой содержится в поле «НомКас» для этого фильма.
Запрос А6-1-5
Очистите бланк запроса.
Отобразите строку «Групповая операция» на бланке запроса (см. 6.1).
Последовательно поместите на бланк запроса поля «Ном», «Фирма» и «Длит» из таблицы «Кассеты» и поля «Ном» и «Длит» из таблицы «Фильмы»; установите сортировку поля «Ном» из . таблицы «Кассеты» по возрастанию.
Установите следующие значения в строке «Групповая операция»:
поля «Ном», «Фирма», «Длит» из таблицы «Кассеты»:Группировка;
поле «Ном» из таблицы «Фильмы»: Count;
поле «Длит» из таблицы «Фильмы»: Sum.
С помощью окна свойств определите свойство «Подпись» для полей из таблицы «Фильмы»: «Ном» — Кол-во фильмов, «Длит» — Сумм. длит. (см. 6.2).
Снимите флажок видимости с поля «Ном» (см. 3.11).
Поле «Ном» таблицы «Кассеты» должно присутствовать в запросе по двум причинам: во-первых, по нему проводится сортировка, во-вторых, по нему проводится группировка. Если удалить из запроса это поле, то при выполнении запроса будут объединены данные по однотипным кассетам (например, кассете типа «Sony-180» будет соответствовать единственная строка в таблице, и в этой строке будет указано суммарное число фильмов, записанных на всех кассетах этого типа).
Выполните созданный запрос и сохраните его под новым именем А6-1-5.
Запрос А6-1-6
Очистите бланк запроса.
6.4. Изменение типа запроса на «перекрестный
запрос»: «Запрос | Перекрестный» или
разверните выпадающий список кнопок
и выберите вариант
(«Перекрестный»). В результате в бланке
запроса появится новая строка «Перекрестная
таблица»; кроме того, будет заблокирована
возможность отключения строки «Групповая
операция».
Для возврата к стандартному типу запроса «Выборка» следует выполнить команду «Запрос | Выборка» или выбрать вариант «Выборка» в списке кнопок.
Поместите на бланк запроса поля «Ном», «Фирма» и «Длит» из таблицы «Кассеты» и поля «Ном» и «Страна» из таблицы «Фильмы».
6.5. настройка элементов перекрестного запроса: установите следующие значения в строке «Перекрестная таблица»:
поля «Ном», «Фирма», «Длит» из таблицы «Кассеты»:Заголовки строк;
поле «Страна» из таблицы «Фильмы»: Заголовки столбцов;
поле «Ном» из таблицы «Фильмы»: Значение.
При создании перекрестного (табличного) запроса требуется указать одно или несколько полей для строк результирующей таблицы, одно поле для ее столбцов и одно поле для ее значений (находящихся на пересечении строк и столбцов результирующей таблицы).
В поле «Ном» таблицы «Фильмы» установите в строке «Групповая операция» вариант Count, для остальных полей оставьте прежнее значение: Группировка.
Выполните созданный запрос и сохраните его под новым именем А6-1-6.
В Access 2000/XP возможна ситуация, когда при выполнении запроса вместо названий стран в заголовках столбцов будет указан одинаковый текст «Кол-во фильмов». В этом случае вернитесь в режим конструктора, вызовите окно свойств поля «Ном», удалите текст «Кол-во фильмов» из свойства «Подпись», после чего сохраните запрос и закройте его. После повторного открытия запроса в заголовках столбцов появятся названия стран.
Запрос А6-1-7
Разработайте самостоятельно по аналогии с запросом А6-1-6.
А6-2. В существующей базе данных «Спорт» (см. упражнение А1-2) с помощью соответствующих запросов вывести следующие данные:
1) список всех стран с указанием среднего количества баллов, набранных спортсменами каждой страны на каждом снаряде. Список отсортировать в порядке убывания среднего количества баллов за упражнение на перекладине;
2) список всех стран с указанием количества спортсменов для каждой страны, отсортированный в порядке убывания количества спортсменов.
Указания к запросу А6-2-1
После включения режима группировки (см. 6.1) в поле «Страна» оставьте значение строки «Групповая операция» прежним (то есть равным Группировка), а в остальных полях («Перекл», «Кольца» и «Конь») измените значение строки «Групповая операция» на Avg (так обозначается вычисление среднего значения).
При выполнении запроса некоторые средние значения будут выводиться с большим числом знаков после запятой. Для того чтобы ограничиться выводом трех знаков после запятой, установите для полей «Перекл», «Кольца» и «Конь» свойство «Формат» равным 0,000 (см. 3.15 и 6.2).
А6-3. В существующей базе данных «Магазин» (см. упражнения Al-3, A5-4) с помощью соответствующих запросов вывести следующие данные:
1) количество клиентов, имеющих и не имеющих скидку;
2) таблицу со столбцами «АТС» и «Кол-во клиентов», содержащую список АТС и количество клиентов, имеющих телефонные номера от этих АТС (номер АТС определяется по первым двум цифрам телефонного номера);
3) таблицу со столбцами «Месяц» и «Кол-во клиентов»,позволяющую определить количество клиентов, родившихсяв каждом месяце;
4) список проданных товаров с указанием их наименования, фирмы, цены, фамилии покупателя, информации о наличии у него скидки и размера его оплаты за покупку (клиент без скидки оплачивает всю стоимость, клиент со скидкой оплачивает 90% стоимости). Отсортировать список по наименованиям товаров, а для одинаковых наименований — по названиям фирм;
5) список всех клиентов с указанием их фамилии, информации о наличии скидки, количества купленных товаров, суммарной стоимости покупок и суммарного размера оплаты (клиент без скидки оплачивает всю стоимость, клиент со скидкой оплачивает 90% стоимости). Отсортировать список по фамилиям клиентов;
6) список всех фирм-производителей с указанием количества проданных изделий каждой фирмы и их суммарной стоимости. Отсортировать список по названиям фирм;
7) таблицу, столбцы которой соответствуют различным видам товаров (поле «Наим» таблицы «Товары»), строки —различным клиентам (поле «ФИО» таблицы «Клиенты»), а на пересечении строк и столбцов указывается количество товаров данного вида, приобретенных данным клиентом;
8) таблицу, столбцы которой соответствуют различным фирмам-производителям (поле «Фирма»), строки — различным видам товаров (поле «Наим»), а на пересечении строк и столбцов указывается цена товара данного вида, произведенного данной фирмой.
Указания
Запрос А6-3-1
Разработайте данный запрос на основе таблицы «Клиенты», выполнив группировку по полю «Скидка» и применив к полю «Ном» группирующую операцию Count (см. 6.1). Заголовок поля «Ном» измените на следующий: Кол-во клиентов (см. 6.2).
Запрос А6-3-2
Данный запрос создайте на основе таблицы «Клиенты».
6.6. Извлечение подстрок из текстовых полей: в первый столбец бланка запроса поместите вычисляемое поле (см. 3.14),определив его в строке «Поле» следующим образом: АТС:Left([Тел];2). Данное выражение означает, что вычисляемое поле имеет имя «АТС» и содержит два первых символа поля«Тел» (эти символы определяют номер АТС).
Функция Left(S;N) возвращает N первых (то есть левых) символов строки S. Имеется также функция Right(S;N), возвращающая N последних (то есть правых) символов строки S, и функция Mid(S;K;N), возвращающая N символов строки S, начиная с символа номер К.
6.7.Отбор непустых данных: в строку «Условие отбора» поля«АТС» введите условие is Not Null (благодаря этому условию, в итоговой таблице не будут учитываться клиенты, не имеющие телефона — ср. с реализацией запроса АЗ-7-3).
Используйте режим группировки (см. 6.1), установив для поля «Ном» группирующую операцию Count.
Запрос А6-3-3
Разработайте данный запрос на основе таблицы «Клиенты», используя группировку по вычисляемому полю «Месяц» (см. 3.14), содержащему номер месяца из даты рождения клиента. Поле «Месяц» можно определить следующим образом: Месяц: Month([ДатаР])
Запросы А6-3-4 - А6-3-5
Запросы создайте на основе связанных таблиц «Клиенты», «Товары» и «Продажи».
6.8. использование условной функции IIF: последнее поле этих запросов, связанное с оплатой покупок (со скидкой или без скидки), является вычисляемым (см. 3.14); оно должно быть определено в строке «Поле» следующим образом: Оплата:iif([Скидка];[Цена]*0,9;[Цена])
При определении поля «Оплата» была использована функция iif с тремя аргументами: первый аргумент представляет собой логическое выражение (принимающее значение «Да» или «Нет»); если это выражение имеет значение «Да» (в нашем случае — если клиент имеет скидку), то функция возвращает значение своего второго аргумента (в нашем случае — цену товара, умноженную на 0,9); если же логическое выражение имеет значение «Нет», то функция возвращает значение своего третьего аргумента (в нашем случае — полную цену товара).
Объединение данных о товарах и купивших их клиентах обеспечивается, благодаря имеющейся связи между таблицами «Клиенты» и «Товары» (посредством вспомогательной таблицы «Продажи»).
Запросы А6-3-7 - А6-3-8
Используйте режим перекрестного запроса (см. 6.4—6.5).
А6-4. В существующей базе данных «Видео» (см. упражнения Al-1, A5-1) разработать запрос «Отбор по жанрам», в котором запрашивается жанр фильма, после чего выводится список названий фильмов этого жанра (поле «Назв» таблицы «Фильмы») с указанием кассет, на которых эти фильмы записаны (поля «Фирма» и «Длит» таблицы «Кассеты»). Список сортируется по названиям фильмов.
Решение
Откройте базу данных «Видео» (см. 2.1).
Создайте новый запрос, включив в него связанные таблицы «Фильмы» и «Кассеты» (см. 3.1); поместите на бланк запроса поле «Назв» из таблицы «Фильмы» и поля «Фирма» и «Длит» из таблицы «Кассеты» (см. 3.2). Установите сортировку поля «Назв» по возрастанию (см. 3.3).
6.9. определение параметра запроса: поместите на бланк запроса поле «Жанр» из таблицы «Фильмы», снимите в этом поле флажок видимости (см. 3.11) и введите следующий текст в строку «Условие отбора»: =[Жанр фильма:]
Теперь при выполнении запроса вначале возникает диалоговое окно «Введите значение параметра», в котором запрашивается жанр фильма (название жанра требуется набрать в поле ввода, после чего нажать [ОК]). После указания жанра формируется таблица, содержащая все фильмы этого жанра. Сохраните запрос под именем Отбор по жанрам (см. 1.5).
Обратите внимание на то, что параметр указывается в условии отбора в квадратных скобках (как и поля таблицы). Если текст в квадратных скобках совпадает с именем некоторого поля, то на его место подставляется значение этого поля; в противном случае (когда полей с таким именем нет) текст считается параметром запроса, и для определения его значения используется диалоговое окно, появляющееся в начале выполнения запроса.
А6-5. В существующей базе данных «Спорт» (см. упражнение А1-2) разработать запрос «Отбор по баллам», в котором запрашивается количество баллов, после чего выводится список спортсменов, имеющих в упражнении на перекладине указанное или большее количество баллов (выводятся поля «Фам», «Страна», «Перекл»). Список сортируется по полю «Фам».
Указание
Используйте параметр [Количество баллов:] (см. 6.9) в условии отбора для поля «Перекл».
А6-6. В существующей базе данных «Магазин» (см. упражнения Al-3, A5-4) разработать запрос «Отбор по фирмам», в котором запрашивается имя фирмы-производителя, после чего выводится список клиентов, купивших товары данной фирмы (выводится поле «ФИО» таблицы «Клиенты» и поля «Наим» и «Цена» таблицы «Товары»). Список сортируется по фамилиям клиентов.
Указание
Используйте параметр [Фирма-производитель:] (см. 6.9) в условии отбора для неотображаемого поля «Фирма» из таблицы «Товары».