Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гурин_работа с базами.pdf
Скачиваний:
68
Добавлен:
26.03.2015
Размер:
961.49 Кб
Скачать

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-бланка запроса введите выражение для вычисления:

Стоимость:[Количество] *[Цена]

Перед выражением вводится имя создаваемого в процессе запроса вычисляемого поля «Стоимость» с двоеточием. Это имя появится в результате запроса в итоговой таблице в качестве заголовка поля. Аналогичный прием можно использовать и для переименования других полей в