N1 AND N2 AND N3 AND…
где:
• N1 – номер первой записи, которую следует удалить;
• N2 – номер второй записи, которую надо удалить;
• N3 – номер третьей записи на удаление и т. д.
Номера этих записей приведены в результирующей таблице повторяющихся записей (см. рис. 11.53). Однако учтите: вам придется либо вручную переносить номера из таблицы в запрос (при большом числе записей занятие малоприятное), либо писать для данной цели специальный макрос.
Тем не менее можно воспользоваться и другим способом. Мы не утверждаем, что он самый лучший, но в данном случае этот путь действительно проще, чем создание запроса на удаление. Нужно последовательно применить запросы на обновление и добавление записей. Итак, в чем суть нашей идеи?
В таблице ES_OPERсоздается новое поле – назовите его Условие отбора.Введите в него конкатенацию полей. Конкатенация – это объединение текстуальных, числовых символов или дат в одной ячейке, которое осуществляется с помощью оператора & (амперсанда). В нашем случае следует ввести поля Дата ЧС, Код объектаи Виды ЧС,потому что именно они выше были заданы в качестве критериев отбора дублирующихся записей. При создании этого поля разрешается дублирование записей, поскольку они уже существуют. Затем надо скопировать структуру таблицы ES_OPER(без ее содержания) и в полученной копии в поле Условие отбораустановить запрет на дублирование информации. После этого в пустую таблицу следует добавить записи из исходной таблицы ES_OPER.Тем самым повторяющиеся записи исключаются, поскольку их ввод запрещен в поле Условие отбора.Чтобы завершить операцию, удалите исходную таблицу ES_OPER,а ее название присвойте скопированной таблице. Поле Условие отбораможно также удалить, но лучше его все-таки оставить, чтобы предотвратить дублирование записей в дальнейшем.
Мы разработали стратегический план операции. Теперь начнем его реализовывать.
Ввод нового поля
Приступим к формированию и исполнению запроса на обновление. Сначала необходимо создать новое поле Условие отборас помощью конструктора таблиц. Так как об этом подробно рассказывалось в главе 3, здесь мы приводим лишь результат работы: итоговый вид поля Условие отборав конструкторе таблиц (см. рис. 11.54).
Рис. 11.54
Как уже говорилось, в новом поле для исходной таблицы допускается дублирование: для свойства Индексированоустановлено значение Да(Дублирование разрешается). Когда вы будете сохранять это изменение в структуре таблицы, Access 2002 поделится с вами своими сомнениями относительно несовместимости внесенных изменений с существующими данными (см. рис. 11.55) и предложит подумать над продолжением работы при сохранении нового значения. Здесь возможны разные варианты ответа, показанные на рис. 11.55.
Рис. 11.55
Оставьте сомнения и смело отвечайте Да.В результате вы получите таблицу ES_OPERс новым пустым полем Условие отбора.
Запрос на обновление записей
Теперь сформируйте запрос на обновление, чтобы ввести в созданное поле Условие отбораконкатенацию полей – критериев, по которым идет поиск дублирующихся записей. Как обычно, сначала создайте запрос для таблицы ES_OPER.Чтобы не возиться с лишней информацией, оставьте в запросе только одно поле – Условие отбора.Затем, как и раньше, откройте меню Тип запросаи выберите опцию Запрос на обновление.В строку Обновлениевнесите конкатенацию: [Дата ЧС] & [Код объекта] & [Виды ЧС] (рис. 11.56).
Рис. 11.56
Обратите внимание, что имена полей необходимо заключить в квадратные скобки, иначе вместо значений полей будут введены их названия. Если вы теперь отправите запрос на выполнение, то в поле Условие отборабудут включены совокупные значения полей, полученные после их объединения. На рис. 11.57, где представлена часть таблицы ES_OPER,показан результат операции.
Рис. 11.57
И снова запрос на добавление
Наконец, завершая работу по удалению повторяющихся записей, скопируйте ES_OPERв новую таблицу, где в поле Условие отборабудет задан запрет на дублирование. Для этого в окне базы данных выделите таблицу ES_OPERи последовательно щелкните по кнопкам
(Копировать) и
(Вставить). В окне Вставка таблицы(рис. 11.58) укажите имя новой таблицы – ES_OPER1.
Рис. 11.58
В этом же окне выберите в разделе Параметры вставкиопцию Только структура.Когда вы щелкнете по кнопке ОК,в окне базы данных на вкладке Таблицыпоявится имя новой таблицы – ES_OPER1.Откройте ее в режиме конструктора и измените то свойство поля Условие отбора,которое касается запрета на повторение записей (рис. 11.59). Сравните значение этого свойства, установленное для скопированной таблицы, с аналогичным значением для исходной таблицы (см. рис. 11.54).
Читать дальше
Конец ознакомительного отрывка
Купить книгу