Павел Дубнов - Access 2002: Самоучитель
- Название:Access 2002: Самоучитель
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Павел Дубнов - Access 2002: Самоучитель краткое содержание
В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.
Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).
Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.
Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.
Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.
Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.
Access 2002: Самоучитель - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Когда информация вводится в оперативном режиме из различных источников, в базу данных тоже могут попасть сведения, дублирующие друг друга. Прежде чем удалить такие записи, их надо найти. Следовательно, решение проблемы включает два этапа – поиск повторяющихся записей и их удаление.
Запрос на поиск повторяющихся записей
Начнем с таблицы ES_OPER.В окне базы данных откройте вкладку Запросыи щелкните по кнопке
Затем в окне Новый запросвыберите позицию Повторяющиеся записи(рис. 11.49). Как видите, создаваемый запрос отличается от тех, что рассматривались ранее, – он строится с помощью мастера запросов. Последний содержит три шага, каждый из которых описывается своим окном.
Рис. 11.49
В первом окне (рис. 11.50) мастер просит определить таблицу или запрос, в котором надо найти повторяющиеся поля. Выберите таблицу ES_OPERи продолжите работу.
Рис. 11.50В следующем окне (см. рис. 11.51) надо указать повторяющиеся поля. Будем считать, что записи дублируют друг друга, если в них совпадает содержимое трех полей: Дата ЧС, Код объекта, Виды ЧС.Иначе говоря, мы исходим из того, что в один и тот же день на данном объекте не могут произойти две или более однотипные аварии. (Конечно, было бы проще поставить условием совпадение всех полей. Однако даже для записей аналогичного содержания это маловероятно: сообщения об одном и том же событии могут передаваться разными людьми и основываться на разных источниках информации. Отсюда неизбежность расхождений и просто ошибок.) Вы уже знаете, как открыть перечисленные поля в окне мастера запросов, поэтому здесь представлен лишь конечный результат.
Рис. 11.51После этого мастер откроет следующее окно (см. рис. 11.52), предлагая включить в запрос дополнительные поля. Рекомендуем добавить поле Номердля указания номера записи (чуть позже будет объяснена причина). В следующем окне мастер предложит согласиться с именем нового запроса.
Рис. 11.52Пока советуем согласиться с именем Поиск повторенийдля ES_OPER.
Запустив этот запрос на выполнение, вы получите выборку в виде таблицы (см. рис. 11.53). Здесь аккумулированы записи, в которых повторяются поля Дата ЧС, Код объектаи Виды ЧС,определенные выше в качестве критериев отбора. Как видите, таких записей всего 382, или 4,87 % от их общего числа – вполне правдоподобная оценка.
Рис. 11.53
Удаление повторяющихся записей
Если следовать формальной логике, при удалении записей нужно использовать запрос на удаление. Можно так и сделать, но это не идеальное решение. Попробуем разобраться.
Когда вы удаляете определенные записи с помощью соответствующего запроса, то должны ввести какие-то условия отбора. Эти критерии могут быть основаны либо на внешних признаках (нужно отобрать значение, которое равно, больше или меньше указанного числа или выражения), либо на определенном соотношении между полями одной записи (заданное соотношение должно соблюдаться во всех отфильтрованных записях). В условиях отбора не заложено сопоставление различных записей, а ведь именно это требуется при поиске дубликатов. Сформулировать критерии отбора так, чтобы они позволяли отследить именно повторяющиеся записи, не удается. Если же вы непременно хотите использовать для уничтожения дубликатов запрос на удаление, попробуйте следующий способ. Задайте в качестве условия удаления номер записи, который указывается в запросе, на поиск повторяющихся записей, как показано на рис. 11.53. (Вот почему поле Номерследует включить в итоговую таблицу повторяющихся записей!) Чтобы реализовать эту идею, в строке Условия отборабланка запроса на удаление введите выражение типа:
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с новым пустым полем Условие отбора.
Читать дальшеИнтервал:
Закладка: