Запросы с вычисляемыми полями

При построении запросов можно создавать вычисляемые поля, значения которых будут результатом выполнения операций над другими полями таблицы. Для этого нужно в пустую ячейку строки Поле бланка запроса ввести выражение. В выражениях можно использовать знаки арифметических операций и знак операции над текстом (знак объединения «&»). Во избежание ошибок для построения выражений лучше использовать Построитель выражений.

Например, пусть необходимо создать запрос «Разница в цене» для задачи «Продажи».

1. Сначала нужно указать поля, значения которых будут выводиться в запросе (в нашем запросе это поля Наименование товара,Ценаиз таблицы «Товары» и поле Цена продажи из таблицы «Заказы»).

2. Для вычисления разницы в цене необходимо установить курсор в пустом столбце строки Поле и нажать кнопку Построить на панели инструментов.

Откроется диалоговое окно Построитель выражений. В верхней части окна расположена область ввода выражения (рис. 11.2). В нижней части окна находятся три списка для поиска имен полей и встроенных функций, необходимых для создания выражения.

 

Рис. 11.2. Формирование запроса с Построителем выражений

Для создания выражения следует:

– в левом нижнем окне дважды щелкнуть по слову Таблицы (откроются имена таблиц);

– щелкнуть по таблице «Заказы» и в среднем окне дважды щелкнуть по полю Цена продажи (при этом ссылка на поле Цена продажи будет введена в верхнем окне), щелкнуть по кнопке «–», затем щелкнуть в левом окошке по таблице «Товары», в среднем окне дважды щелкнуть по полю Ценаи нажать <ОK>. В поле будет введено построенное выражение вида:

Выражение1: [Заказы]![Цена продажи]–[Товары]![Цена]

У вычисляемого поля вместо слова Выражение1 можно ввести смысловое название столбца, например Разница.

3. Запустить запрос на выполнение.

Параметрический запрос

В условиях отбора на бланке запроса обычно вводятся конкретные значения (константы). Но иногда условия отбора необходимо изменять при каждом запросе. Тогда используется параметр запроса, который делает поле переменной величиной. При каждом выполнении запроса значение параметра будет запрашиваться.

Для определения параметра в строке Условие отбора на поле вместо конкретного значения вводится смысловая фраза (имя параметра), заключенная в квадратные скобки ([]), которую Access будет рассматривать как переменную и выводить в окне диалога для запроса конкретного значения. Можно в одном запросе использовать несколько параметров, при этом каждый параметр должен иметь уникальное имя. Всем параметрам по умолчанию присвоен текстовый тип данных.

Например, пусть необходимо просматривать информацию о продаже конкретного товара. В бланке запроса надо определить нужные поля из таблицы «Заказы»: Наименование товара, Цена продажи, Количество, Заказчик. Для поля Наименование товара в строке Условие отбора нужно записать текст [Введите товар].

Рис. 11. 3 – Окно параметрического запроса
Тогда при каждом выполнении запроса будет появляться окно, в котором нужно будет вводить наименование товара (рис. 11.3).

Можно строить более сложный параметрический запрос. Если нужно задать временной интервал выборки информации по дате, например, после 1 сентября, но до 1 декабря текущего года, то необходимо в строке Условие отборазаписать:

>[Введите дату начала периода] and <[Введите дату конца периода]

Вначале будет задан первый вопрос для ввода даты начала периода, а затем второй – для ввода даты конца периода.

Итоговые запросы

Для того чтобы подводить итоговые значения по группам данных, используются итоговые запросы (рис. 11.4). Например, пусть необходимо получить итоговые суммы по продажам отдельных групп товаров.

 

Рис. 11.4. Формирование итогового запроса

Для построения запроса нужно по таблице «Заказы» сконструировать бланк запроса следующим образом:

1. В первом столбце установить поле Наименование товара, во втором столбце – построить выражение:

Сумма: Sum[Заказы]![Цена продажи]*[Заказы]![Количество].

2. Нажать кнопку Групповые операции (S) на панели инструментов конструктора запроса, при этом в бланке запроса появится строка Групповая операцияи в этой строке будет выведена установка Группировка для каждого поля, внесенного в бланк. Это значение нужно оставить для поля, которое объединяет записи в группы (для нашего запроса – поле Наименование товара). Во втором столбце надо выбрать групповую операцию.

Для выполнения групповых операций имеется несколько функций, которые выбираются в строке Групповая операция бланка запроса из раскрывающегося списка:

- Sum – вычисляет сумму значений поля в каждой группе;

- Avg – расчитывает среднее арифметическое всех значений в каждой группе;

- Min, Max – вычисляет минимальное (максимальное) значение в каждой группе;

- Count – определяет количество записей в каждой группе.

Для нашего запроса надо во втором столбце установить функцию Sum.

3. Запустить запрос.