Основные различия между применением фильтрации и сортировки и использованием запросов состоят в следующем:
фильтрация и сортировка выполняются быстрее, чем запросы.;
фильтры и условия сортировки хранятся временно. Запрос можно сохранить на диске и использовать в дальнейшем;
фильтры и сортировка применяются только к активной таблице или форме. Запрос может базироваться на нескольких таблицах и других запросах, причем необязательно, чтобы они были открыты.
Запрос можно создать вручную или с помощью мастера. При этом создается выражение, описывающее критерий, которому должны соответствовать данные в указанных таблицах. В результате выполнения запроса записи, отвечающие заданным условиям, отобразятся в табличном виде.
В этом упражнении вы создадите форму для ввода заказов, полученных по телефону. Форма базируется на запросе, содержащем сведения из таблиц Сведения о заказе и Товары. Запрос создает таблицу, в которой перечислены все товары с указанием их цен, количества, скидок и стоимости покупки. Поскольку стоимость не хранится в базе данных, ее нужно вычислить прямо в запросе. В качестве рабочей будет использоваться папка Office XP SBS\Access\Chap12\QueryDes. Выполните следующие шаги.
1. Откройте базу данных GardenCo, расположенную в рабочей папке.
2. На панели объектов щелкните на Запросы (Queries).
3. Щелкните дважды на команде Создание запроса в режиме конструктора (Create query in Design View). Откроется окно запроса и диалоговое окно Добавление таблицы (Show Table), как показано на следующем рисунке.
Воспользуйтесь диалоговым окном Добавление таблицы (Show Table), чтобы указать таблицы и запросы, которые нужно включить в данный запрос.
4. На активной вкладке Таблицы (Tables)щелкните дважды на таблицах Сведения о заказе и Товары, чтобы добавить их в окно запроса, и закройте диалоговое окно Добавление таблицы (Show Table).
В верхней части окна запроса появятся изображения добавленных таблиц, содержащие списки полей, как показано на следующем рисунке.
Вверху каждого списка полей имеется звездочка, представляющая все поля таблицы. Ключевое поле отображается полужирным шрифтом. Линия, соединяющая поля КодТовара в обеих таблицах, указывает, что эти поля связаны.
Совет. Чтобы добавить в запрос дополнительные таблицы, откройте диалоговое окно Добавление таблицы (Show Table). Для этого щелкните правой кнопкой мыши в верхней части окна запроса и воспользуйтесь командой Добавить таблицу (Show Table)в контекстном меню или щелкните на кнопке Отобразить таблицу (Show Table)на панели инструментов.
Нижняя часть окна запроса занята бланком, предназначенным для построения условий отбора.
5. Чтобы включить поля в запрос, нужно перетащить их из списков вверху окна в последовательные столбцы бланка запроса. Перетащите следующие поля:
Из таблицы
Поле
Сведения о заказе
КодЗаказа
Товары
ОписаниеТовара
Сведения о заказе
Цена
Сведения о заказе
Количество
Сведения о заказе
Скидка
6. Совет. Щелкнув дважды на поле, можно скопировать его в свободный столбец бланка. Чтобы скопировать сразу все поля таблицы, выделите нужный список (щелкнув дважды на его заголовке), а затем перетащите выделенный объект на бланк запроса. Когда вы отпустите кнопку мыши, все поля разместятся в последовательных столбцах бланка. Можно включить все поля таблицы в один столбец бланка, перетащив в него звездочку. Однако если требуется задать условия сортировки или отбора для определенных полей, нужно перетащить каждое из них в отдельный столбец.
7. Окно запроса должно выглядеть, как показано на следующем рисунке.
8.
6. Щелкните на кнопке Запуск (Run), чтобы выполнить запрос и отобразить результаты в виде таблицы.
Измените запрос таким образом, чтобы упорядочить результаты по полю КодЗаказа, и добавьте поле для вычисления стоимости товара, которая определяется умножением цены на количество за вычетом скидки.
7. Щелкните на кнопке Вид (View), чтобы вернуться в режим конструктора. Строка Сортировка (Sort) (третья на бланке) позволяет указать поле и принцип сортировки (по возрастанию или убыванию).
8. Щелкните в ячейке Сортировка (Sort)в столбце КодЗаказа, щелкните на стрелке и щелкните на По возрастанию (Ascending). Поскольку ни одна из таблиц не содержит стоимость покупки, воспользуйтесь построителем выражений, чтобы вставить в бланк запроса выражение для расчета стоимости.
9. Щелкните правой кнопкой мыши в ячейке Поле (Field)первого пустого столбца бланка (шестого), а затем щелкните на команде Построить (Build)в контекстном меню. Откроется диалоговое окно Построитель выражений (Expression Builder), приведенное на следующем рисунке.
Нужно построить следующее выражение: "Ccur([Сведения о заказе].[Цена]*[Количество]*(1-[Скидка])/100)*100"Функция Ccur,используемая в выражении, преобразует результаты вычислений в денежный формат.
10. В первом столбце области элементов щелкните дважды на папке Функции (Functions), а затем щелкните на Встроенные функции (Build-In Functions). Во втором столбце отобразятся категории встроенных функций.
11. Во втором столбце щелкните на категории Преобразование (Conversion), чтобы ограничить список функций в третьем столбце этой категорией. Щелкните дважды на функции Ccurв третьем столбце.