Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ит

.pdf
Скачиваний:
19
Добавлен:
02.04.2015
Размер:
2.8 Mб
Скачать

91 3. Запустить запрос командой ЗапросЗапуск (кнопка панели инст-

рументов Конструктор запросов).

4. Сохранить запрос под именем Содержимое накладных.

Типы соединений нескольких таблиц

Если запрос включает несколько таблиц, то необходимо указать все свя-

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

тату. MS Access поддерживает четыре типа соединений:

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

2.Внешнее соединение для запроса, выводящего данные таблицы неза-

висимо от того, имеются ли соответствующие записи в другой таблице.

3. Рекурсивное соединение получается добавления в запрос копии таб-

лицы и связывания полей идентичных таблиц.

4. Соединение по отношению связывает данные некоторым отношени-

ем (за исключением равенства).

Для создания соединения следует:

1. Перетащить поле одной таблицы на поле другой таблицы. Появляется линия с точками по обеим сторонам, означающая, что связь между соединен-

ными полями в схеме данных не задана, их имена не совпадают, и они не явля-

ются первичными ключами.

2. Выполнить двойной щелчок мышью на линии связи.

Рис. 6.6. Окно Параметры объединения при изменении связи в запросе

3. В появившемся диалоговом окне Параметры объединения (рис. 6.6)

выбрать вариант объединения: 1 – обычное внутреннее соединение; 2 – левое

92

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

ным значением первичного ключа вне зависимости от того, имеются ли соот-

ветствующие им записи в дочерней таблице); 3 – правое внешнее соединение

(выводит все записи дочерней таблицы).

Упражнение 3. Создать запрос содержащий список заказчиков, у кото-

рых физический адрес и адрес доставки совпадают (внутреннее соединение по нескольким полям). Для решения необходимо:

1.Перейти к созданию запроса в режиме Конструктора.

2.С помощью диалогового окна Добавление таблицы внести в бланк запроса таблицы Доставка, Заказ, Заказчик.

3.В бланк запроса внести все необходимые поля согласно рис. 6.7.

4.Изменить имя поля Адрес таблицы Доставка на Адрес_доставки. Для изменения нужно в бланке запроса в строке Поле перед старым именем вписать новое, разделив их знаком двоеточия: Новое_имя:Старое_имя.

5.Перетащить поле Адрес таблицы Доставка на поле Адрес таблицы

Заказчик в Области запроса (внутреннее соединение).

6. Запретить вывод одинаковых строк (в диалоговом окне Свойства за-

проса в строке Уникальные значения поставить Да).

7. Сохранить запрос под именем Список совпадений адресов.

Рис. 6.7. Внутреннее соединение по нескольким полям

8. Запустить запрос на выполнение.

93

Запросы с параметром

Запрос с параметрами используется для повторения запроса с другими значениями. При его выполнении выдается диалоговое окно «Введите значение параметра», в котором надо ввести ключевое слово/фразу отбора данных. Для создания запроса с параметром необходимо в режиме Конструктора:

1. Указать в Условии отбора ключевую фразу, заключенную в квадрат-

ные скобки (например, [Предмет]). Она будет выдаваться в виде приглашения при выполнении запроса.

2. Указать тип данных для проверки значений, вводимых в качестве па-

раметра запроса командой основного меню ЗапросПараметры (по умолча-

нию – Текстовый). В столбец Параметр (рис.6.8) вводится название параметра без квадратных скобок, а в столбце Тип данных указывается тип значений.

Рис. 6.8 Окно Параметры запроса

В одном запросе можно ввести несколько параметров. При его выполне-

нии для каждого параметра будут выводиться диалоговые окна «Введите зна-

чение параметра» в том порядке записи параметров бланке запроса.

Упражнение 4. Создать запрос содержащий список заказчиков, номера заказов, оплату, даты выписки и исполнения. Добавить параметр указывающий название фирмы (левое внешнее соединение с параметром). Для этого надо:

1.Перейти к созданию запроса в режиме Конструктора.

2.Добавить в область таблиц запроса таблицы Заказ и Заказчик.

3.В бланк запроса внести все необходимые поля согласно рис. 6.9.

4.Для добавления параметра в строку Условие отбора ввести текст со-

общения в прямоугольных скобках: [Введите название фирмы заказчика]

5.Сохранить запрос под именем Заказчики и заказы.

6.Запустить запрос на выполнение.

94

Рис. 6.9. Левое внешнее соединение

Упражнение 5. Создать запрос выбирающий заказы, у которых совпада-

ют даты выписки и исполнения (рекурсивное соединение). Для получения ре-

курсивного соединения в запрос необходимо:

