Краткое содержание 29 Об этих стрелках 30 о сочетаниях клавиш 32 о щелчках кнопкой мыши 33 Примеры 33
Скачать 19.64 Mb.
|
Примечание Напоминаю, запрос — это представление некоторой части данных вашей таблицы. Когда вы редактируете результаты вашего запроса, программа Access изменяет данные в базовой таблице. С другой стороны, совершенно безопасно переименовывать, изменять и удалять запросы — в конце концов, они существуют для облегчения вашей жизни. Построение условий отбора Секрет хорошего запроса — извлечение только нужной вам информации и ничего больше. Для того чтобы сообщить программе Access, какие записи следует взять (а какие нужно игнорировать), вам понадобится условие фильтрации или отбора. Условие отбора определяет интересующие вас записи. Если нужно найти осе заказы, сделанные клиентом с номером 1032, можно применить следующее условие отбора: =1032 Для того чтобы заставить это условие действовать, необходимо поместить его в поле Условие отбора (Criteria) под полем CustomerID. В этом поле можно написать просто 1032 вместо =1032, но лучше придерживаться второй формы, поскольку этот шаблон применяется в более сложных условиях фильтрации. Они начинаются с оператора (в данном случае знака равенства), определяющего способ сравнения данных программой Access, за которым следует значение (в данном случае 1032), которое вы хотите применять для сравнения. Примечание Если вы используете многозначное поле (см. разд. "Многозначные поля" главы 5), программа Access включает в результаты запроса запись, хотя бы одно значение которой соответствует условию отбора. Представьте себе, что таблица Classes содержит многозначное поле InstructorID (указывающее на то, что несколько преподавателей могут объединиться для ведения одного и того же учебного курса). Если написать условие =1032 в поле InstructorID, Access включает в результат любую запись, в которой преподаватель 1032 ведет класс независимо от того, назначены ли для ведения этого класса другие преподаватели. Для тех, кто понимает. Не бойтесь подстановок Как вы знаете, подстановки изменяют способ отображения значений на листе данных. Если добавить подстановку к полю CustomerID в таблице Orders, вы не увидите зашифрованные числа, такие как 1032. Вместо этого на экран выводятся информативные данные, например фамилия и имя Hancock, John (Хэнкок Джои). Но при создании условия отбора или фильтрации следует помнить, какие данные на самом деле хранятся в поле. Условие отбора -1032 для поля CustomerID действует корректно, а условие =Hancock, John — нет, потому что имя и фамилия хранятся отдельно. (Они содержатся в таблице Customers, а не в таблице Orders.) Порой требуется создать условие отбора, использующее связанную информацию. Например, если вы хотите найти записи в таблице Orders, используя имя и фамилию клиента вместо его идентификационного номера, поскольку этого номера у вас под рукой нет. Для этого есть две возможности:
Если сопоставляется текст, необходимо значение заключить в кавычки. Иначе программа 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. Пять самых дорогостоящих продуктов Практические занятия для опытных пользователей. Как индексы ускоряют поиск В главе 4 вы познакомились с табличными индексами и научились создавать их. (Индекс — это перечень всех значений в одном поле в отсортированном порядке. Рядом с каждым значением хранится указатель на полную запись в таблице.) У индексов два назначения. Во-первых, они препятствуют возникновению дублирующихся значений (см. разд. "Предотвращение дублирования значений с помощью индексов" главы 4). Во-вторых, они помогают программе Access выполнять поиск с более высокой скоростью. Зачастую Access может искать, пользуясь индексом, быстрее, чем просматривая целую таблицу. Не только потому, что индекс меньше физически (поскольку он содержит значения только одного поля), но и потому, что он отсортирован, и программа может быстрее перейти в нужное место. Для того чтобы понять разницу, предположим, что вы с помощью программы Access хотите найти запись "Bavarian Tart" в таблице Products. Если у вас есть индекс для поля ProductName, Access может просматривать раздел для буквы "В", дока не найдет нужное значение, и затем перейти к полному набору деталей. Если же индекса нет, программе придется просмотреть всю таблицу, запись за записью. Таблица не отсортирована, поэтому нельзя сказать, сколько пройдет времени до того, как Access случайно натолкнется на нужную запись. На первый взгляд индексы кажутся невероятно полезными, и вы готовы попытаться создать их для всех полей вашей таблицы. Но у индексов есть и недостатки. Чем больше индексов создано, тем больше работы приходится выполнять программе Access при добавлении и обновлении записей. Кроме того, каждый индекс занимает какое-то место. В действительности индексы расходуют ресурсы, как бы они не повышали производительность поиска. Далее перечислены ситуации, в которых следует рассматривать возможность применения индекса для ускорения поиска.
Создание простого запроса с помощью Мастера запросов Как правило, начинать создание запроса лучше всего в Конструкторе, но это не единственная возможность. Можно применить Мастер запроса как отправную точку, а затем переопределить ваш запрос в Конструкторе. В процессе выполнения Мастер запроса задает серию вопросов и затем формирует запрос, отвечающий вашим требованиям. В отличие от множества других мастеров Access и других приложений пакета Office, Мастер запроса довольно слабый. Он хорош как отправная точка для новичков, но не для оперативного исполнителя. Далее описаны действия, необходимые для запуска и выполнения Мастера запроса.
В Мастер запроса включено несколько распространенных типов запросов. За исключением перекрестного запроса у всех остальных нет ничего необычного. Вы научитесь создавать все эти типы запросов с помощью Конструктора.
Рис. 6.10. На первом этапе выполнения Мастера запроса вы выбираете из небольшого набора основных типов запросов 3. Щелкните мышью кнопку ОК. На экране появляется первое окно мастера запросов. 4. В. раскрывающемся списке Таблицы и запросы (Tables/Queries) выберите таблицу, содержащую нужные вам данные. Затем добавьте поля, которые вы хотите видеть в окне результатов запроса, как показано на рис. 6.11. Лучше добавлять поля поочередно. Вставляйте их слева направо в том порядке, в каком они должны появиться на экране результатов. М ожно добавлять поля из нескольких таблиц. Для этого сначала выберите одну таблицу и добавьте поля, которые нужны, затем выберите вторую таблицу и повторите процесс. Такой выбор имеет смысл, только если таблицы связаны. Вы узнаете больше об этом в разд. "Запросы и связанные таблицы" далее в этой главе. Рис. 6.11. Для добавления поля выберите его в списке Доступные поля и щелкните мышью кнопку со стрелкой > (или дважды щелкните его мышью). Можно добавить все поля сразу, если щелкнуть мышью кнопку с двойной стрелкой » и удалить поля, выбрав их в списке Выбранные поля и щелкнув мышью кнопку <. В данном примере в запрос включены три поля 5. Щелкните мышью кнопку Далее (Next). Если в вашем запросе есть числовое поле, Мастер запроса предложит создать итоговый запрос, объединяющий строки в группы и вычисляющий итоги или средние значения. Вы узнаете больше об итоговых запросах в главе 7. Сейчас, если у вас есть такой выбор, отметьте переключатель подробный (вывод каждого поля каждой записи) (Detail), a затем нажмите кнопку Далее (Next). На экране появляется завершающее окно Мастера запроса (рис. 6.12).
Одна из причин, по которой вам может понадобиться переход в режим Конструктора - вставка условий отбора или фильтрации (см. разд. "Фильтрация" главы 3) для извлечения определенных строк. К сожалению, вы не можете задать условия отбора в Мастере запроса. 8. Щелкните мышью кнопку Готово (Finish). В аш запрос откроется в Конструкторе или Режиме таблицы в зависимости от выбора, сделанного вами в пункте 7. Выполнить запрос можно с помощью последовательности Работа с запросами | Конструктор →Результаты → Выполнить (Query Tools | Design → Results → Run).50>50> |