Работа с Конструктором запросов. Вычисляемые поля
Широкие возможности для создания запросов имеет конструктор запросов, в котором можно задавать условия отбора по отдельным полям, определять способ сортировки результатов и создавать вычисляемые поля. Для знакомства с конструктором запросов откройте один из ранее созданных запросов с помощью конструктора. В верхней части конструктора запросов находится схема таблиц, участвующих в запросе, а в нижней – таблица с названиями и параметрами полей. C помощью конструктора можно изменять свойства существующих запросов и создавать новые.
Подробный запрос с условиями на значение.
Создайте запрос с подробными сведениями о заказах, выполняемых в данный момент, отсортировав записи по дате заказа. Для этого модифицируйте созданный ранее запрос Подробные сведения о заказах.
1. В области переходов найдите и выделите ранее созданный запрос Подробные сведения о заказах и откройте его.
2. Для перевода запроса в режим конструктора нажмите кнопку Режим на вкладке Главная.
3. В окне конструктора запросов введите значение Активный как условие отбора для поля Состояние Заказа.
4. Для поля Дата Заказа из раскрывающегося списка выберите способ сортировки по возрастанию.
5. Сохраните измененный запрос под именем Активные заказы. Для этого нажмите Кнопку«Office» и выполните команду Сохранить как ► Сохранить объект как.
6. Снова нажмите кнопку Режим для перевода запроса в режим таблицы и просмотра результата работы запроса.
Для выбора из базы данных только записей, отвечающих определенным критериям, следует задать соответствующие условия отбора в конструкторе запросов. Однако если значения условий будут постоянно изменяться, то редактировать запрос в конструкторе перед каждым его открытием будет неудобно. Использование запросов с параметрами позволит вводить значения условий отбора в диалоговые окна, появляющиеся при каждом запуске запроса.
Итоговый запрос с параметрами.
Нужно построить запрос, рассчитывающий суммы заказов, выполненные каждым водителем за определенный период времени. Начальная и конечная дата периода отбора должна задаваться при запуске отчета.
Как и в предыдущем примере, этот запрос можно построить с помощью мастера, а затем подправить в режиме конструктора, но, чтобы лучше познакомиться с конструктором запросов, попробуйте построить этот запрос без использования Мастера.
1. На вкладке Создание щелкните на кнопке Конструктор запросов в группе Другие – должно появиться окно Добавление таблицы.
2. Выберите таблицу, данные из которой будут использоваться в запросе, и нажмите кнопку Добавить. Повторите эту операцию для всех необходимых таблиц, после чего нажмите кнопку Закрыть. В данном примере нужно добавить таблицы Автомобили и Заказы.
3. С помощью мыши перетащите нужные поля из схемы таблиц на соответствующие столбцы бланка запроса (нужно перетащить поля Водитель, Дата Заказа, Сумма Заказа и Состояние Заказа). Если вы по ошибке перетащили не то поле, выделите столбец, щелкнув кнопкой мыши на его заголовке, и нажмите клавишу Delete.
4. С помощью перетаскивания полей вы построите подробный запрос, а чтобы превратить его в итоговый, выберите на ленте вкладку Конструктор и нажмите кнопку Итоги в группе Показать или скрыть – в бланке запроса появится дополнительная строка Групповая операция.
5. Для поля Сумма Заказа выберите групповую операцию Sum (Сумма), а для поля Дата Заказа– операцию Условие.
6. Чтобы в результат запроса попали только выполненные заказы, установите для поля Состояние Заказа условие «Выполнен». В качестве условия отбора по дате введите следующее выражение: >[Начальная дата] And <[Конечная дата]. Фразы, записанные в квадратных скобках, будут рассматриваться как параметры, значения которых нужно будет вводить при каждом открытии запроса.
7. Отключите вывод на экран полей Состояние Заказа и Дата Заказа, сняв соответствующие флажки. Выберите требуемый способ сортировки запроса, например по убыванию значения поля Сумма Заказа.
8. Чтобы проверить запрос в действии, переключите его в режим таблицы с помощью кнопки Режим. Отобразится диалоговое окно для ввода начальной даты, затем – для конечной, после чего появится результат запроса.
Вычисляемые поля
Простейшим вычисляемым полем является поле, в котором должна выводиться текущая дата. Чтобы создать такое поле:
Создайте свободный элемент управления типа Поле (Text Box) в нужном месте формы. Прямо в поле введите выражение =Date (). Знак равенства обязателен. Откройте окно Свойства (Properties) для этого элемента и задайте для свойства Формат поля (Format) желаемый формат даты, например Длинный формат даты (Long Date). Установите длину поля таким образом, чтобы в нем помещалось необходимое количество символов. Измените название метки этого текстового поля.
Обычно для создания вычисляемых полей выбирают именно элемент управления Текстовое поле, хотя это и необязательно. Допускается использовать для этого любые элементы управления, имеющие свойство Данные (Control Source). Именно в свойстве Данные (Control Source) должно быть задано выражение, которое вычисляет значение этого элемента. Ввод выражения допускается прямо в элемент управления, как мы и сделали это в примере. Однако, если выражение достаточно длинное, его неудобно вводить прямо в поле. Можно ввести выражение в ячейку свойства Данные (Control Source) в окне Свойства (Properties), а если выражение не помещается в ячейке свойства, просто нажать комбинацию клавиш <Shiftl>+<F2> и открыть окно Область ввода (Zoom). Еще можно воспользоваться Построителем выражений.
Вычисляемые поля создаются чаще всего в табличных или ленточных формах для отображения столбца с какими-нибудь вычисленными значениями. Например, стоимость товара рассчитывается как значение выражения Цена * Количество. Для отображения таких расчетных данных используют два способа:
Первый способ основан на том, что форма строится на базе запроса, в который включают вычисляемые столбцы. В форме создается текстовое поле, у которого в качестве источника данных указывается вычисляемый столбец запроса. Поле блокируется, чтобы пользователь не мог изменить данные в нем, ведь эти данные вычисляются в процессе выполнения запроса.
Во втором случае форма может строиться прямо на базе таблицы. В ней создается текстовое поле, в котором в качестве источника данных указывается выражение, например = [Цена за единицу] * Количество. При этом в выражении необязательно указываются те поля, которые включены в форму, а любые поля базовой таблицы.