Расширение сферы использования запросов
В этой главе…
В предыдущих главах описывались методы создания и применения практически всех объектов Access. И хотя пройден уже немалый путь, до его конца очень далеко.
В настоящей главе мы поговорим о запросах, которые позволяют не только получать данные. По мере того, как объем данных и потребности в них возрастают, запросы становятся все более сложными. Со временем возможностей мастера простых запросов становится явно недостаточно. Когда такое время наступает, существует несколько возможных вариантов действий.
- С помощью мастера нахождения повторяющихся записей можно создать запрос на выборку, обнаруживающий дублированные записи в одной таблице.
- Воспользовавшись мастером обнаружения записей без подчиненных можно создать запрос на выборку, способный обнаружить в одной таблице записи, у которых нет связанных записей в другой таблице.
- С помощью мастера создания перекрестных запросов можно создать разновидность запроса на выборку, суммирующего данные по категориям.
- Параметрические запросы требуют ввода соответствующего критерия при их запуске. В результате один и тот же запрос можно использовать многократно для получения различных результатов.
- Запросы действия позволяют добавлять новые и изменять уже существующие данные, а также удалять их.
В этой главе описано применение различных запросов, позволяющих решить задачи по обработке данных различной сложности.
Использование мастеров запросов
По сути, запрос представляет собой обычный вопрос. Пользователь задает вопрос, a Access возвращает ответ в виде определенных данных. Например, можно выяснить у Access, какие лечебные растения приобретены из тех или иных каталогов. Это весьма точный вопрос, и Access отобразит только растения, имеющие тип Лечебные и содержащиеся в указанном в запросе каталоге. Такой тип запроса называется запросом на выборку, так как Access получает и отображает только данные, соответствующие выбранным заранее критериям.
Мастер простых запросов, описанный в главе 7, "Получение данных с помощью запросов", не единственный. Кроме него, в нашем распоряжении есть еще три мастера запросов:
- мастер нахождения повторяющихся записей;
- мастер нахождения записей без подчиненных;
- мастер перекрестных запросов.
Эти три мастера позволяют выполнять самые разнообразные, подчас довольно сложные, задачи.
Мастер нахождения повторяющихся записей
Прежде чем приступить к изучению мастера, выясним, что же собой представляет повторяющаяся запись. Дубликаты могут встречаться в одних полях, и в то же время их появление исключено в других полях. Например, как рассказывалось в главе 4, "Планирование базы данных", и в главе 6, "Использование взаимосвязей", уникальной должна быть каждая запись в ключевом поле. Более того, некоторым полям требуется уникальный индекс, и поля такого рода принимают только уникальные записи. Более подробно индексы описываются в главе 11, "Настройка таблиц".
С другой стороны, в некоторых полях допускается повторение записей. Например, в поле Имя Каталога таблицы Растения по много раз повторяются имена одних и тех же каталогов, а в поле Страна таблицы Каталоги неоднократно повторяется запись Россия. Более того, в таблицах нередко присутствует по нескольку повторяющихся значений.
Дублирование записей может стать причиной возникновения серьезных ошибок. Предположим, при создании таблицы заказов один из них был введен дважды. В результате клиент получит две квитанции или же два счета на оплату одной и той же суммы – ни к чему хорошему это, как вы сами понимаете, не приведет.
В дублированной записи при использовании типа данных Счетчик повторяются все поля, за исключением поля первичного ключа (более подробная информация об этом типе данных представлена в главе 11). Кроме того, повторяющиеся значения могут быть размещены лишь в нескольких важных полях. К примеру, база данных содержит записи о сотнях растениях, при этом довольно сложно определить, записи о каких растениях уже были введены, а о каких еще нет. Несколько сотен записей, в частности запись о синем васильке, вводятся повторно. При этом могут использоваться разные фотографии и даже разные торговые каталоги, но обычное и латинское имена будут одинаковыми. В результате получится дублированная запись, несмотря на то, что совпадают не все поля записи.
Пока что в созданной нами базе данных повторяющихся записей нет, поэтому придется создать такие записи самостоятельно, чтобы потренироваться в использовании мастера их нахождения. Откройте таблицу Каталоги и введите новую запись в поле Имя, повторив все данные каталога Огородник, за исключением его имени. В качестве имени каталога введите Огородники (во множественном числе). Это поле является первичным ключом, поэтому каждая его запись должна быть уникальной.