В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.
Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).
Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.
Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.
Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.
Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.
Павел Юрьевич Дубнов
Access 2002
Об авторе
Дубнов Павел Юрьевич – кандидат технических наук, доцент кафедры математики и информатики Института международных экономических отношений (ИМЭО), г. Химки. Автор более 60 научных работ.
Область научных интересов – информатика и информационные технологии, автоматизированные системы управления и информационные системы, разработка математических моделей, статистическая обработка информации.
Введение
Автоматизированные банки данных уже давно стали неотъемлемой частью практически всех компьютерных систем управления на любом уровне – от отрасли до отдельного предприятия.
Однако проектирование и создание баз данных (БД) до сих пор остается, за редким исключением, не технической задачей, а творческим процессом, который скорее сродни искусству, нежели науке. Это утверждение может показаться несколько странным, поскольку разработка и исследование баз данных ведутся более 35 лет. Однако, как нам кажется, такой парадокс вполне объясним. За прошедшие годы неизмеримо вырос уровень потребительских качеств систем управления базами данных (СУБД): разнообразие поддерживаемых функций, удобный для пользователя интерфейс, сопряжение с программными продуктами, в частности с другими СУБД, возможности для работы в сети и т. д.
Но изменения почти не коснулись того, что раньше называлось логическими структурами баз данных. Это формы, в которых пользователь представляет и хранит свою информацию в БД. А ведь именно от них в немалой степени зависит удобство работы пользователя с базой данных: формулировка запроса, простота поиска данных, форма выдачи итоговой информации и другие операции. В современных БД могут использоваться более или менее удачные структуры, но почти никогда мы не найдем обоснованного ответа на вопрос, почему для конкретной базы данных была выбрана именно такая форма.
Однако к настоящему времени накоплен значительный опыт проектирования банков данных, предназначенных для управления производством. Это позволяет сделать процесс создания БД значительно более формализованным. (Правда, поле для субъективных решений, а значит, и для индивидуального творчества все равно остается, но его можно существенно сузить.)
Итак, речь идет об информации, которая формируется и накапливается в компьютерных банках данных. В условиях реальной производственной деятельности это понятие употребляется в двух различных значениях:
• информация, прежде хранившаяся на бумажных носителях и внесенная в новый банк данных, который создавался на основе какой-либо СУБД. Сюда же следует отнести и сведения, связанные с текущим производственным процессом. Они вводятся в банк данных в реальном масштабе времени;
• банк данных, который был создан ранее и используется до сих пор.
Постепенно разница между двумя названными типами данных стирается. С одной стороны, неизбежно появляется новая информация, которую надо структурировать и организовать в банке данных, и создаются новые СУБД, более удобные, чем прежние. С другой стороны, ранее накопленные сведения продолжают храниться в банке данных, который наверняка никто никогда не будет перестраивать. Обычно самое простое решение проблемы – конвертировать старые данные в новую СУБД, объединяя информационные массивы и решая возникающие при этом проблемы. В результате возникает новый банк данных, куда входят разные БД [1] . Все они имеют один формат данных (например, для Access – это. mdb), но сохраняют прежнюю структуру первичных файлов, таблиц и т. д. Иными словами, данные остаются в значительной мере разнородными, что осложняет дальнейшую работу с ними.
Поэтому после конвертации или интеграции разнородных баз данных в единую программную среду пользователю потребуется дополнительное (иногда специальное) программное обеспечение, чтобы обслуживать полученную БД.
До сих пор в специальной литературе рассматривалась только одна сторона задачи – создание новых баз данных. О том, как конвертировать собранную информацию в программную среду новой СУБД, написано значительно меньше. Наконец, мало внимания уделялось другой важной проблеме: какой должна быть единая программная среда и почему.
Настоящее издание призвано в какой-то степени ответить на перечисленные вопросы. Основная цель, которую ставил перед собой автор, заключается в практической направленности книги, рассмотрении некоторых часто встречающихся в практике работы ситуаций. В связи с этим сознательно оставлены в тени отдельные теоретические проблемы СУБД вообще и Access в частности. Этим обусловлена и структура книги:
· в главе 1 проблемы, анализируемые в книге, подробно рассматриваются на конкретных примерах. Кроме того, в данной главе объясняется, почему для решения стоящих перед пользователем проблем целесообразно использовать именно программную среду Access 2002;
· глава 2 посвящена методическим аспектам вопроса – разработке такой структуры данных, которая не будет зависеть от программной среды;
· в главах 3–6 рассматривается создание базы данных в программной среде Access 2002. Поскольку эта среда содержит элементы, которых не было в предыдущих версиях, приводятся необходимые пояснения;
· в главе 7 изучаются вопросы, связанные с конвертированием баз данных из других СУБД в Access 2002;
· глава 8 содержит общие сведения о проектах Microsoft Access 2002. С введением этой категории Access превращается в распределенную систему.
· в главах 9-12 рассматривается программирование в объединенном банке данных и его различные варианты: программирование на языках SQL и Visual Basic, а также с использованием макросов.
Соглашения
Структура книги подразумевает, что читатель может изучать ее последовательно или использовать как справочник. Небесполезно учесть следующее:
· курсивом выделяются термины, встретившиеся впервые;
· полужирным шрифтом отмечены элементы интерфейса операционной системы и рассматриваемых программ (пункты меню, заголовки диалоговых окон и пр.), а также клавиши;
· последовательно выполняемые команды меню записываются через стрелочку, например: Файл → Открыть;
· при обозначении сочетаний клавиш, которые следует нажимать одновременно, используется знак "плюс", например: Ctrl+O;
· моноширинным шрифтом отмечены коды программ;
· все Internet-адреса подчеркнуты.
Таким образом выделена особо важная информация, примечания, предупреждения.
Глава 1 Постановка проблемы
Сегодня никого нельзя удивить понятием "компьютерный автоматизированный банк данных". Это так же обычно, как передача сообщений по факсу или заказ билетов по телефону. Существует бесчисленное множество функционирующих банков данных, однако далеко не все они удобны в эксплуатации. Пользователю, работающему с банком данных, необходимо "умение" последнего быстро, гибко и в требуемой форме организовать и выдать информацию в ответ на любой запрос.
В этой книге подробно рассказывается обо всех проблемах, с которыми может встретиться разработчик баз и банков данных: начиная с логической структуризации и заканчивая написанием сложных макрокоманд. Особое внимание уделено вопросам интеграции разнородных баз данных в единый эффективно функционирующий информационный банк. Все решения показаны на примере реальной базы данных по чрезвычайным ситуациям, о содержимом и структуре которой рассказано в начале главы 2.
Режимы функционирования банка данных в производственных условиях
Как правило, имеются в виду следующие режимы функционирования банка данных:
• режим начальной загрузки, в котором исходная информация, содержащаяся в банке данных, вводится в соответствующие структуры БД;
• режим корректировки, в котором осуществляется обновление, добавление и удаление информации, находящейся в банке данных;
• режим диалога, в котором пользователи обращаются к банку данных и производится обработка запросов. Такие запросы могут предусматривать:
– только выдачу пользователю информации о тех или иных параметрах процесса. Эта информация в требуемом формате содержится в банке данных;
– решение поставленной задачи с использованием сведений, находящихся в банке данных;
• режим реорганизации и анализа, в котором выполняются операции, непосредственно связанные с поддержанием банка данных в рабочем состоянии:
– реорганизация структур БД;
– копирование и восстановление БД;
– анализ статистических данных, связанных с функционированием информационного фонда.
Пользовательские запросы к банку данных
Из всех перечисленных выше запросов для пользователя наиболее важен режим диалога, а остальные носят служебный, вспомогательный характер. Режим диалога позволяет формировать самые различные запросы и является первым и необходимым шагом к аналитической обработке информации.
Конечно, нельзя заранее предусмотреть все возможные варианты запросов. Назовем лишь самые характерные типы запросов пользователя к банку данных в порядке возрастания сложности:
• запросы на обработку данных, связанных с одной таблицей (выборка, удаление, корректировка и ввод данных);
• запросы на групповую обработку данных (сумма, среднее значение и т. д.), связанных с одной таблицей;
• запросы, при которых условием отбора записи является полное значение поля;
• запросы, при которых условием отбора записи является неполное значение поля;
• запросы с несколькими условиями отбора записей в разных полях;
• запросы с несколькими условиями отбора записей в одном поле;
• запросы с заданием параметров;
• запросы на создание объединенной выборки из нескольких разнородных таблиц и т. д.
Как уже говорилось, наличие в банке разнородных баз данных несколько усложняет работу. Подробнее этот вопрос рассматривается в следующих разделах.
Проблемы, связанные с выбором СУБД
Говоря о создании банка данных и его последующей работе в производственном режиме, надо определить, в какой программной среде он будет функционировать. Вопрос этот не так прост, и при его решении надо учитывать два существенных аспекта проблемы:
• для упорядоченного накопления и хранения поступающей информации приходится разрабатывать новые базы данных. Логично, что вы будете оценивать различные СУБД именно с этой точки зрения. Здесь не требуется особых комментариев;
• история использования компьютерных банков данных в СССР и в постсоветской России насчитывает более 35 лет, за этот период сменилось несколько поколений СУБД. Можно увлеченно спорить о том, насколько рациональным был этот процесс и какова эффективность той или иной конкретной СУБД. Однако важнее другое – хороши или плохи были эти системы, но в них аккумулировано значительное количество информации, которая используется в практических целях. Ясно, что с каждым годом объем таких данных возрастает.
Системы управления непрерывно совершенствуются. Мировой опыт показывает, что поколения СУБД сменяются примерно каждые 5 лет. Естественно, все более актуальным становится вопрос конвертирования данных, то есть перевода их в новую программную среду без потери информации. Решая, какую СУБД выбрать, обязательно учитывайте ее возможности конвертирования; они не менее важны, чем удобство разработки БД в данной программной среде.
Названным условиям удовлетворяет СУБД Access, входящая в состав комплексного программного продукта Microsoft Office. Последней версией этой системы на сегодняшний день является Access 2002, или Access ХР. Именно эта версия рассматривается в настоящем издании в качестве основной. Поэтому в дальнейшем мы не будем указывать индекс рядом с названием, говоря просто Access. Если же подразумевается какая-либо другая версия, например Access 97 или Access 2000, то она указывается с соответствующим индексом. Правда, на современном рынке много и других программных продуктов, успешно используемых в качестве платформы для банка данных. Поэтому сформулируем те критерии, на основании которых следует выбирать СУБД, и оценки Access по этим показателям [2] :
• количество ключевых (дескрипторных) полей, поддерживаемых в СУБД.
В Access ограничения на эту величину отсутствуют;
• ограничение на длину поля.
В Access данное ограничение составляет 255 байт для текстовых полей и до 255 байт – для числовых, в зависимости от типа поля;
• разнообразие типов обрабатываемых полей.
В Access имеются поля, содержащие текстовый и числовой типы данных. Эти типы, в свою очередь, представлены разными вариантами;
• дизайнерские возможности системы.
Наличие в Access мастеров и конструкторов позволяет достаточно быстро создавать таблицы, формы, отчеты, запросы. Добавление диаграмм в формы и отчеты, быстрая настройка программы и анализ ее быстродействия, использование архивариуса, возможность импорта и экспорта файлов, работа с гиперссылками и применение технологии OLE внутри пакета Microsoft Office;
• требования к уровню подготовки проектировщика и пользователя БД. Минимальные. Некоторые программные навыки нужны лишь в том случае, если придется использовать Visual Basic;
• язык программирования, операционная среда, сетевые возможности, требуемые ресурсы.
Язык запросов SQL, Visual Basic, операционная система Windows 98 или выше, а также Windows NT. При полной установке потребуется 26–30 Мбайт оперативной памяти и около 120 Мбайт памяти на жестком диске. Однако Access, как правило, устанавливается в составе программного комплекса Microsoft Office, и тогда требуется около 200 Мбайт памяти на жестком диске. Система Access обладает всеми современными сетевыми возможностями;
• язык представления данных, обработка символьной информации.
Имеются;
• поддерживаемые структуры и форматы данных.
В Access поддерживаются реляционные структуры данных;
• простота освоения системы, наличие русской версии документации.
Первичное освоение займет всего несколько дней. Имеется русифицированная версия Access в составе пакета Microsoft Office, а также русифицированная документация для пользователей различных уровней подготовки;
• поддерживаемый системой математический аппарат.
В Access он достаточно развит и включает операторы, функции, логические выражения и т. д. Более того, статус Access как органической составной части Microsoft Office позволяет легко пользоваться математическим аппаратом Excel;
• поддерживаемые системой возможности обработки и представления графической информации.
В Access поддерживаются операции с диаграммами. Поскольку эта СУБД встроена в пакет Microsoft Office, то пользователь может работать и с другими графическими объектами, входящими в состав данного пакета;
• возможности взаимодействия с другими пакетами прикладных программ (текстовыми редакторами, электронными таблицами, геоинформационными системами (ГИС) и др.).
В рамках пакета Microsoft Office можно работать с Word и Excel;
• возможности корректировки файлов, содержащих данные.
В Access это очень просто сделать;
• наличие русифицированной и достаточно подробной справочной системы, а также файлов Help (Помощь).
Такая справочная система есть, и она доступна из любого режима в любой момент;
• разнообразие и гибкость формируемых запросов на предоставление данных.
Система Access отвечает этому условию.
Наверное, приведенные выше оценки не дают оснований утверждать, что Access – идеальная СУБД. Однако безупречных СУБД вообще не существует. Сравним, к примеру, Access с такой системой, как Oracle. Последняя – СУБД гораздо более высокого класса, значительно превосходящая Access по своим возможностям. Но такие преимущества имеют и оборотную сторону: Oracle громоздка, сложна в освоении и требует для нормального функционирования специальные и очень мощные технические средства. Область применения Oracle – создание очень больших централизованных информационных систем. По-видимому, время их массового использования в России еще не наступило.
В то же время Access является весьма гибкой и универсальной системой, предъявляющей достаточно умеренные требования к техническому обеспечению. Поэтому на сегодняшнем этапе эта СУБД удобна для работы практически на всех иерархических уровнях управления производством – от отрасли в целом до отдельного предприятия.
Вопросы, рассмотренные в настоящей книге
Приведенные выше оценки относятся к версии Access 97. Как уже было сказано, на рынке появилась очередная версия этой СУБД – Access 2002 (Access ХР), обладающая более широкими возможностями. Поэтому при изложении материала автор учитывал:
• наличие в версии Access 2002 новых элементов по сравнению с Access 97;
• особенности, обусловленные использованием разнородных баз данных.