1. Добавить копию таблицы Заказ, а затем создать соединение между полями Дата_выписки и Дата_исполнения (рис. 6.10).

Рис. 6.10. Рекурсивное соединение

2. Для запрета вывода одинаковых строк поставить Да в строке Уни-

кальные значения в диалоговом окне Свойства запроса.

3.Запрос сохранить под именем Исполнение в день выписки.

4.Запустить запрос.

95

Использование условий отбора

Условия отбора используются для выбора записи, состоят из выражений

(формул фильтрации данных). При вводе выражений условий отбора следует пользоваться операторами. Примеры и назначение некоторых операторов:

Оператор

Название

 

 

= , <>

равно / не равно

 

 

> , <

Больше / меньше

 

 

>= , <=

больше или равно / меньше или равно

 

 

Like

как (совпадение)

 

 

Not

Не (несовпадение)

 

 

Between

между (задание промежутка)

 

 

Or

или

 

 

Упражнение 6. Составить запрос, выводящий список фирм-заказчиков,

имеющих разный физический адрес и адрес доставки. Для этого следует:

1.Перейти к созданию запроса в режиме конструктора.

2.Добавить таблицы Заказчик, Заказ и Доставка.

3.В бланк запроса внести все необходимые поля согласно рис. 6.11.

Рис. 6.11. Соединение по отношению

4.Изменить название поля Адрес таблицы Доставка на Адрес_доставки.

5.В строку Условие отбора поля Адрес_доставки ввести условие:

<>[Заказчик].[Адрес]

6. Сохранить запрос под именем Несовпадение адресов.

96 7. Запретить вывод одинаковых строк в диалоговом окне Свойства за-

проса (значение Да в строке Уникальные значения). 8. Запустить запрос. Закрыть запрос.

Построение выражений

Для построения выражений служит любой пустой столбец бланка запро-

са, в котором после имени поля записывается выражение

(Имя_поля:Вычисляемое_выражение). В него входят заключенные в квад-

ратные скобки названия таблиц (полей) и знаки математических операций. Для разделения имен таблиц и имен полей используется ! (например, Сум-

ма:[Товар]![Цена]*[Заказ]![Количество]). Комбинация клавиш SHIFT+F2 от-

крывает окно Область ввода для записи длинных формул.

Для создания сложных формул используется окно Построитель выра-

жений, которое вызывается нажатием кнопки на панели инструментов.

Рис. 6.12 Окно построителя выражений В нижней части окна содержатся три столбца: 1) список папок с таблица-

ми, запросами, встроенными функциями; 2) объекты выделенной папки; 3) спи-

сок значений выбранного объекта.

В средней части отображается панель инструментов, содержащая наибо-

лее распространенные арифметические и логические операторы. Весь список доступных операторов находится в папке Операторы в нижней части окна.

Верхняя часть окна содержит поле ввода выражения, элементы которого либо записываются вручную, либо выбираются из папок (двойным щелчком).

97

В выражениях применяют следующие функции:

