Павел Дубнов - Access 2002: Самоучитель
Работа со средой Access 2002 без ее инсталляции
Подобная постановка вопроса может показаться несколько странной, однако она имеет определенные основания. Предположим, разработчик сначала создал базу данных в программной среде Access 2002, а затем установил эту БД на другой локальный компьютер, где не инсталлированы ни Access 2002, ни даже пакет Microsoft Office. Возникает естественный вопрос: может ли пользователь работать на таком компьютере с созданной базой данных? Оказывается, да, и в настоящем разделе мы расскажем, как этого добиться.
В главе 9 уже говорилось, что в большинстве СУБД использование языка SQL фактически является правилом. Наличие общепринятого языка позволяет стандартизировать работу приложений с источниками данных – различными СУБД. В Windows такую возможность обеспечивает Open Data Base Connectivity (ODBC) – стандартный набор функций, помогающих обрабатывать информацию на серверах баз данных SQL. Именно ODBC обеспечивает различным программам доступ к одному и тому же источнику сведений.
Принцип действия ODBC состоит в следующем. Чтобы то или иное приложение могло воспользоваться информацией из базы данных какой-либо СУБД, необходимо установить драйвер ODBC для баз данных конкретной СУБД. Для каждой СУБД должен быть установлен свой драйвер. Папка, где хранится этот драйвер, обычно так и называется – ODBC – и устанавливается вместе с загрузкой Windows. Драйвер ODBC – это динамически связываемая библиотека со стандартным интерфейсом, которая обеспечивает доступ к базам данных в определенном формате. Из любого приложения пользователь может легко связаться с любым из установленных драйверов ODBC и получить доступ к информации в базе данных, даже если СУБД, где была создана эта база, не инсталлирована на пользовательском компьютере.
В составе пакета Microsoft Office, начиная с самой первой версии, есть программа MS Query, обеспечивающая доступ к любым данным, для которых установлены драйверы ODBC. Отметим, что MS Query имеет собственный интерфейс и может функционировать отдельно от Microsoft Office. Мы воспользуемся программой MS Query, взятой из ранних, русифицированных редакций Microsoft Office, поэтому в настоящем разделе диалоговые окна будут выводиться на русском языке.
Рассмотрим работу с MS Query на конкретных примерах.
Сначала откройте папку MS Query, а в ней запустите программу (см. рис. 11.74). На экране появится основное диалоговое окно программы MS Query, показанное на рис. 11.75.
Рис. 11.74
Рис. 11.75
В нем следует воспользоваться кнопкой
(Открыть запрос). Так вы начнете формировать запрос на выборку данных из БД в Access 2002, не инсталлируя саму систему Access. Чтобы убедиться в этом, проведите небольшой эксперимент. Перенесите в какую-нибудь другую папку программу, которая запускает Access 2002, – Msaccess.exe. Тем самым вы блокируете запуск СУБД.
Итак, щелкнув по кнопке Открыть запрос, вы откроете окно Выбор источника данных (см. рис. 11.76). Здесь можно выбрать опцию MS Access Database, а затем щелкнуть по клавише Использовать. Однако сначала откройте окно Источники данных ODBC, показанное на рис. 11.77.
Рис. 11.76Рис. 11.77
Здесь приведен перечень тех СУБД и вообще файлов других форматов, к которым можно получить доступ с помощью ODBC. Система Access 2002 далеко не единственная в этом списке. Теперь щелкните по кнопке ОК. После обычной Windows-процедуры поиска нужного файла вы открываете базу данных db1.mdb и видите на экране знакомое окно Добавить таблицу (см. рис. 11.78).
Рис. 11.78Выберите и добавьте две таблицы: Фирмы и Страны. Данные из этих таблиц появятся в бланке запроса почти в том же виде, в каком они представлены в режиме конструктора (см. рис. 11.79). Если вы не установите явную связь между двумя таблицами по коду страны, то в результате будет выведен полный набор имеющихся значений: все фирмы и страны независимо от того, в какой стране находится та или иная фирма. Чтобы упорядочить информацию, лучше обозначить связь между таблицами, что вы и видите на рис. 11.79. Если потребуется перейти из этого режима в режим таблицы, щелкните по кнопке
(Показать/спрятать таблицы). Режим таблицы отображен на рис. 11.80.
Рис. 11.79Рис. 11.80
Теперь предположим, что нужен список фирм, работающих в России. Иными словами, вы собираетесь создать запрос на выборку. Для этого воспользуйтесь кнопкой
На экране появится бланк запроса с перечнем условий отбора. Задайте в поле Страна критерий Россия, как показано на рис. 11.81. Затем, как обычно, с помощью кнопки
отправьте запрос на выполнение. (Отметим только, что в данном случае знакомая вам кнопка называется иначе – Запросить сейчас.) Результирующая таблица, которая содержит отобранные записи, приведена на рис. 11.82. Сохраните запрос, как делали это раньше. Теперь его можно вызвать и реализовать посредством кнопки
(Вызвать запрос). И последнее: если вы щелкнете по кнопке
(Показать SQL), то получите текст запроса на языке SQL (рис. 11.83).
Рис. 11.81Рис. 11.82
Рис. 11.83
Таким образом, вы вошли в базу данных системы Access 2002 с помощью драйвера ODBC и получили возможность нормально работать. Примечательно, что вы не инсталлировали саму систему, но получили почти полную иллюзию того, что находитесь именно в ней.
Разные режимы формирования запроса SQL
В Access 2002 запросы SQL можно создавать в одном из двух режимов запроса ANSI SQL [16] :
• ANSI-89 описывает традиционный синтаксис SQL. Этот режим близок к спецификации ANSI-89 уровня 1, но не является совместимым с ANSI-89 уровня 1. Некоторые средства ANSI-89 SQL не реализованы, а подстановочные знаки удовлетворяют спецификации Visual Basic для приложений (VBA), но не спецификации SQL;
• в ANSI-92 имеются новые зарезервированные слова, правила синтаксиса и подстановочные знаки, расширяющие возможности создания запросов, фильтров и инструкций SQL. Этот режим близок к спецификации ANSI-92 уровня 1, но не является совместимым с ANSI-92 уровня 1. В данном режиме запроса содержится больше синтаксиса ANSI, а подстановочные знаки удовлетворяют спецификации SQL.
В Microsoft Access 2002 средства ADOX [17] позволяют создавать в программах запросы, использующие синтаксис ANSI-92 SQL. Однако любые созданные запросы оставались невидимыми в окне базы данных, поскольку не было средств работы с этим режимом через интерфейс пользователя. В Microsoft Access 2002 имеется возможность установить режим работы с запросами ANSI SQL через интерфейс пользователя в качестве режима по умолчанию для новой базы данных.
Причины использования ANSI-92 SQL
Использование ANSI-92 SQL может потребоваться в следующих случаях:
• предполагается будущее развитие приложения до проекта Microsoft Access, и нужно разработать запросы, которые будут выполняться с минимальными изменениями в базе данных Microsoft SQL Server SQL Server;
• необходимо воспользоваться преимуществами новых средств, отсутствующих в ANSI-89 SQL, таких как:
– изменение настроек безопасности с помощью инструкций SQL GRANT и REVOKE;
– использование предиката DISTINCT в ссылке статистической функции, например SUM(DISTINCT);
– использование предложения LIMIT TO nn ROWS для ограничения числа строк, возвращаемых запросом.
Причины использования запросов, созданных в разных режимах ANSI SQL
Два режима запросов ANSI SQL – ANSI-89 и ANSI-92 – являются несовместимыми. При создании базы данных Microsoft Access необходимо решить, какой режим запросов будет применяться, поскольку одновременное использование запросов, созданных в обоих режимах, может привести к ошибкам при выполнении или непредсказуемым результатам. Диапазоны типов данных, зарезервированные слова и подстановочные знаки в этих режимах различаются.
Пример запроса с использованием подстановочных знаков
Запрос с использованием подстановочных знаков в условиях отбора может в разных режимах возвращать разные результаты. Так, по-разному будут выполняться следующие запросы:
• запрос ANSI-89 SQL в базе данных, настроенной на режим запросов ANSI-92, например:
SELECT * FROM Фирмы WHERE Страна Like «U*»
В нем будут возвращены все фирмы из страны U*, а не из всех стран на U, поскольку звездочка (*) не является подстановочным знаком в ANSI-92 SQL; • запрос ANSI-92 SQL в базе данных, настроенной на режим запросов ANSI-89, например:
SELECT * FROM Фирмы WHERE Страна Like «U%»
В нем будут возвращены все клиенты из страны U%, а не из всех стран на U, поскольку знак процентов (%) не является подстановочным знаком в ANSI-89 SQL. Пример запроса с совпадающими именем поля и псевдонимом Если в запросе применен псевдоним, совпадающий с именем столбца в базе данных, и создается вычисляемое поле, использующее неоднозначное имя, то в двух режимах запрос будет возвращать разные результаты. Например: