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

4. Запрос на добавление записей в существующую таблицу

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

Запросы на добавление записей используются в следующих случаях:

  • Копирование записей из одной таблицы в другую. Самый простой способ такого копирования предоставляет интерфейс Microsoft Access (при помощи пунктов контекстного меню Копировать и Вставить. Такой способ был описан выше при изложении запросов на удаление. Однако запросы на добавление позволяют более гибко управлять процессом. Например, можно добавить в одну целевую таблицу записи, отобранные из нескольких исходных таблиц или запросов; можно добавить в целевую таблицу записи, отобранные по какому-либо критерию; можно добавить только часть полей исходной таблицы и т.д.

  • Добавление в целевую таблицу записей из разных таблиц, отобранных при помощи запроса на объединение.

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

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

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

По своей сути запросы на добавление записей являются запросами на выборку с дополнительной функцией по добавлению записей из созданного временного набора данных в указанную таблицу.

4.1. Запрос на добавление записей во временную таблицу текущей базы данных

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

До того, как приступить к разработке запроса, сначала создайте при помощи конструктора таблиц временную таблицу Клиенты (вспомогательная), содержащую следующие текстовые поля:

  • КодКлиента — длина 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.

д). Имя целевой таблицы можно изменить в окне свойств запроса. Соответствующее свойство называется Таблица-получатель и представляет собой комбинированный список, содержащий наименования всех таблиц базы данных.

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