
- •ВВЕДЕНИЕ
- •1. ПРОЕКТИРОВАНИЕ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ
- •1.1. Типы баз данных
- •1.2. Нормализация отношений в РБД
- •1.3. Типы связей и ключей в РБД
- •2.2. Создание таблиц в режиме Конструктор
- •3. ОРГАНИЗАЦИЯ СВЯЗЕЙ МЕЖДУ ТАБЛИЦАМИ И ЗАПОЛНЕНИЕ ТАБЛИЦ
- •4. ЗАПРОСЫ В СУБД ACCESS
- •4.1. Запрос на выборку данных
- •4. 2. Создание запроса в режиме Конструктор
- •4.3. Запрос с параметром
- •4.4. Итоговые запросы
- •4.5. Запросы с вычисляемым полем
- •4.6. Перекрестные запросы
- •5. ФОРМЫ В СУБД ACCESS
- •5.1. Создание форм на основе Мастера форм
- •5.3. Конструктор форм
- •6. ОТЧЕТЫ В СУБД ACCESS
36
бавьте таблицу «Контракты», перенесите мышью из списка полей выбранной таблицы в область спецификации запроса поля таблицы «Товар», «Количество» и «Дата» в нужной последовательности.
В поле запроса «Товар» задайте режим сортировки. В поле запроса «Дата» в строке Условие отбора задайте отбор по критерию (см. рис. 17).
>1.03.01
Выполните запрос щелчком мыши по кнопке Запуск на панели пиктографического меню. Сохраните запрос под именем «Контракты после 1 марта». Сохраненным запросом можно воспользоваться в любой момент
ипосле внесения изменений и дополнений в исходную таблицу.
Вкачестве примера отбора данных по более сложному условию рассмотрим запрос на получение сведений о контрактах, заключенных клиентами за определенный промежуток времени, например с 15.03.01
по 23.05.01.
Постройте такой запрос на базе таблицы «Контракты». Включите в запрос поля «Дата», «Товар», «Клиент». Для поля «Дата» задайте режим сортировки По возрастанию и условие отбора:
Between 15.05.01 And 23.05.01
Для создания сложных условий выборки, определяемых сложными выражениями, куда могли бы входить поля существующих в БД таблиц и других объектов, встроенные в Access функции, операторы, константы и т.п., рекомендуется использовать окно Мастера Построитель выражений, которое открывается при нажатии на соответствующую кнопку Построить пиктографического меню главного окна БД (см. рис. 18).
Установите курсор мыши в поле «Дата» строки Условие отбора QBE-бланка запроса, вызовите Построитель выражений и наберите в верхней части его окна требуемое условие, используя имеющиеся кнопки на панели для набора математических операций. Выполните запрос и сохраните его под именем «Контракты за период».
4.3. Запрос с параметром
Запросами с параметром являются запросы, в которых конкретное значение параметра, входящего в условие на выборку, формируется в диалоговом режиме через специальное окно запроса.
Построим запрос с параметром для получения сведений об отдельных контрактах. Запрос строится на базе таблицы «Контракты». Зададим поля запроса: «Товар», «Количество», «Клиент», «Дата». Целью запроса является получение данных о контрактах, заключенных отдельными клиентами, при задании названия их организаций. Для этого в QBE-бланке запроса в строке Условие отбора для поля «Клиент» введите параметр – любую подходящую по смыслу подсказку для ввода требуемого значения поля «Клиент», заключенную в квадратные скобки, например [Организация] (см. рис. 19).

37
Рис. 19. Окно Конструктора для создания запроса с параметром
При выполнении такого запроса на экране прежде всего появится диалоговое окно Введите значение параметра (см. рис. 20). Введите значение параметра Организация - одно из значений поля «Клиент» из таблицы «Клиенты» (без квадратных скобок).
Рис. 20. Диалоговое окно ввода значения параметра запроса
Сохраните запрос под именем «Контракты клиентов».
Можно создать и более сложное условие выборки для запроса с параметром с использованием логических операторов. Например, для выборки информации о контрактах, заключенных после 1 марта, в поле «Дата» для таблицы «Контракты» нужно будет в строке Условие отбора записать (используется логический оператор «>»):
>[Введите дату]
Если же нужно задать временной интервал выборки информации по дате, например после 1 марта, но до 1 мая текущего года, то необходимо в соответствующей строке Условие отбора записать:
>[Введите дату начала периода] and <[Введите дату конца периода]

38
При этом вначале будет задан первый вопрос для ввода начала периода, а затем второй -- для ввода конца периода. Аналогичным образом, используя Построитель выражений, можно сформировать любое сложное условие выборки, где соответствующие записи вводятся в строке Условие отбора либо в ниже расположенных строках для нужных полей в QBEбланке, а конкретные значения соответствующих параметров в таком сложном условии будут задаваться последовательно в диалоговом режиме.
4.4. Итоговые запросы
Итоговые запросы используются в том случае, если необходимо сгруппировать записи, выбранные согласно заданным условиям, по совпадающим значениям поля, а по несовпадающим значениям вычислить итоговые значения. В таких запросах используются два типа полей: по одним полям осуществляется группировка данных, по другим - вычисления.
Рис. 21. Окно Конструктора для создания итогового запроса
Например, создадим итоговый запрос для подсчета количества товаров по контрактам, заключенным сотрудниками, работающими на складе. Запрос строится на базе таблицы «Контракты». Поля запроса: «Сотрудник», «Количество». После определения полей запроса выполните команду Вид/Групповые операции. В результате в QBE-области запроса появится дополнительная строка Групповая операция. В этой строке для поля «Сотрудник» выберите функцию Группировка (эта функция отображается в строке по умолчанию). Для поля «Количество» выберите функцию Sum, воспользовавшись раскрывающимся списком. Добавьте для поля «Количество» режим сортировки По убыванию (см. рис. 21).

39
В результате выполнения запроса будут сгруппированы записи с одинаковыми фамилиями сотрудников и просуммированы соответствующие количества товаров, на которые были заключены контракты этими сотрудниками. Сохраните запрос под именем «Контракты сотрудников».
4.5. Запросы с вычисляемым полем
Как уже обсуждалось выше в пособии (см. раздел 2), таблицы в БД предназначены только для хранения информации и в них в соответствии с правилами нормализации не может быть полей, значения которых являются производными от других полей таблицы. Другими словами, в самих таблицах не может проводиться преобразование данных на основе уже имеющейся в них информации. Для этих целей в БД используются таблицы запросов, а именно вычисляемые поля в запросах.
Рис. 22. Окно Конструктора для создания итогового запроса
В качестве примера рассчитаем суммы контрактов, заключенных сотрудниками. Для формирования запроса будем использовать таблицы «Контракты». Для запроса выберите поля: «Сотрудник», «Товар», «Цена», «Количество». В следующем свободном поле QBE-бланка запроса введите выражение для вычисления:
Стоимость:[Количество] *[Цена]
Перед выражением вводится имя создаваемого в процессе запроса вычисляемого поля «Стоимость» с двоеточием. Это имя появится в результате запроса в итоговой таблице в качестве заголовка поля. Аналогичный прием можно использовать и для переименования других полей в