Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
база данных.docx
Скачиваний:
167
Добавлен:
24.03.2015
Размер:
5.83 Mб
Скачать

10.6. Использование языка sql

Для построения и выполнения произвольной запросной функции в Access очень удобным и доступным яв 1яется язык запросов по образцу QBE, под­держанный мощным интерфейсом пользователя. Язык SQL в некотором роде скрыт от пользователя, хотя весьма важен при составлении VBA-npoiрамм в приложениях Access. В этом подразделе опишем, как используется язык SQL в различных объектах БД Access. Краткая справочная информация по реали­зованному в Access диалекту SQL приводится в Приложении 2.

Особенности применения запросов SQL

Напомним, что запросом SQL называют запрос, создаваемый с помощью инструкции SQL. Примерами запросов SQL являются запросы на объедине­ние, запросы к серверу, управляющие и подчиненные запросы.

Запрос на об единение — это такой запрос, в котором объединяв тс я поля (сто. (бцы) одной или нескольких таблиц или запросов в одно поле или столбец в результирующем наборе записей. ] 1апример, шесть продавцов каждый месяц представляют руководству описи имеющихся товаров. Создав запрос на объе­динение, можно объединить эти описи в результирующем наборе записей, а затем разработал ^ запрос на создание таблицы, основанный иг запросе на объе­динение.

Запрос к i ерверу выполняет передачу через ODBC команд SQL-серверу, например, Microsoft SQL Server. Запросы к серверу позв эляют непосредствен­но работать с таблицами на сервере вместо их присоединения. Результатом выполнения запроса к серверу может быть загрузка записей или изменение данных

Управляющий запрос создает или изменяет объекты ба.лы данных, такие как таблицы Access или SQL Server.

Подчиненна ш запрос состоит из инструкции SQL SELECT находящейся внутри другого запроса на выборку или запроса на изменение. Эти инст рук­ции вводятся в строку «Поле» бланка запроса для определения нового поля или в строку «Условие отбора» для определения условия отбора по ля. Под­чиненные запросы используются для выполнения следующих действий:

  • поогерка в подчиненном запросе сущес твования некоторых результатов с помощью зарезервированных с лов EXISTS или NOT EXISTS;

  • поиск в главном запросе любых значений, которые равны, больше или меньше значений, возвпащаемых в подчиненном запросе (с помощью за­резервированных слов ANY, IN или ALL);

  • создание подчиненных запросов вну три подчиненных запросов (вложен­ных подчиненных запросов).

f

Язык SQL в Access может применят ься при разработке экранных форм, отчетов, а также при создании макрокоманд и npoi рамм на VBA.

Связь языков QBE и SQL

В Access между языками QBE и SQL имеется тесная t вязь. Запросные таб­лицы (бланки, формы) на языке QBE, заполняемые пользователем, перед непосредственным вычолш нием преобразуются в выражения (или сообще­ния) SQL. То есть язык SQL является внутренним стандартом на выполне­ние запросов. Такой механизм имеет преимущество, поскольку позволяет внутри системы Access унифицировать под^товку запросов к выполнению на локальном и удаленном компьютерах. В последнем случае SQL-сообще­ние реально передает» я к компьютеру-серверу запроса.

В Access запрос может находиться в одном из трех режимов (состояний): Конструктора, SQL и таблицы. Режим Конструктора применяют для разра­ботки нового запрос? с чистого листа (без использования Мастеров иди дру­гих средств) или д ля изменения макета существующего запроса. Режим SQL применяют для ввода или просмотра инструкций SQL. Режим таблицы при­меняют для работы с результат ами выполнения запроса.

В режим таблицы запрос переходит при выборе нужного запроси во вклад­ке Запросы (Queries) окна БД и нажатии кнопки Открыть (Open). Нажатие кнопки Конструктор (Design) или Создать (New) в окне БД пер< водит зап pot в режим Конструктора. В режим SQL можно попасть из других режимов по команд.3 основного меню Вид | Режим SQL (View | SQL).

Приведем пример состояний для одного и того же запроса. Предположим, мы открыли БД «Борей», в которой нас интересует запрос под названием «Деся гь самых дорогих товаров» (рис. 10.22).

Рис. 10.22. Окно примера БД «Борей:

Писле открытия запроса можно увидеть результат его выполнения (рис. 10.23).

gp Десять самых дорогих товаров запрос на выбо... Hill1

ьаиыеДомогиеТовары

Цена

v t ^^H^^I^H^H

1 185 750 .OOp

Thuringer Rostbratwurst

557 055,0011

Mishi Kobe Niku

43d 500 ,00P

Sir Rodney's Marmalade

364 500,00p

Carnarvon Tigers.

281 250,00^

Raciette Courdavault

247 500.OOp

Mannmup Dried Apjales

i3B500.ОПр

Tarte du sucre

221 850,00р.

Ipoh Coffee

207 000.OOp

Rossle Sauerkraut

205 200,00p

Запись. н| < || 1 ► 1м1>*| Всего: 1Р

Рис. 10.23. Результат выполнения запроса «Десять самых дорогих товаров»

Перейдя ь режим Конструктора, видим структуру запроса в виде бланка QBE фис 10.24).

sip® Десять самыг дорогих товаров : запрос на выборку

КцаТавара

Марка КодПоставщ КодТипа т j

wm

Цена

~ л.

Товары

Товары

