Шрифт:
Затем щелкните по кнопке ОК, и на экране возникнет окно Запрос на добавление (рис. 11.43). Перед тем как дать команду на его выполнение, обязательно укажите, в какое поле таблицы-получателя Выборка1 надо поместить данные из соответствующего столбца таблицы ES_OPER.
Как вы помните, эти две таблицы различны по структуре, а также по набору и формату полей. Поэтому соответствие полей обеих таблиц определяет пользователь индивидуально для каждой ситуации. В данном случае – согласно табл. 11.1, где в левом столбце представлены поля, которые мы хотим включить в итоговую объединенную таблицу, а в правом – те столбцы из таблицы ES_OPER, которые должны «поставлять» информацию в объединенную таблицу. Таблица 11.1
Поля, не имеющие аналогов в правом столбце табл. 11.1, следует ввести в таблицу Выборка1 вручную (если они изначально в этой таблице отсутствуют – в нашем случае – поле Текст сообщения). Это знакомая нам корректировка структуры таблицы с помощью конструктора таблиц показана на рис. 11.44. Если поле в столбце таблицы Выборка1 имеет аналог в правом столбце, это означает, что информация из данного поля в таблице ES_OPER включается в соответствующее поле таблицы Выборка1.
С учетом всего сказанного правила построения запроса на добавление (на примере рис. 11.43) таковы:
• базовой таблицей для запроса на добавление является дополнительная (в отличие от основной, на которой построена таблица Выборка1 . В данном случае такой дополнительной таблицей является ES_OPER, а основной – File1;
• в качестве полей в запрос включаются только те дополнительные поля, которых не хватает в таблице Выборка1 для формирования в ней объединенной информации. В данном случае – поля Дата ЧС, Виды ЧС, Текст сообщения, Населенный пункт;
• в графе запроса Добавление указываются те поля в таблице Выборка1 , куда заносится информация из отобранных полей дополнительной таблицы (ES_OPER).
Теперь, когда введены все необходимые поля и готовый запрос на добавление (рис. 11.43), осталось только щелкнуть по кнопке
В результате выполнения запроса на экране появится предупреждение о том, что в таблицу Выборка! будет включено еще 11 отобранных записей (рис. 11.45) в дополнение к тем двум записям, которые были получены на первом шаге из таблицы Fiie1 (см. рис. 11.41).
Итоговая таблица с объединенной информацией показана на рис. 11.46.
Итак, вы убедились, что Access 2002 позволяет объединять сведения из таблиц с разной структурой записей. Это очень важно в практической работе.
Запрос на удаление записей
Базы данных не только используются по прямому назначению; часто возникает необходимость произвести в них некоторые вспомогательные, служебные операции. Например, время от времени базу данных надо чистить: там обнаруживаются дублирующиеся записи, устаревшая, бесполезная информация и т. д.
В принципе можно удалить запись из БД и без помощи запроса, а непосредственно из формы, как описывалось в главе 4. Кроме того, можно просто открыть таблицу и удалить выбранную запись. Однако суть проблемы именно в этом слове – «выбранная». Когда число записей в таблице растет и их счет идет на тысячи, определение «жертвы» превращается в сложное и трудоемкое мероприятие. Использование запроса на выборку помогает решить такую задачу.
В окне конструктора создайте обычный запрос на выборку (см. рис. 11.4). Затем с помощью уже хорошо известной вам кнопки
откройте меню Тип запроса и активизируйте в нем опцию Запрос на удаление. Теперь надо ввести в запрос критерии отбора записей для последующего удаления. Здесь требуется уточнить, какие именно записи должны быть уничтожены.
Так как речь идет о базе данных по ЧС, то в ней не предусмотрено накопление и хранение информации о дорожно-транспортных происшествиях – подобные сведения должны содержаться в другом банке данных. Однако по разным причинам в нашу базу данных (в частности, в таблицу ES_OPER) такая информация иногда попадает. Пользы от этого все равно нет, потому что случайные разрозненные записи не дают полной картины по дорожно-транспортным происшествиям. Естественно, такие сведения следует удалять. В бланке запроса в ячейке Условия отбора для поля Код вида ЧС введите код данного типа происшествий – «10101» (рис. 11.47).
Рис. 11.47
Дайте команду на выполнение запроса. На экране появится сообщение о том, что удалению подлежит 556 записей (см. рис. 11.48), и предупреждение, что если вы ответите Да, то назад возврата не будет. Надеемся, что вы исполнены самых серьезных намерений и решительно ответите Да, приведя приговор в исполнение. Таким образом, вы реализуете запрос на удаление, убрав 556 записей, или 6,6 % от общего числа записей в таблице ES_OPER (8397).
Удаление дублирующихся записей
При ведении банка данных довольно часто приходится удалять повторяющиеся записи. Есть два традиционных пути решения этой задачи:
• не допускать дублирования записей непосредственно при вводе информации в базу данных;
• находить и устранять повторяющиеся записи из уже сформированной БД.
Напомним, что мы работаем с объединенным информационным банком, в котором собраны разнородные базы данных. Поэтому неудивительно, что для разных БД эта задача решается неодинаковыми средствами. В последующих главах мы покажем, как предотвратить дублирование сведений при вводе информации в базу данных, используя средства языка Visual Basic. А сейчас речь пойдет о том, как удалять повторяющиеся записи с помощью стандартных запросов.
Когда информация вводится в оперативном режиме из различных источников, в базу данных тоже могут попасть сведения, дублирующие друг друга. Прежде чем удалить такие записи, их надо найти. Следовательно, решение проблемы включает два этапа – поиск повторяющихся записей и их удаление.
Запрос на поиск повторяющихся записей
Начнем с таблицы ES_OPER. В окне базы данных откройте вкладку Запросы и щелкните по кнопке