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

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

Жанры

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, без инсталляции программы. В этой главе показан пример реализации такой возможности.

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

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

"Искажающие реальность" Компиляция. Книги 1-14

Атаманов Михаил Александрович
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Школа. Первый пояс

Игнатов Михаил Павлович
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Школа. Первый пояс

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Аргумент барона Бронина 4

Ковальчук Олег Валентинович
4. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 4

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Измена. Право на обман

Арская Арина
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на обман

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Жаба с кошельком

Донцова Дарья
19. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
8.26
рейтинг книги
Жаба с кошельком

Бастард Императора. Том 11

Орлов Андрей Юрьевич
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11

Академия чаросвет. Тень

Ярошинская Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия чаросвет. Тень

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4