Чтение онлайн

на главную - закладки

Жанры

Access 2002. Самоучитель
Шрифт:

В 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. Пример запроса с совпадающими именем поля и псевдонимом Если в запросе применен псевдоним, совпадающий с именем столбца в базе данных, и создается вычисляемое поле, использующее неоднозначное имя, то в двух режимах запрос будет возвращать разные результаты. Например:

SELECT Fiie1.Kpoмe того, AS Последствия, Fiie1.Последствия, [Последствия]*1.2 AS [Оценка материального ущерба] FROM Fiie1;

В режиме ANSI-92 SQL Microsoft Access рассчитывает значение Оценка материального ущерба, используя поле Последствия, и увеличивает каждое значение в этом поле на 20 %. В режиме ANSI-89 SQL Microsoft Access рассчитывает значение Оценка материального ущерба, используя псевдоним Последствия, и в результате увеличивает каждое значение поля Кроме того на 20 %. Очевидно, что это далеко не одно и то же. Как избежать затруднений, связанных с одновременным использование разных режимов запросов ANSI SQL в одной базе данных

Советуем избегать следующих действий, чтобы не столкнуться с затруднениями, к которым приводит одновременное использование запросов, созданных в разных режимах ANSI SQL:

• преобразования баз данных Microsoft Access, настроенных на режим запросов ANSI-92 SQL, из формата файлов 2002 в формат файлов 2002 или 97. Режим запросов ANSI-92 SQL поддерживается только в формате файлов 2002;

• смены режима запросов ANSI SQL для текущей базы данных после создания одного или нескольких запросов. Если необходимо это сделать, заново протестируйте существующие запросы и перепишите их;

• импорта запросов, созданных в одном режиме запросов ANSI SQL, в базу данных Microsoft Access, настроенную на использование другого режима, или экспорта запросов, созданных в одном режиме запросов ANSI SQL, в базу данных Microsoft Access, настроенную

на использование другого режима;

• смены режима запросов ANSI SQL в существующем приложении. Это может нарушить выполнение приложения и потребовать его переработки. В Microsoft Access 2002 можно менять режим запросов ANSI SQL только программным образом, а любые запросы, созданные в режиме ANSI-92, оказываются скрытыми в окне базы данных. В Microsoft Access 2002 разработчик или пользователь может менять режим запросов ANSI SQL через интерфейс пользователя, а запросы ANSI-92 не являются скрытыми в окне базы данных. Поэтому необходимо предотвратить случайную или преднамеренную смену режима запросов ANSI SQL в приложении, защитив программу и запретив смену режима через интерфейс пользователя;

• использования неоднозначных псевдонимов и имен столбцов. Во избежание затруднений проверяйте, что псевдонимы и имена столбцов в инструкциях SQL являются уникальными.

Режим запросов ANSI SQL по умолчанию для новых баз данных Microsoft Access в форматах файлов 2002 и 2000 Режим ANSI-89 является настройкой по умолчанию для новой базы данных Microsoft Access в формате файлов 2002 и 2000. Невозможно установить режим запроса SQL ANSI-92 для новой базы данных в формате файла 2002, поскольку данный параметр отключен. Режим ANSI-89 является единственной доступной настройкой для базы данных в формате файла Microsoft Access 2002.

Резюме

1. Главной задачей языка SQL является конструирование запросов пользователя к базе данных. Поэтому по большей части программирование на языке SQL – это формирование таких запросов.

2. Основные типы запросов с использованием SQL:

– запрос на выборку;

– запрос на создание таблицы – создает новую таблицу на основе данных, которые уже размещены в одной или нескольких таблицах;

– запрос на удаление – удаляет все записи из одной или нескольких таблиц на основании критериев, заданных пользователем;

– запрос на присоединение – добавляет целые записи или только указанные поля в одну или больше таблиц;

– запрос на обновление – изменяет данные в существующих таблицах на основании информации в окне конструктора.

3. Запросы могут создаваться как с помощью конструктора запросов, так и посредством мастера запросов. На наш взгляд, конструктор удобнее: во-первых, его операции оформляются более наглядно, во-вторых, из конструктора легко переходить к инструкциям в форме SQL и наоборот. Тем не менее в этой главе были показаны и примеры построения запроса с использованием мастера запросов.

4. Возможна и третья форма представления запроса – инструкции SQL. Между запросом, сформированным посредством конструктора, и инструкцией SQL существует жесткая и однозначная связь.

5. В этой главе были подробно рассмотрены конкретные примеры формирования запросов различных типов:

– запросы с использованием групповых операций;

– запросы с дополнительными условиями;

– запросы с параметрами;

– запросы на создание таблицы;

– запросы на добавление записей в таблицу;

– запросы на удаление записей;

– запросы на обновление записей;

– перекрестные запросы;

– сложные запросы, формируемые на основе перечисленных.

Поскольку в большинстве СУБД использование языка SQL фактически является правилом, наличие общепринятого языка позволяет стандартизировать работу приложений с источниками данных – различными СУБД. В Windows такую возможность обеспечивает Open Data Base Connectivity (ODBC) – стандартный набор функций, помогающих обрабатывать информацию на серверах баз данных SQL. Именно ODBC обеспечивает различным программам доступ к одному и тому же источнику сведений, например СУБД, не требуя инсталляции этой СУБД. Так, в частности, возможны доступ и работа с данными, сформированными в Access, без инсталляции программы. В этой главе показан пример реализации такой возможности.

Поделиться:
Популярные книги

Возвышение Меркурия. Книга 13

Кронос Александр
13. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 13

Сирота

Ланцов Михаил Алексеевич
1. Помещик
Фантастика:
альтернативная история
5.71
рейтинг книги
Сирота

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Хроники Сиалы. Трилогия

Пехов Алексей Юрьевич
Хроники Сиалы
Фантастика:
фэнтези
9.03
рейтинг книги
Хроники Сиалы. Трилогия

Повелитель механического легиона. Том I

Лисицин Евгений
1. Повелитель механического легиона
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Повелитель механического легиона. Том I

Жена моего брата

Рам Янка
1. Черкасовы-Ольховские
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Жена моего брата

Темный Лекарь

Токсик Саша
1. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь

Седьмая жена короля

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Седьмая жена короля

Real-Rpg. Еретик

Жгулёв Пётр Николаевич
2. Real-Rpg
Фантастика:
фэнтези
8.19
рейтинг книги
Real-Rpg. Еретик

Измена

Рей Полина
Любовные романы:
современные любовные романы
5.38
рейтинг книги
Измена

Кротовский, побойтесь бога

Парсиев Дмитрий
6. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кротовский, побойтесь бога

Пограничная река. (Тетралогия)

Каменистый Артем
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Пограничная река. (Тетралогия)

Книга 5. Империя на марше

Тамбовский Сергей
5. Империя у края
Фантастика:
альтернативная история
5.00
рейтинг книги
Книга 5. Империя на марше

Как я строил магическую империю 4

Зубов Константин
4. Как я строил магическую империю
Фантастика:
боевая фантастика
постапокалипсис
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 4