
- •Исмагилова к.К. Работа с базами данных
- •Общие положения.
- •Структура базы данных
- •Простейшие базы данных
- •Свойства полей. Типы полей
- •Связанные таблицы
- •Поля уникальные и ключевые
- •Субд 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. Настройка макета кнопочной формы:
- •Приложение
- •Литература
3. Запросы. Вычисляемые поля
Если в упражнении имя запроса не указано, то следует использовать составное имя, включающее название упражнения и порядковый номер запроса, например: АЗ-2-1 — запрос номер 1 из упражнения АЗ-2.
АЗ-1. В существующей базе данных «Видео» (см. упражнение А1-1) определить на основе таблицы «Фильмы» следующие запросы:
1) «Фильмы (названия)» — содержит все поля таблицы, кроме поля «Ном», записи отсортированы по названиям фильмов (в алфавитном порядке);
2) «Фильмы (жанры)» — содержит поля «Жанр», «Страна», «Название», записи отсортированы по жанрам, в пределах одного жанра — по странам, а в пределах одной страны — по названиям фильмов (в алфавитном порядке).
Решение
Откройте существующую базу данных «Видео» (см. 2.1).
3.1. Создание запроса:
в окне базы данных перейдите к группе объектов «Запросы», [Создать];
в появившемся диалоговом окне «Новый запрос» выберите вариант «Конструктор», [ОК];
в появившемся окне «Добавление таблицы» выделите на вкладке «Таблицы» элемент «Фильмы», [Добавить],[Закрыть].
На экране появится окно конструктора запросов с загруженной таблицей «Фильмы» (загруженные таблицы отображаются в верхней части окна конструктора запросов в виде небольших окон).
Здесь рассматриваются не все возможные виды запросов программы Access, а лишь наиболее часто используемые запросы на выборку (а также перекрестные запросы — см. п. 6). Они позволяют извлечь из таблиц базы данных информацию, которая интересует разработчика запроса, и отобразить эту информацию в стандартном «табличном» виде. Запросы на выборку можно рассматривать как вспомогательные таблицы базы данных, которые не хранятся постоянно в файле базы данных, а создаются только на время выполнения запроса (см. 3.4).
Добавить в запрос новую таблицу можно и после перехода в режим конструктора запросов: для этого достаточно выполнить команду «Запрос | Добавить таблицу...» («Запрос | Отобразить таблицу...» в Access XP) или нажать кнопку
.
3.2. Определение полей запроса: зацепите мышью поле «Назв»в окне «Фильмы» и перетащите его на первый столбец бланка запроса — таблицы в нижней части окна конструктора запросов. Аналогичными действиями поместите в следующие столбцы бланка запроса поля «Страна», «Жанр», «Длит», «ДатаЗап».
Для того чтобы за одно перетаскивание скопировать нужные поля, следует предварительно выделить в окне «Фильмы» эти поля (щелкая на них мышью при нажатой клавише [Ctrl]). Для включения в бланк запроса всех полей достаточно перетащить на бланк символ «*» (расположенный в начале списка полей). Включать поля в бланк запроса можно также, выбирая их из выпадающих списков в первой строке бланка запроса.
Можно настраивать ширину столбцов бланка запроса; для этого достаточно зацепить мышью за разделительную линию между столбцами (рядом с верхней рамкой) и перетащить ее на новое место.
3.3. Сортировка записей по нужному полю: в первом столбце бланка запроса (соответствующем полю «Назв») перейдите на строку «Сортировка» и выберите из выпадающего списка вариант «По возрастанию».
3.4. Запуск запроса на выполнение:
«Запрос | Запуск» или
(можно также нажать
,
то есть перевести запрос в режим таблицы).
В результате на экране появится таблица, столбцы которой соответствуют полям запроса (и располагаются в том же порядке), а строки являются записями, отсортированными требуемым образом.
Для возврата в режим конструктора
запросов надо выполнить команду «Вид
| Конструктор» или нажать
.
Сохраните созданный запрос под именем Фильмы (названия) — см. 1.5.
Для создания нового запроса можно повторить описанные выше действия (см. 3.1-3.2). Однако быстрее воспользоваться в качестве заготовки уже имеющимся запросом, сохранив его под новым именем.
3.5. Сохранение запроса под новым именем: «Файл | Сохранить как/экспорт...» («Файл | Сохранить как...» в Access 2000/XP),в появившемся окне укажите новое имя Фильмы (жанры), [ОК].
3.6. Удаление поля из бланка запроса: вернитесь в режимконструктора, в бланке запроса выделите столбец с полем«Длит», щелкнув мышью на его верхней рамке (курсор мыши на этой рамке примет вид стрелки, направленной вниз),и нажмите клавишу [Del]. Аналогичными действиями удалите поле «ДатаЗап».
3.7. Изменение порядка следования полей: выделите столбец «Назв» (щелкнув на его верхней рамке) и перетащите его мышью на позицию после столбца «Жанр»; затем выделите столбец «Страна» и перетащите его на позицию между столбцами «Жанр» и «Назв».
3.8. Сортировка по нескольким полям: в столбцах «Жанр» и«Страна» установите значение строки «Сортировка» равным«По возрастанию», в столбце «Назв» оставьте вариант сортировки «По возрастанию».
Порядок сортировки определяется порядком следования полей в бланке запроса. Так, если бы первым следовало поле «Страна», а за ним — «Жанр», то записи сортировались бы по странам, а в пределах каждой страны — по жанрам.
Выполните созданный запрос (см. 3.4) и повторно сохраните его.
Закройте базу данных (см. 1.17).
АЗ-2. В существующей базе данных «Видео» (см. упражнение А1-1) с помощью соответствующих запросов вывести следующие данные:
список из 5 последних записанных фильмов, включающий поля «Назв» и «ДатаЗап», отсортированный по убыванию даты записи;
список всех комедий, включающий поля «Назв» и «Страна», отсортированный по названиям;
список всех полнометражных мультфильмов (длительностью не менее 60 мин.), включающий поля «Назв», «Страна» и «Длит», отсортированный по названиям;
список всех российских фильмов, записанных в 1998 г.,включающий поля «Назв», «Жанр», «ДатаЗап», отсортированный по возрастанию даты записи.
Решение
Откройте базу данных «Видео» (см. 2.1).
запрос АЗ-2-1
Создайте новый запрос, включив в него таблицу «Фильмы» (см. 3.1); поместите на бланк запроса поля «Назв» и «ДатаЗап» (см. 3.2), установите сортировку поля «ДатаЗап» по убыванию (см. 3.3).
3.9.установка ограничения на число выводимых записей: ввыпадающем списке «Набор значений» (на панели инструментов) выберите вариант «5».
Выполните созданный запрос (см. 3.4) и сохраните его под именем АЗ-2-1 (см. 1.5).
Запрос АЗ-2-2
Откорректируйте предыдущий запрос, удалив из бланка поле «ДатаЗап» (см. 3.6) и добавив поля «Страна» и «Жанр». Установите сортировку поля «Назв» по возрастанию. В выпадающем списке «Набор значений» на панели инструментов выберите вариант «Все».
3.10. Задание простого условия отбора типа равенства: в строку «Условие отбора» поля «Жанр» введите текст =Комедия, [Enter] (после нажатия [Enter] введенный текст автоматически преобразуется в следующий: ="Комедия", поскольку в выражениях, входящих в условия отбора, текстовые строки должны заключаться в кавычки).
3.11. Скрытие поля в запросе: в поле «Жанр» снимите флажок «Вывод на экран». Отметим, что удалять данное поле из бланка нельзя, так как оно используется при отборе нужных записей (а именно, всех комедий).
Выполните созданный запрос и сохраните его под новым именем АЗ-2-2 (см. 3.5).
Запрос АЗ-2-3
Добавьте в бланк запроса поле «Длит».
3.12. Задание составного условия отбора: в строку «Условие отбора» для поля «Длит» введите строку >=60; замените условие отбора для поля «Жанр» на следующее: =Мультфильм.
Выполните созданный запрос и сохраните его под новым именем АЗ-2-3.
Запрос АЗ-2-4
3.13.Очистка бланка запроса: «Правка | Очистить бланк».
Поместите на бланк запроса поля «Назв», «Жанр», «ДатаЗап», «Страна», установите сортировку поля «ДатаЗап» по возрастанию, скройте поле «Страна» (см. 3.11).
Задайте следующее составное условие отбора: =Россия (для поля «Страна»); >=1.1.98 and <=31.12.98 (для поля «ДатаЗап»). После нажатия [Enter] последнее условие примет вид >=#01.01.98# And <=#31.12.98#, поскольку в выражениях, входящих в условия отбора, значения типа «Дата/время» выделяются с помощью символов #.
Вместо двойного неравенства для даты можно было бы использовать функцию Year, позволяющую извлечь значение года из даты, указанной в качестве аргумента: Yеаг([ДатаЗап])=1998 (обратите внимание на то, что имя поля в выражениях заключается в квадратные скобки). Выполните созданный запрос и сохраните его под новым именем АЗ-2-4.
Закройте базу данных «Видео» (см. 1.17).
АЗ-3. В существующей базе данных «Спорт» (см. упражнение А1-2) определить на основе таблицы «Гимнастика» запрос «Гимнастика (страны)», содержащий все поля таблицы, кроме поля «Ном». Порядок полей следующий: «Страна», «Фам», «Перекл», «Кольца», «Конь». Записи в запросе должны быть отсортированы по полю «Страна» (в алфавитном порядке), а в пределах каждой страны — по убыванию числа баллов за упражнение на перекладине.
АЗ-4. В существующей базе данных «Спорт» (см. упражнение А1-2) с помощью соответствующих запросов вывести следующие данные:
1) список всех спортсменов, включающий поля «Фам»,«Страна» и дополнительное вычисляемое поле «Среднее» (равное среднему значению баллов, полученных спортсменом за каждое упражнение). Список отсортировать по убыванию поля«Среднее»;
2) список всех американских и французских спортсменов, включающий поля «Страна» и «Фам» и отсортированный в алфавитном порядке по странам, а в пределах каждой страны — по фамилиям;
3) список всех спортсменов, у которых результат на перекладине лучше, чем результат на кольцах. Список должен включать поля «Фам», «Перекл» и «Кольца». Отсортировать список по убыванию результата на перекладине.
Решение
Откройте базу данных «Спорт» (см. 2.1).
Запрос АЗ-4-1
Создайте новый запрос, включив в него таблицу «Гимнастика» (см. 3.1), и поместите на бланк запроса поля «Фам» и «Страна» (см. 3.2).
3.14. Определение вычисляемого поля в запросе: перейдите на третий столбец бланка запроса (этот столбец пока является пустым), введите в строку «Поле» следующий текст: Среднее: (Перекл+Конь+Кольца)/3 и нажмите [Enter].
После нажатия [Enter] имена всех полей будут заключены в квадратные скобки: Среднее: ([Перекл]+[Конь]+[Кольца])/3. Таким образом, для определения вычисляемого поля (то есть поля, определяемого на основе других полей таблицы) в строку «Поле» бланка запроса надо ввести имя вычисляемого поля, двоеточие и формулу, по которой данное поле вычисляется.
Для того чтобы введенная формула целиком отображалась на экране, увеличьте ширину соответствующего столбца бланка запроса (см. второе примечание к 3.2).
Установите сортировку вычисляемого поля «Среднее» по убыванию (см. 3.3).
3.15. Настройка свойств вычисляемого
поля: оставаясь в столбце «Среднее»,
выполните команду «Вид | Свойства» или
нажмите кнопку
;
в появившемся окне «Свойства поля» на
вкладке «Общие» определите свойство
«Формат поля» следующим образом: 0,000
(ср. с 1.20), после чего закройте окно
свойств.
Выполните созданный запрос и сохраните его под именем АЗ-4-1.
Запрос АЗ-4-2
Очистите бланк запроса (см. 3.13) и поместите на него поля «Страна» и «Фам». Установите сортировку обоих полей по возрастанию.
3.16. Задание нескольких условий отбора для одного поля: для поля «Страна» в строке «Условие отбора» укажите =США, в строке «Или» (расположенной ниже строки «Условие отбора») укажите =Франция.
Требуемые условия отбора можно объединить в одной строке, используя логическую операцию Or — «логическое ИЛИ»: =США Ог =Франция.
Выполните созданный запрос и сохраните его под новым именем АЗ-4-2 (см. 3.5).
Запрос АЗ-4-3
Очистите бланк запроса и поместите на него поля «Фам», «Перекл» и «Кольца». Установите сортировку поля «Перекл» по убыванию.
В строку «Условие отбора» для поля «Перекл» введите строку >[Кольца].
Требуемый запрос можно также получить, поместив в условие отбора для поля «Кольца» текст <[Перекл]. Обратите внимание на то, что в подобных условиях имена полей надо обязательно заключать в квадратные скобки.
Выполните созданный запрос и сохраните его под новым именем АЗ-4-3.
Закройте базу данных «Спорт» (см. 1.17).
АЗ-5. В существующей базе данных «Спорт» (см. упражнение А1-2) с помощью соответствующих запросов вывести следующие данные
1) список из 3 призеров в упражнении на перекладине,включающий поля «Фам», «Страна» и «Перекл» и отсортированный по убыванию баллов, полученных за это упражнение;
2) список всех спортсменов, у которых суммарное количество баллов за все снаряды превышает 28. Список долженвключать поля «Фам», «Страна» и дополнительное вычисляемое поле «Сумма» (равное сумме баллов, полученных спортсменом за каждое упражнение). Список отсортировать по убыванию поля «Сумма»;
3) список спортсменов, набравших хотя бы в одном упражнении менее 9 баллов. Список должен включать поля«Фам», «Страна», «Перекл», «Кольца» и «Конь» и быть отсортированным по полю «Фам»;
4) список всех американских спортсменов, у которых результат на перекладине лучше, чем результат на коне. Список должен включать поля «Фам», «Перекл» и «Конь». Отсортировать список по убыванию результата на перекладине;
5) список всех российских и американских спортсменов,у которых число баллов за упражнение на кольцах не превосходит 9,5. Список должен включать поля «Фам», «Страна» и«Кольца». Отсортировать список по убыванию результата накольцах.
Указания
запрос АЗ-5-1
Поскольку в выпадающем списке «Набор значений» (см. 3.9) вариант «3» отсутствует, его следует ввести с клавиатуры в поле списка.
запрос АЗ-5-3
Воспользуйтесь логической операцией Or, поместив, например, в поле «Перекл» следующее условие: <9 Ог [Кольца]<9 Or [Конь]<9 (в данном условии, как и в условии из запроса АЗ-4-3, имена полей надо заключать в квадратные скобки).
АЗ-6. В существующей базе данных «Магазин» (см. упражнение А1-3) определить на основе таблицы «Клиенты» следующие запросы:
1) «Клиенты (ФИО)» — содержит все поля таблицы, кроме поля «Ном», записи отсортированы по фамилиям клиентов(в алфавитном порядке);
2) «Клиенты (скидка)» — содержит поля «ФИО», «Скидка», «ДатаР»; вначале перечисляются клиенты со скидкой, затем — клиенты без скидки. И клиенты со скидкой, и клиенты без скидки сортируются по возрастанию даты рождения.
АЗ-7. В существующей базе данных «Магазин» (см. упражнение А1-3) с помощью соответствующих запросов вывести следующие данные:
1) список клиентов, живущих на проспекте Октября. Список должен включать поля «ФИО», «Адрес» и «Тел» и быть отсортированным по фамилиям клиентов;
2) список клиентов, живущих в частных домах (в их адресах отсутствует номер квартиры). Список должен включать поля «ФИО», «Адрес» и «Тел» и быть отсортированнымпо фамилиям клиентов;
3) список клиентов, не имеющих телефона или имеющих телефон от АТС 234. Список должен включать поля «ФИО»,«Адрес» и «Тел» и быть отсортированным по возрастанию номеров телефонов;
4) список клиентов, родившихся после 01.01.1960. Список должен включать поля «ФИО», «Адрес» и «ДатаР» и быть отсортированным по возрастанию даты рождения;
5) список клиентов, возраст которых превышает 50 лет. Список должен включать поля «ФИО», «Адрес» и «ДатаР» и быть отсортированным по убыванию даты рождения.
Указания
Запросы АЗ-7-1 - АЗ-7-2
3.17. отбор записей с использованием шаблонов строк: в качестве условия отбора для запроса АЗ-7-1 укажите в поле «Адрес» строку пр. Октября* (строка оканчивается символом «звездочка»), которая при нажатии [Enter] будет преобразована к виду Like "пр. Октября*". Для запроса АЗ-7-2 условие отбора (также в поле «Адрес») должно иметь вид Not Like "* кв. *" (строка в кавычках начинается и оканчивается символом «звездочка»).
Символ «*» используется в шаблонах (образцах) строк для обозначения любого количества любых символов', операция Like обеспечивает сравнение строки с шаблоном. Так, сравнение вида «[Адрес] Like "пр. Октября*"» будет истинным в том случае, если поле «Адрес» начинается с текста «пр. Октября» (оставшаяся часть адреса может быть произвольной). Аналогично, шаблон «* кв. *» позволяет отобрать только те строки, в которых содержится текст « кв. », а с помощью комбинации операции отрицания Not и операции сравнения Like «Not Like "* кв. *"» можно отобрать строки, не содержащие данного текста.
В шаблонах строк можно также использовать специальный символ «?», обозначающий ровно один произвольный символ, и символ «#», обозначающий ровно одну цифру. Например, шаблону «А???а» удовлетворяют все строки из 5 символов, начинающиеся и оканчивающиеся буквой «а» («Акула», «Атака»); слова «Азбука» и «Арка» этому шаблону не удовлетворяют, поскольку их длина не равна 5. В то же время все эти слова удовлетворяют шаблону «А*а». запрос АЗ-7-3
Для поля «Тел» укажите два условия отбора (см. 3.16): первое условие имеет вид is Null и позволяет отобрать записи, в которых поле «Тел» является пустым; во втором условии (в строке «Или») используется шаблон 234* (см. 3.17), позволяющий отобрать записи, в которых поле «Тел» начинается с цифр «234».
Запрос АЗ-7-4
Разработайте по аналогии с запросом АЗ-2-4.
Запрос АЗ-7-5
3.18. использование системной даты: для отбора клиентов, возраст которых превышает 50 лет, в поле «ДатаР» можно указать следующее условие: <Now()-50*365. Функция Now() возвращает текущую дату (системную дату компьютера). В данной формуле из текущей даты вычитается нужное число дней.
Для построения более точного условия следует учесть, что каждый четвертый год является високосным (то есть насчитывает 366 дней).