Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access_2007.doc
Скачиваний:
257
Добавлен:
17.03.2015
Размер:
20.6 Mб
Скачать

Для тех, кто понимает. Не бойтесь подстановок

Как вы знаете, подстановки изменяют способ отображения значений на листе данных. Если добавить подстановку к полю CustomerID в таблице Orders, вы не увидите за­шифрованные числа, такие как 1032. Вместо этого на экран выводятся информативные данные, например фамилия и имя Hancock, John (Хэнкок Джои).

Но при создании условия отбора или фильтрации следует помнить, какие данные на са­мом деле хранятся в поле. Условие отбора -1032 для поля CustomerID действует кор­ректно, а условие =Hancock, John — нет, потому что имя и фамилия хранятся отдель­но. (Они содержатся в таблице Customers, а не в таблице Orders.)

Порой требуется создать условие отбора, использующее связанную информацию. На­пример, если вы хотите найти записи в таблице Orders, используя имя и фамилию кли­ента вместо его идентификационного номера, поскольку этого номера у вас под рукой нет. Для этого есть две возможности:

  • найти нужное значение кода (ID) в таблице Customers заранее. После этого вы можете его использовать при построении запроса для таблицы Orders;

  • применить запрос на объединение для получения имени и фамилии из таблицы Customers и вывести их рядом с остальными подробностями заказа. Как воспользоваться этим приемом, вы узнаете в разд. "Запросы и связанные таблицы" далее в этой главе.

Если сопоставляется текст, необходимо значение заключить в кавычки. Иначе програм­ма Access не будет знать, где начинается и заканчивается текстовый фрагмент.

="Harrington Red"

Вместо поиска точного совпадения можно использовать диапазон. Добавьте следующее условие отбора в поле OrderTotal для поиска всех заказов, стоящих больше 10 и меньше 50 долларов:

<50 And >10

В этом выражении на самом деле два условия (меньше 50 и больше 10), которые объеди­нены могущественным ключевым словом And (см. разд. "Комбинирование условий на значе­ния" главы 4). Как альтернативу можно применять ключевое слово Or, если нужны резуль­таты, которые удовлетворяют одному из заданных вами условий. В главе 7 вы рассмотрите более мощные инструменты для построения выражений.

Особенно полезны условия для дат. Но не забывайте обрамлять жестко фиксированные даты знаками # (см. разд. "Проверка допустимости дат" главы 4). Если поместить следую­щее условие отбора в поле DatePlaced, будут найдены асе заказы, сделанные в 2007 г.:

<#1/1/2008# And >#12/31/2006#

Это выражение отбирает все даты до 1 января 2008 г., но после 31 декабря 2006 г.

Подсказка

Поработав чуть больше, можно создать условие фильтрации, отбирающее заказы за первые три месяца текущего года, независимо от того, какой год на дворе. Это условие требует при­менения функций, предоставляемых программой Access для дат.

На профессиональном уровне. Синтаксис фильтра

Если фильтры кажутся хорошо знакомыми, для этого есть основания. У них тот же син­таксис, что и у правил верификации или условий на значение, которые использовались для защиты от некорректных данных (см, разд. "Правила верификации или условия па значения" главы 4). Единственное отличие — способ интерпретации условия програм­мой Access. Например, условие на значение <50 And >10 сообщает Access о том, что значение не должно приниматься, если оно не попадает в заданный диапазон (от 10 до 50). Если же такое условие помещается в поле отбора, оно уведомляет программу Access о том, что вас не интересует отображение записей, не попавших в заданный диапазон. Благодаря такому подобию вы можете использовать все условия на значение, представ­ленные в разд. "Запись условия па значение поля" главы 4.

В главе 7 вы узнаете, как усилить условия фильтрации или отбора с помощью функций Access.

Получение заданного количества первых записей

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

В некоторых случаях фильтры требуют немного больше работы, чем следовало бы. Представьте себе, что вы хотите увидеть 10 самых дорогостоящих продуктов. С помощью условия отбора легко можно получить продукты с ценами, превышающими заданное поро­говое значение. Используя сортировку, можно также добиться того, что наиболее дорогие

компоненты попадут в верхнюю часть таблицы. Но вы не сможете с легкостью сообщить Access о том, что нужно получить 10 записей и остановиться. В этой ситуации у режима Конструктора запросов есть инструмент, способный помочь вам выйти из затруднительно­го положения. Далее описан его принцип работы.

1. Откройте запрос в Конструкторе (или создайте новый запрос и добавьте поля, которые хотите использовать).

В данном примере используется таблица Products и добавляются поля ProductName и Price.

2. Отсортируйте таблицу так, чтобы наиболее интересные для вас записи оказались в верхней части таблицы.

Если вы хотите найти самые дорогостоящие продукты, вставьте сортировку по убыва­нию в поле Price.

3. В поле Работа с запросами | Конструктор Настройка запроса Возврат (Query Tools | Design → Query Setup → Return) выберите другой вариант (рис. 6.8). Стандартный вариант для этого поля — Все (All), получение всех соответствующих условию записей. Но можно выбрать 5, 25 или 100 для получения 5, 25 или 100 первых записей соответственно. Можно также задать значение в процентах, например, 25% для получения первой четверти всех отобранных записей.

Рис. 6.8. Если нужного вам количества записей нет в списке, просто введите его в поле Возврат собственноручно. Ничего не помешает вам отобрать 27 наиболее дорогостоящих продуктов

Примечание

Для того чтобы поле Работа с запросами | Конструктор Настройка запроса Возврат нормально функционировало, следует выбрать подходящий порядок сортировки. Важность этого условия будет понятна, если узнать немного больше о принципе работы данного инстру­мента. Если задать программе Access извлечение только пяти записей, она на самом деле вы­полнит обычный запрос, отберет все записи, удовлетворяющие заданным условиям, и упоря­дочит их в соответствии с вашим порядком сортировки. Затем программа отбросит все кроме первых пяти записей в списке. Если отсортировать ваш список так, что первыми будут идти самые дорогостоящие продукты (как в данном примере), в результате вы получите пять самых опустошительных для бюджета продуктов.

4. Выполните ваш запрос для отображения результатов (рис. 6.9).

Рис. 6.9. Пять самых дорогостоящих продуктов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]