Пока советуем согласиться с именем Поиск повторений для ES_OPER.
Запустив этот запрос на выполнение, вы получите выборку в виде таблицы (см. рис. 11.53). Здесь аккумулированы записи, в которых повторяются поля Дата ЧС, Код объекта и Виды ЧС, определенные выше в качестве критериев отбора. Как видите, таких записей всего 382, или 4,87 % от их общего числа – вполне правдоподобная оценка.
Рис. 11.53
Удаление повторяющихся записей
Если следовать формальной логике, при удалении записей нужно использовать запрос на удаление. Можно так и сделать, но это не идеальное решение. Попробуем разобраться.
Когда вы удаляете определенные записи с помощью соответствующего запроса, то должны ввести какие-то условия отбора. Эти критерии могут быть основаны либо на внешних признаках (нужно отобрать значение, которое равно, больше или меньше указанного числа или выражения), либо на определенном соотношении между полями одной записи (заданное соотношение должно соблюдаться во всех отфильтрованных записях). В условиях отбора не заложено сопоставление различных записей, а ведь именно это требуется при поиске дубликатов. Сформулировать критерии отбора так, чтобы они позволяли отследить именно повторяющиеся записи, не удается. Если же вы непременно хотите использовать для уничтожения дубликатов запрос на удаление, попробуйте следующий способ. Задайте в качестве условия удаления номер записи, который указывается в запросе, на поиск повторяющихся записей, как показано на рис. 11.53. (Вот почему поле Номер следует включить в итоговую таблицу повторяющихся записей!) Чтобы реализовать эту идею, в строке Условия отбора бланка запроса на удаление введите выражение типа:
N1 AND N2 AND N3 AND…
где:
• N1 – номер первой записи, которую следует удалить;
• N2 – номер второй записи, которую надо удалить;
• N3 – номер третьей записи на удаление и т. д.
Номера этих записей приведены в результирующей таблице повторяющихся записей (см. рис. 11.53). Однако учтите: вам придется либо вручную переносить номера из таблицы в запрос (при большом числе записей занятие малоприятное), либо писать для данной цели специальный макрос.
Тем не менее можно воспользоваться и другим способом. Мы не утверждаем, что он самый лучший, но в данном случае этот путь действительно проще, чем создание запроса на удаление. Нужно последовательно применить запросы на обновление и добавление записей. Итак, в чем суть нашей идеи?
В таблице ES_OPER создается новое поле – назовите его Условие отбора. Введите в него
Мы разработали стратегический план операции. Теперь начнем его реализовывать.
Ввод нового поля
Приступим к формированию и исполнению запроса на обновление. Сначала необходимо создать новое поле Условие отбора с помощью конструктора таблиц. Так как об этом подробно рассказывалось в главе 3, здесь мы приводим лишь результат работы: итоговый вид поля Условие отбора в конструкторе таблиц (см. рис. 11.54).