В качестве первого примера сконструируем запрос, добавляющий в пустую временную таблицу базы данных Борей сведения о клиентах, у которых размещены заказы. Сведения о клиентах должны содержать следующую информацию: код клиента, его наименование и полный адрес, включающий индекс, страну, город и собственно адрес.
До того, как приступить к разработке запроса, сначала создайте при помощи конструктора таблиц временную таблицу Клиенты (вспомогательная), содержащую следующие текстовые поля:
· КодКлиента — длина 5 символов;
· Название — длина 40 символов;
· Адрес — длина 250 символов.
На следующем этапе проектирования создайте запрос на выборку, отбирающий необходимую информацию. Для этого откройте новый запрос в режиме конструктора и добавьте в него таблицы Клиенты и Заказы. Конструктор автоматически добавит постоянную связь по полям КодКлиента обеих таблиц. Перетащите при помощи мыши в бланк запроса поля КодКлиента и Название из таблицы Клиенты. Для обоих полей установите порядок сортировки по возрастанию. В определение следующего пустого поля введите строку.
Адрес: [Клиенты].[Индекс] & IIf(IsNull([Клиенты].[Индекс]);"";",") & [Клиенты].[Страна] & ","& [Клиенты].[Город] & "," & [Клиенты].[Адрес]
Для того чтобы исключить выборку повторяющихся записей, в свойствах запроса задайте значение Да для свойства Уникальные значения. Запрос на выборку готов.
На последнем этапе разработки нужно преобразовать получившийся запрос на выборку в запрос на добавление. Для этого из контекстного меню запроса (доступ к которому можно получить, щелкнув правой клавишей мыши где-нибудь в свободной области зоны таблиц) выберите пункт Тип запроса|Добавление. В появившемся диалоговом окне (см. рис. 4.1) оставьте установленное по умолчанию значение переключателя в текущей базе данных, из комбинированного списка имя таблицы выберите таблицу Клиенты (вспомогательная) и нажмите кнопку ОК. Получившийся запрос на добавление изображен на рис. 4.2.

Рис. 4.1. Диалоговое окно Добавление
|
|

Рис. 4.2. Запрос на добавление записей во временную таблицу текущей базы данных
Пояснения
а). После преобразования запроса на выборку в запрос на добавление записей в бланке запроса появится новая строка — Добавление. В этой строке для каждого из полей исходных таблиц указываются соответствующие имена полей целевой таблицы. Другими словами, значения из поля, имя которого указано в строке Поле, будут подставляться в поле целевой таблицы, чье имя задано в строке Добавление. Если имена полей исходной и целевой таблицы совпадают, то конструктор запросов автоматически заполнит строку Добавление, иначе необходимо вручную указать, в какие поля целевой таблицы будет добавляться информация из соответствующих полей исходной таблицы.
б). После выполнения запроса полям целевой таблицы, не указанным в бланке запроса и для которых не задано свойство значение по умолчанию, автоматически будет присвоено значение Null. Однако, если свойство такого поля Обязательное поле имеет значение Да, то соответствующая запись добавлена не будет и Microsoft Access выдаст сообщение об ошибке. Точно так же проверяются и остальные свойствa, связанные с ограничениями, наложенными на поле в режиме конструктора таблиц — условие на значение, пустые строки, индексированное поле, а также ограничения, связанные со ссылочной целостностью. Записи, в которых хотя бы в одном поле нарушено хотя бы одно из вышеперечисленных ограничений, добавлено в таблицу не будет с выдачей соответствующего сообщения об ошибке.
в). В определении поля Адрес использована громоздкая конструкция с использованием функций IsNull() и IIf(). Все это применяется с одной целью — запретить вывод запятой в поле в случае, когда Индекс не содержит никаких значений (в этомслучае адрес будет начинаться с запятой). То есть, если значение поля Индекс не пустое, то после него выводится запятая, иначе — нет.
г). Инструкция SQL. Предложение INSERT, расположенное в самом начале оператора SQL, указывает, что запрос является запросом на добавление записей. В следующей за ключевым словом INSERТ конструкции INTO содержится название целевой таблицы и, далее, в круглых скобках список полей целевой таблицы. Порядок следования полей в этом списке строго соответствует порядку полей в инструкции SELECT. П осле предложения INSERT расположен оператор SQL, задающий стандартный запрос на выборку, начинающийся с предложения SELECT и заканчивающийся предложением ORDER BY.
д). Имя целевой таблицы можно изменить в окне свойств запроса. Соответствующее свойство называется Таблица-получатель и представляет собой комбинированный список, содержащий наименования всех таблиц базы данных.






