
- •Часть 2
- •Часть 2
- •Содержание
- •1. Конструктор запросов 4
- •2. Запрос на выборку. 13
- •1. Конструктор запросов
- •Создание выражений с помощью Построителя выражений
- •2. Запрос на выборку.
- •2.1. Запрос, основанный на одной таблице и использующий простое условие
- •2.2. Простая выборка из двух связанных таблиц.
- •2.3. Запрос, использующий вычисляемые поля
- •2.4. Запрос с группировкой
- •2.5. Запрос, использующий связь таблицы с самой собой (рекурсивное соединение)
- •2.6. Запрос, использующий две ссылки на одну таблицу
- •2.7. Выборка повторяющихся записей
- •2.8. Поиск несовпадающих записей
- •2.9. Другие сведения, полезные при разработке запросов
- •3. Запрос на удаление записей.
- •3.1. Запрос на удаление всех записей из таблицы (очистка таблицы)
- •3.2. Запрос на удаление с ограничением числа удаляемых записей
- •3.3. Запрос на удаление с применением внешнего объединения таблиц
- •4. Запрос на добавление записей в существующую таблицу
- •4.1. Запрос на добавление записей во временную таблицу текущей базы данных
- •4.2. Запрос на добавление записей во временную таблицу внешней базы данных
- •5. Запрос на обновление записей в таблице.
- •5.1. Простой запрос на обновление записей
- •5.2. Запрос на обновление полей нескольких связанных таблиц.
- •6. Запросы на объединение.
- •6.1. Запрос на объединение, связывающий воедино однотипные таблицы из различных баз данных.
- •7. Перекрестные запросы
- •7.1. Создание перекрестного запроса при помощи мастера
- •7.2. Сознание перекрестного запроса при помощи конструктора запросов
- •8. Запросы с параметрами
- •9. Подчиненные запросы
- •9.1. Использование подчиненных запросов в выражениях для условий отбора записей
- •9.2. Использование подчиненных запросов в определении полей основного запроса.
- •10. Свойства полей запросов
- •11. Свойства запросов
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.
д). Имя целевой таблицы можно изменить в окне свойств запроса. Соответствующее свойство называется Таблица-получатель и представляет собой комбинированный список, содержащий наименования всех таблиц базы данных.