Выберите и добавьте две таблицы: Фирмы и Страны. Данные из этих таблиц появятся в бланке запроса почти в том же виде, в каком они представлены в режиме конструктора (см. рис. 11.79). Если вы не установите явную связь между двумя таблицами по коду страны, то в результате будет выведен полный набор имеющихся значений: все фирмы и страны независимо от того, в какой стране находится та или иная фирма. Чтобы упорядочить информацию, лучше обозначить связь между таблицами, что вы и видите на рис. 11.79. Если потребуется перейти из этого режима в режим таблицы, щелкните по кнопке
(Показать/спрятать таблицы). Режим таблицы отображен на рис. 11.80.
Теперь предположим, что нужен список фирм, работающих в России. Иными словами, вы собираетесь создать запрос на выборку. Для этого воспользуйтесь кнопкой
На экране появится бланк запроса с перечнем условий отбора. Задайте в поле Страна критерий Россия, как показано на рис. 11.81. Затем, как обычно, с помощью кнопки
отправьте запрос на выполнение. (Отметим только, что в данном случае знакомая вам кнопка называется иначе – Запросить сейчас.) Результирующая таблица, которая содержит отобранные записи, приведена на рис. 11.82. Сохраните запрос, как делали это раньше. Теперь его можно вызвать и реализовать посредством кнопки
(Вызвать запрос). И последнее: если вы щелкнете по кнопке
(Показать SQL), то получите текст запроса на языке SQL (рис. 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 необходимо решить, какой режим запросов будет применяться, поскольку одновременное использование запросов, созданных в обоих режимах, может привести к ошибкам при выполнении или непредсказуемым результатам. Диапазоны типов данных, зарезервированные слова и подстановочные знаки в этих режимах различаются.
Пример запроса с использованием подстановочных знаков