
- •Разработка баз данных в access
- •К и р о в 2005
- •Лаборатория множительной техники
- •1 Начало работы с Access. Создание базы данных
- •1.1 Создание новой таблицы
- •1.1.1 Работа с таблицей в режиме конструктора
- •1.1.2 Просмотр и редактирование данных
- •1.2 Работа со связями, ключевыми полями и индексами
- •1.3 Создание форм
- •1.3.1 Использование мастеров форм
- •1.3.2 Работа в режиме конструктора формы
- •1.4 Создание запросов
- •1.5 Создание отчетов
- •1.6 Использование макросов
- •1.7 Программирование командных кнопок
- •2 Создание базы данных «Студенты и занятия»
- •2.1 Разработка таблиц
- •2.2 Создание связей между таблицами
- •2.3 Разработка форм базы данных «Студенты и занятия»
- •2.4 Разработка запросов для базы данных «Студенты и занятия»
- •2.4.1 Создание запроса на выборку «Учеба»
- •2.4.2 Создание запроса «Обновление таблицы оценки»
- •2.4.3 Создание запроса «Ввод оценок»
- •2.5 Создание отчета «Вывод оценок по фамилии»
- •2.6 Создание макроса для обновления таблицы «Оценки»
- •2.7 Создание командной кнопки
- •1 Начало работы с Access. Создание базы данных 5
1.4 Создание запросов
Одним из наиболее мощных средств современных СУБД являются запросы, позволяющие пользователю «задавать вопросы» базе данных. Результат запроса («ответ») можно напечатать или вывести на экран.
Запрос - это выражение, определяющее, какую информацию нужно отыскать в одной или нескольких таблицах. С помощью запроса можно также выполнить некоторые действия с данными таблицы (таблиц) и обобщить данные таблицы.
Возможно использование запросов для выполнения следующих задач:
• Создать список сотрудников, живущих в конкретном городе.
• Вывести и фамилии клиентов, и демографическую статистику, и информацию о продажах отчете.
• Определить частоту проката видеофильмов.
• Подсчитать суммарную стоимость видеофильмов по категориям.
• Убрать из базы данных информацию о клиентах, не пользовавшихся услугами проката весь прошлый год.
• Перенести все старые записи о клиентах в архивную базу данных,
Запросы могут использоваться как источники информации для форм и отчетов. В этом случае в запросе используются данные из нескольких таблиц, Access выполняет запрос каждый раз, когда открывается форма или отчет, и, следовательно, можно быть уверенным, что информация, которая находится на экране, всегда самая «свежая».
Access позволяет создавать следующие типы запросов.
• Запрос выборка. Используется для выборки данных из таблиц на основании определенного условия. Это наиболее простой тип запроса. Запрос-выборку, например, можно использовать для получения списка всех клиентов, проживающих в Киеве.
• Запрос действие. Используется для выполнения действий с записями, удовлетворяющими определенному условию. Этот тип запроса позволяет изменять или перемещать данные, создавать новые таблицы или убирать ненужные записи из таблицы. Возможно, использовать запрос-действие для удаления (добавления, обновления) записей о клиентах, переставших пользоваться услугами вашей фирмы.
• Перекрестный запрос. Используется для обобщения данных в формате электронной таблицы на основании условия, определенного в запросе. Перекрестные запросы чаще всего применяются для отображения данных в виде диаграмм.
• Запрос-объединение. Используется для объединения полей из нескольких таблиц. Например, можно создать запрос, выбирающий информацию о клиентах из таблицы Клиенты и итоговые суммы по накладным из таблицы Накладные.
• Запрос к серверу. Используется для того, чтобы послать команды удаленной базе данных, используя язык структурированных запросов SQL (Structured Query Language).
• Управляющий запрос. Используется для выполнения действий с. записями баз данных с помощью инструкций языка SQL.
Для каждого из этих типов можно указать параметры запроса, которые подсказывают пользователю, как определить условие запроса.
Результаты запроса или операции фильтрации Access помещает в динамический набор записей. Динамический набор записей внешне выглядит и работает, как обычная таблица, но на самом деле отображает данные одной или нескольких таблиц в динамическом режиме. Можно вводить и обновлять данные в динамическом наборе записей.
Чтобы создать запрос, щелкните на корешке «Запрос» и затем на кнопке «Создать». На экране появится диалоговое окно «Создание запроса». Так же как для форм и таблиц, для создания запросов существует несколько способов.
Конструктор. Самостоятельное создание нового запроса.
Простой запрос. Создание запроса на выборку из определенных полей.
Перекрестный запрос. Создание запроса, выводящего данные в компактном формате (подобно формату электронной таблицы).
Повторяющиеся записи. Создание запроса на поиск повторяющихся записей в простой таблице или запросе.
Записи без подчиненных. Создание запроса на поиск записей, которым не соответствует ни одна запись в подчиненной таблице.
Перед созданием запроса необходимо продумать:
• Какая таблица (таблицы) содержит нужную информацию
• Связи таблиц (имеют ли эти таблицы соответствующие ключи?)
• Тип запроса, которым хотите воспользоваться
• Условия и критерии полей, которым должны удовлетворять записи
• Необходимые вычисления
• Порядок сортировки
• Имя, под которым хотите сохранить запрос
Для того чтобы создать запрос в режиме «Конструктор», выберите корешок «Запрос», а затем щелкните на кнопке «Создать». На экране появится диалоговое окно «Новый запрос». Выберите «Конструктор» и щелкните на кнопке ОК. На экране появится окно «Запрос на выборку»: «Запрос» и диалоговое окно «Добавление таблицы».
Для выбора таблицы, которую хотите добавить в запрос, дважды щелкните на имени таблицы или выделите имя таблицы, а затем щелкните на кнопке «Добавить». Access добавит таблицу в окно «Запрос на выборку».
Диалоговое окно «Добавление таблицы» остается открытым для того, чтобы можно было добавить другие необходимые таблицы или запросы. Access автоматически отслеживает все связи, существующие между таблицами, добавленными в область действия запроса, и показывает их, рисуя линии между связанными полями (линии между соответствующими ключевыми полями). Эти линии называются линиями объединения.
Закончив добавлять таблицы, щелкните на кнопке «Закрыть». Для того чтобы заново открыть диалоговое окно «Добавление таблицы», щелкните на кнопке «Добавить таблицу», расположенной в панели инструментов, или выберите команду «Запрос => Добавить таблицу» на стандартной панели инструментов.
Нижняя половина окна содержит сетку Query-by-Example (запрос по примеру или бланк QBE), которая предназначена для задания условия отбора. Бланк QBE позволяет задать условия отбора, предлагая выбрать в качестве шаблона один из реальных примеров, тип данных которого соответствует вашим. Например, для того чтобы отыскать всех студентов группы ТМ-34, в поле Условие отбора следует набрать ТМ-34.
Работа с окном запроса
Существует несколько режимов просмотра запросов в окне запросов (смена режима отображения можно произвести соответствующим выбором в меню Вид):
• Режим конструктора. Используется для задания запроса.
• Режим SQL. Используется для отображения или изменения запроса на языке SQL.
• Режим таблицы. Используется для отображения результатов запроса. Панель инструментов конструктора запросов содержит большое количество кнопок, позволяющих значительно ускорить работу с запросами. Описание этих кнопок приведено в таблице 5.
Выбор полей
Бланк QBE состоит из строк и столбцов. Каждый столбец соответствует одному из полей, используемых в запросе. Для того чтобы добавить поле в бланк QBE, дважды щелкните на этом поле в окне списка полей таблицы или перетащите с помощью мышки это поле в один из столбцов. Access автоматически заполнит имя поля и стандартные выборки для подсчета итоговых значений по группе, а также установит флажок опции «Вывод на экран».
Таблица 5 - Кнопки панели инструментов конструктора запросов
Название кнопки |
Описание ' |
Тип запроса |
Изменяет тип текущего запроса |
Запуск |
Выполняет запрос |
Добавить таблицу |
Отображает диалоговое окно Добавление таблицы |
Групповые операции |
Показывает строку с итоговыми данными в бланке QBE |
Свойства |
Отображает окно свойств |
Чтобы выбрать все поля, дважды щелкните на звездочке (*) или перетащите звездочку в бланк QBE. Для того чтобы убрать поле, выделите соответствующий столбец и нажмите клавишу <Del>, или установите курсор ввода внутри столбца и в меню «Правка» выберите команду «Удалить столбец».
Совокупность записей, являющихся результатом выполнения запроса (или фильтрации), называется динамическим набором записей. Можно указать, какие поля следует включать в динамический набор записей. Для включения поля в динамический набор записей установите флажок опции «Вывод на экран» в бланке QBE. В отображаемые результаты запроса не обязательно включать все поля, используемые в бланке QBE. Для того чтобы исключить поле из результирующего динамического набора записей, уберите флажок опции «Вывод на экран» для этого (исключаемого) поля.
Бланк QBE содержит также строчки: «Имя таблицы», «Сортировка», «Условие отбора», и строку «Групповые операции», которая спрятана по умолчанию. Для того чтобы отобразить ее на экране, щелкните в меню на кнопке «Групповые операции» на панели инструментов.
Добавление вычисляемых полей
В бланк QBE можно добавить вычисляемые поля. Вычисляемые поля - это временные поля, создаваемые в динамическом наборе записей во время выполнения запроса; в них заносятся результаты вычислений над данными из полей таблицы. Вычисляемые поля можно использовать, например, для расчета стоимости продуктов по категориям или для объединения (конкатенации) текстовых полей.
Для создания вычисляемого поля в верхней строке бланка QBE выделите, пустую ячейку - имя поля. Вы можете напечатать выражение непосредственно в этой ячейке. Access присвоит новому полю имя, например «Выражение1», которое впоследствии можно изменить на более осмысленное название. Можно сразу ввести в указанную ячейку имя нового поля, далее (:) и выражение. Имена полей, используемые в вычислениях, должны заключаться в квадратные скобки ([]), а пробелы - в кавычки (“ “). Логические и арифметические операторы записываются обычным образом. Имена вычисляемых полей в квадратные скобки заключать не нужно. Например, можно создать новое поле с именем «Итого», введя следующее:
Итого: |Цена]*Количество
Для тоги чтобы создать вычисляемое поле, выполните такую последовательность действий.
1 Перейдите в нужный столбец в бланке QBE.
2 В строке «Поле» введите имя вычисляемого поля и двоеточие (:).
3 Продолжайте ввод в ячейку имени поля составляющих выражения.
4 Сохраните и выполните запрос.
Групповые расчеты
Иногда возникает необходимость выполнить запрос не для каждой записи, а для групп записей. Например, можно просмотреть итоговые суммы продаж по определенной области или рекламные цены по каждому виду продукции. Access позволяет выполнить эти непростые вычисления, группируя записи. Например, можно определить среднюю зарплату по отделам или максимальное количество часов, необходимых для выполнения каждого заказа.
Вы можете сами определить способ разбиения на группы в строке «Групповая операция». Для того чтобы отобразить эту строку на экране, в меню «Вид» выберите команду «Групповая операция». Одновременно со строкой «Групповая операция» Access автоматически добавляет слова «Группировка» в каждое поле бланка QBE, Используйте это поле для определения групп, по которым хотите выполнить итоговые расчеты. В поле «Групповая операция» можно выполнить любой из перечисляемых ниже типов расчетов.
• Sum. Суммирование значения полей.
• Avg. Расчет среднего значение поля.
• Min. Нахождение минимального значения поля.
• Мах. Нахождение максимального значения поля.
• Count. Подсчет количества (непустых) значении в поле. Нулевые значения не учитываются.
• StDev. Расчет среднеквадратической ошибки для значений поля.
• Var. Расчет дисперсии для значений поля.
• First. Подстановка первого значения в ноле.
• Last. Подстановка последнего значения в поле,
• Выражение. Позволяет создавать вычисляемое поле для группы.
• Условие. Позволяет задать критерий для поля, не используемого для определения группы.
Ввод условия отбора
Задав условие в строке бланка QBЕ, можно осуществить запрос только для записей, удовлетворяющих заданному условию. Условие отбора один чаще всего используемых элементов запроса. Можно отобрать записи, введя любое из следующих условий.
• Точное совпадение. Задайте буквенное выражение, например текстовую строку Укр или $ 1000, которое должно точно совпадать со значением полей отбираемых записей: прописные и строчные символы считаются различными.
• Поиск с использованием подстановочных символов шаблона. Для задания условия используйте комбинацию букв и подстановочных символов, например У* или 1# # # (таблица 6).
• Поиск несовпадений. Используйте оператор NOT для исключения из области действия запроса тех записей, которые удовлетворяют заданному условию отбора.
• Поиск по дате. Для задания условия используйте фиксированную дату или оператор DATE(), заменяющий текущую дату (на основании системных часов компьютера). Например, можно воспользоваться условием 12/ 1 /95 или DATE().
• Поиск пустых полей. Используйте оператор NULL, чтобы указать, что вам нужны только записи, заданные поля которых пусты. Используйте оператор NOT NULL для того, чтобы указать, что в результатах запроса вы хотите видеть только записи с непустыми нолями.
• Операторы сравнения. Используйте любые операторы сравнения (таблица 7) для сопоставления значений полей записей по особым правилам. Например, чтобы увидеть только записи с датой раньше текущей, можно ввести <DATE().
• Значения Да/Нет. Используйте Да, Истина, Включено или -1. чтобы задать значение Да. Используйте Нет, Ложь, Отключено или 0, чтобы задать значение Нет.
• Сложное условие отбора. Воспользуйтесь логическими операторами (таблица 8) для задания сложного условия для одного и того же поля.
Таблица 6 - Операторы - подстановочные символы
Оператор |
Описание |
* |
Используется вместо любого числа символов |
? |
Используется вместо одного любого символа |
# |
Используется вместо любой цифры |
Таблица 7 - Операторы сравнения (условные операторы)
Оператор |
Описание |
Оператор |
Описание |
Оператор |
Описание |
> |
Больше |
< = |
Меньше или равно |
< > |
Не равно |
< |
Меньше |
>= |
Больше или равно |
= |
Равно |
Таблица 8 - Логические и другие операторы
Оператор |
Описание |
AND |
Подразумевает, что все условия выполнены одновременно |
OR |
Подразумевает, что выполнено хотя бы одно из условий отбора |
NOT |
Подразумевает, что условия не должны выполняться |
XOR |
Исключающее или |
LIKE |
Используется для представления любых символов (например, LIKE «[А-Д]*», чтобы увидеть список сотрудников, чьи фамилии начинаются с буквы А, Б, В, Г или Д) |
BETWEEN |
Подразумевает, что значения должны быть в заданном диапазоне |
IN |
Подразумевает, что значения должны быть внутри того же поля |
Сортировка результатов запроса
Обычно результаты запроса появляются на экране в несортированном виде, в том порядке, в котором записи были найдены в базе данных. Чтобы результаты запроса выглядели привычно, можно указать порядок сортировки. Строка сортировки бланка QBE содержит раскрывающийся список, включающий следующие типы сортировки:
• По возрастанию
• По убыванию
• Отсутствует.
По умолчанию порядок сортировки не задан. Для того чтобы задать порядок сортировки, выделите поле и из раскрывающегося списка, и выберите нужный порядок сортировки.
Задание свойств запросов
Вы можете просмотреть и изменить свойства всего запроса, списка полей, используемых в запросе, или отдельных полей динамического набора записей. Для того чтобы просмотреть и изменить свойства любого из этих объектов, откройте запрос в режиме «Конструктор», и выберите команду «Свойства» для открытия диалогового окна свойств. Затем щелкните на объекте, свойства которого необходимо изменить. В окне свойств появится набор свойств выбранного объекта.
Одно из самых важных свойств запроса - это свойство «Уникальные значения». По умолчанию это свойство имеет значение «Нет», означая, что если существуют повторяющиеся записи, удовлетворяющие заданным условиям, то каждая из них будет внесена в динамический набор записей. Для того чтобы исключить из результатов запроса повторяющиеся записи, установите для свойства «Уникальные значения» значение «Да».
Если целью запроса является создание списка категорий видеофильмов и платы за прокат по категориям, по умолчанию в результате запроса одни и те же записи будут представлены в каждой категории. Для того чтобы в списке не было повторяющихся записей, необходимо установить для свойства «Уникальные значения» значение «Да».