AVG() – среднее арифметическое чисел, содержащихся в указанном поле запроса (нельзя применять для текстовых полей, поля MEMO и объекта OLE.

COUNT() – Количество непустых записей запроса (все типы полей).

FIRST() – возвращает значение поля из первой записи результирующего набора (все типы полей)

LAST() – возвращает значение поля из последней записи результирую-

щего набора (все типы полей)

MAX() – находит максимальное из значений, содержащихся в указанном поле (нельзя применять для текстовых полей, поля MEMO и объекта OLE).

MIN() – Находит минимальное из значений, содержащихся в указанном поле (нельзя применять для текстовых полей, поля MEMO и объекта OLE).

STDEV(), STDEVP() – возвращает смещенное и несмещенное значение среднеквадратичного отклонения, вычисляемого по значениям, содержащимся в поле (нельзя применять для текстовых полей, поля MEMO и объекта OLE).

SUM() – сумма значений, содержащихся в указанном поле (нельзя при-

менять для текстовых полей, поля MEMO и объекта OLE)

VAR(), VARP() – возвращает значение смещенной и несмещенной дис-

персии, вычисленной по значениям, содержащимся в указанном поле (нельзя применять для текстовых полей, поля MEMO и объекта OLE).

Упражнение 7. Создать запрос, в котором вычисляется стоимость от-

дельного товара в заказах. Для этого необходимо:

1.Перейти к созданию запроса в режиме конструктора.

2.Добавить таблицы Заказ, Заказчик, Артикул_заказа и Товар.

3.В бланк запроса внести все необходимые поля согласно рис. 6.13.

Рис. 6.13. Запрос с вычисляемым полем

4. В пустом поле ввести формулу:

Стоимость: Товар!Цена*Артикул_заказа!Количество

5.Сохранить запрос под именем Стоимость товара по заказам.

6.Запустить запрос. Закрыть запрос.

98

Упражнение 8. Создать запрос, получающий суммарную стоимость то-

варов, оформленных в заказах. Для этого:

1. Вызвать запрос, созданный в упражнении 7 и сохранить его под име-

нем Суммарная стоимость командой ФайлСохранить как.

2. Убрать поля: Название (таблица Заказчик) и Код_заказа (таблица

Товар). Для этого надо выделить поле и нажать клавишу Delete.

3. Выполнить команду Вид Групповые операции (кнопка на панели инструментов Конструктор запросов) для добавления поля Групповая опе-

рация в бланк запроса (рис. 6.14).

Рис. 6.14. Запрос с вычисляемым полем и групповой операцией

4. Установить для поля Групповая операция в бланке запроса следую-

щие значения для соответствующих полей: Название Группировка; Количе-

ство Sum; Стоимость Sum.

5. Запустить запрос. Закрыть запрос.

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

Запросы на создание таблицы позволяют создавать таблицы из результа-

тов какого-либо запроса. Как правило, этот тип запросов используется для экс-

порта данных в другие приложения либо в другую БД.

Упражнение 9. Создать таблицу Адрес_доставки с информацией о кли-

ентах, имеющих разные физический адрес и адрес доставки. Для этого:

1.Вызвать запрос на выборку, созданный в упражнении 6.

2.Сохранить его под именем Создание таблицы командой

ФайлСохранить как.

3. Воспользоваться командой Запрос Создание таблицы основного меню (кнопкой Тип запроса на панели инструментов Конструктор запро-

сов) и в появившемся ниспадающем меню выбрать

4. В появившееся диалоговое окно Создание таблицы ввести имя новой таблицы – Адрес_доставки (рис. 6.15).

99

Рис. 6.15. Диалоговое окно Создание таблицы

5.Сохранить запрос. Запустить запрос (при этом в БД создаётся новая таблица). Закрыть запрос.

6.В Панели объектов БД выбрать объект Таблицы и убедиться в по-

явлении новой таблицы с именем Адрес_доставки.

Запрос на добавление.

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

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

вы и имели одинаковый тип данных.

Упражнение 10. Добавить в таблицу Адрес_доставки записи о совпа-

дающих адресах заказчиков (запрос на добавление). Для решения необходимо выполнить следующие действия:

1.Вызвать запрос на выборку, созданный в упражнении 3 и сохранить его под именем Добавление в таблицу командой ФайлСохранить как.

2.Выбрать команду Запрос Добавление.

3.В открывшемся диалоговом окне Добавление указать таблицу, к кото-

рой будут добавлены записи – Адрес_доставки. 4. Сохранить запрос (рис. 6.16) в БД.

Рис. 6.16. Запрос на добавление

100 5. После запуска запроса на добавление данных к таблице в таблицу Ад-

рес_доставки добавляются новые данные, которые можно просмот-

реть/отредактировать, перейдя к таблице Адрес_доставки в окне БД.

Запрос на удаление.

Запросы на удаление позволяют удалить из таблицы записи, соответст-

вующие некоторым критериям. Перед удалением записей рекомендуется вы-

вести их, используя запрос на выборку, а затем этот запрос преобразовать в за-

прос на удаление. Все запросы на удаление помечаются в окне БД значком При выполнении запросов на удаление следует помнить, что удаление за-

писей в родительской таблице (со стороны «один»), которым соответствуют за-

писи в дочерней таблице (со стороны «многие»), нарушает условие целостно-

сти данных, поэтому связанные записи в таблице со стороны «многие» стано-

вятся «висячими». Для уничтожения данных необходимо использовать каскад-

ное удаление: сначала требуется удалить записи из таблицы с отношением

«многие», а затем из таблицы с отношением «один».

Упражнение 11. Удалить из таблицы Адрес_доставки записи, которые удовлетворяют следующим критериям: название фирмы заказчика содержит первую букву М либо букву о в середине названия и в физическом адресе фир-

мы (запрос на удаление). Для создания запроса следует:

1. Выбрать создание запроса в режиме конструктора и добавить таблицу,

из которой будут удаляться записи (в нашем случае Адрес_доставки).

2.Выбрать команду Запрос Удаление.

3.При переходе к режиму на удаление в бланке запроса исчезают строки Сортировка и Вывод на экран, а появляется строка Удаление.

4.Заполнить бланк запроса (рис. 6.17) и сохранить запрос под именем

Удаление строк.

Рис. 6.17. Запрос на удаление

5. После запуска запроса, записи в таблице удаляются навсегда. Для про-

смотра результата надо перейти к таблицеАдрес_доставки в окне БД.