по убыванию

M

м

и

ILL

±Г

Поле. Имя таблицы. Сортировка. Вывш на экран: Услстие отборь.

или.

Рис. 10.24. Запрос на языке QBE

В режиме SQL в окне отображается формулировка запроса в виде инст­рукций на языке SQL (рис. 10.25).

! jp Десять самых дорогих товаров : запрос на выборку

MJnte,

SELECT DISTINCTROW ТОР 10 Товары.МаркаAS

а

СамыеДорогиеТовары, Товары.Цена

FROM Товары

ORDER BY Товары.ЦенаDESC;

-J

Рис. 10.25. Запрос на языке SQL

SQL в формах и отчетах

Основными источниками записей в игранных Формах и отчетах являются таблицы и запросы. Во втором случае запросом может быть готовый запрос к БД или создаваемый при разработке формы или отчета. Описать ноьый зап­рос как источник записей при разработке формы или отчета в режиме Конст­руктора можно следующим образом.

  1. Открыть окно базы данных и на вкладк^ Формы (Forms) или Отчеты (Reports) нажать кнопку Создать (Mew).

  2. В очередном окне выбрать режим создания объекта с помощью Конст­руктора и нажать ОК.

  3. В окне создания новой формы или отчета подвести курсор мыши к за­головку окна и в контекстном меню выбрать пункт Свойства (Properties).

  4. В появившемся окне Форма (Form) или Отчет (Report) на вкладке Дан­ные (Data; определи гь источник записей с помощью SQL-зыpaж( ния. вводимого в поле ввода свойства «Источник записей», или с помощью Построителя запросов, вызываемого нажатием кнопки напротив поля ивода SQL-выражения. При вызове Построителя запросов появляется окно добавления таблиц и запросов в модель запроса (рис. 10.26).

  5. Ввести нужные таблицы/запросы в схему запроса-источника записей, получив тем < амым формируемый запро<, возможный вид которого по­казан на рис. 10.27.

Добавление таблицы

Щ Т эблицы ' dp Запросы ] |Ц| Таблицы и запросы |

оставкз

Заказано

Наказы

клиенты

Поставщики

Сотрудники

Типы

?| XI

Добавить Закрыть

Т авары

Рис. 10.26. Окно добавления таблиц и/или запоосов

Инструкция SQL : построитель запросов

Постсзшики

КццПосгавщ

Название Обращаться! Должность jrj

1

ж

L

13

КадТс -ipa

Марка КодПоставш КодТипа tJ

Kqi Товара

Марка

Название

Телефон

Товары

Товары

Поставщики

Поставщик^—

И

м

м

м

* 1 1

чг

■1Г

Поле Имя таблицы: Сортировк Вывод нэ экран. Условие отбора или:

Рис. 10.27. Вид формируемого запроса

От этого запроса легко перейти к SQL-выражению одним из описанных способов, например, по команде Вид | Режим SQL (View | SQL).

SQL в макрокомандах

Макрокоманды входят в состав макросов, которые используются для ав­томатизации выполнения часто повторяющихся действий в работе с БД. Макрос представляет собой одну или несколько макрокоманд с аргумент а ми.

Макросы вызываются из окна БД или автоматически при наступлении определенных событий. В последнем случае требуется связать макрос с нужным событием. Событием, по которому вызывается макрос, может быть, например, нажатие кнопки в области экранной формы или откры­тие окна БД.

Наряду с выполнением некоторых действий над обьектами БД макросы могут вызывать другие макросы, программы на Visual Basic и внешние при­ложения.

Из множества макрокоманд (около 50) с SQL непосредственно связаны две макрокоманды: 3anycK3anpocaSQL (RunSQL) и ОткрытиЗаприс (OpenQuery).

Макрокомандп 3anycK3anpocaSQL запускает запрос на изменение или уп равляющий запрос Access с помощью соотьетствующей инструкции SQL. Эта макрокоманда делает возможным ьыполнение действий в макросе без пред­варительного создания сохраненных запросов. С помощью макрокоманды можно выполнять и сохраненные запросы.

Запросами на изменение являются инструкции SQL (подраздел 3.9), ре­ализующие следующие функции: добавление (INSERT INTO), удаление (DELETE), создание таблицы (SELECT...INTO) и обновление (UPDATE).

Управляющими запросами являются инструкции SQL, выполняющие сле­дующие функции: создание таблицы (CREATE TABLE), изменение таблицы (ALTER TABLE), удаление таблицы (DROP TABLE), создание индекса (CREATE INDEX) и удаление индекса (DROP INDEX).

Единственным и обязательным аргументом макрокоманды 3anycK3anpocaSQL являет ся инструкция SQL. Максимальная длина инструк­ции SQL составляет 255 символов. Для выполнения инструкции SQL дли­ной более 255 символов следует вызвать метод RunSQL объекта DoCmd в программе VBA. В программах VBA допускается использование инструкций SQI. длиной до 32768 символов.

Аргумент макрокоманды в виде текста SQL-инструкции вводится вруч­ную в окне ввода макрокоманды или копируется из окна SQL, что часто удобнее. Для выполнения последней манипуляции можно поступить так: войти в режим Конструктора запросов, создать запрос, получить эквива лентный оператор SQL, выделить его и поместить в буфер обмена. При­мер готовой к выполнению макрокоманды с оператором SQL приведен на рис. 10.28.