- •Оглавление
- •1. Запуск access
- •2. Создание новой бд
- •3. Таблицы
- •3.1. Создание структуры таблицы
- •3.2. Загрузка таблицы данными
- •3.3. Модификация структуры таблицы
- •3.4. Работа с макетом таблицы
- •3.5. Схема данных
- •3.6. Печать таблицы
- •4. Запросы
- •4.1.Типы запросов
- •4.2.Создание qbe-запроса
- •4.3. Заполнение бланка запроса
- •4.4. Работа с построителем выражений
- •4.5. Редактирование запроса
- •4.6. Печать динамического набора данных
- •4.7. Примеры запросов
- •4.7.1. Запрос на выборку данных
- •4.7.2.Запрос с параметром (параметрический запрос)
- •4.7.3. Запрос на создание таблицы
- •4.7.4. Запросы на изменение данных
- •4.7.4.1. На добавление записей
- •4.7.4.3. Запрос на обновление (корректировку) данных
- •4.7.5. Группирование данных в запросе
- •4.7.6. Перекрестный запрос
- •4.7.7. Подчиненные (вложенные) запросы
- •4.8.Фильтрация данных
- •Фильтр по выделенному фрагменту данных
- •Фильтр для
- •5. Формы
- •5.1. Создание однотабличной формы
- •5.2. Редактирование формы
- •5.3. Часто используемые свойства формы
- •5.4. Элементы управления и их свойства
- •6. Отчеты
- •6.1. Создание отчета
- •6.2. Работа с отчетом в режиме конструктора
- •6.3. Сортировка и группировка данных
- •7. Макросы
- •7.1. Создание макросов
- •7.2. Краткая характеристика макрокоманд
- •7.3. Групповые макросы
- •7.4. Реализация ветвлений в макросах
- •7.4.1. Примеры макросов с односторонним ветвлением
- •7.4.2. Пример макроса с двусторонним ветвлением
- •7.5. Реализация циклов в макросах
- •8. Основы создания пользовательского интерфейса
- •8. 1. Взаимодействие форм
- •Интерфейс.Открыть просмотр
- •Интерфейс.Открыть редактирование
- •Интерфейс.Закрыть просмотр
- •8. 2. Создание кнопочных меню с помощью диспетчера кнопочных форм
- •8. 3. Создание пользовательских меню
- •8. 3.1. Создание пользовательских меню с помощью макросов
4.7.6. Перекрестный запрос
Пример 13.
Создание многотабличного QBE - запроса:
создать запрос на выборку данных из таблицы Детали и Поставки, отобразив в динамическом наборе поля: номерп, имяд, количество.
преобразовать запрос на выборку в перекрестный запрос: Запрос/Перекрестный
отобразить в строке Групповая операция для полей номерп и имяд слово Группировка, Sum для поля количество.
отобразить в строке Перекрестная таблица Заголовки столбцов для поля номерп, Заголовки строк для поля имяд и Значение для поля количество.
Соответствующий SQL-запрос:
TRANSFORM Sum(Поставки.количество) AS [Суммарное количество]
SELECT Детали.имяд
FROM Детали INNER JOIN Поставки ON Детали.номерд = Поставки.номерд
GROUP BY Детали.имяд
PIVOT Поставки.номерп;
В результате выполнения запроса получим таблицу:
имяд |
1 |
2 |
3 |
4 |
5 |
болт |
150 |
150 |
|
50 |
150 |
гайка |
120 |
|
100 |
|
150 |
ролик |
|
150 |
150 |
150 |
150 |
шайба |
|
200 |
150 |
|
|
4.7.7. Подчиненные (вложенные) запросы
Типы подчиненных запросов:
запросы, использующие сравнения, синтаксическая конструкция которых может быть такой: [ANY(любой)ALL (все)SOME(некоторые)] (инструкция SQL)
запросы, содержащие предложения, синтаксическая конструкция которых может быть такой: выражение [NOT] IN (инструкция SQL)
запросы, содержащие предложения, синтаксическая конструкция которых может быть такой: [NOT] EXISTS (инструкция SQL)
Пример 14.
Отобрать из таблицы Детали детали, которые стоят столько же, сколько болт. Эту задачу можно решить с помощью однотабличного подчиненного запроса.
Создание QBE - запроса:
создать запрос на выборку данных из таблицы Детали, отобразив в динамическом наборе данных все поля.
в строку Поле вынести отдельно поле цена, для которого выключить флажок Вывод на экран
В строке Условие отбора написать (SELECT цена FROM Детали WHERE имяд=“болт”).
Соответствующий SQL-запрос:
SELECT Детали.*
FROM Детали
WHERE ((Детали.цена=(SELECT цена FROM Детали WHERE имяд="болт")));
Пример 15. Из таблицы Сотрудники(фамилия, имя, должность, зарплата) отобрать сведения о продавцах, зарплата которых превышает зарплату всех начальников и директоров.
Создание QBE-запроса:
создать запрос на выборку данных из таблицы Сотрудники, отобразив в динамическом наборе данных все поля.
в строку Поле вынести отдельно поля должность и зарплата, для которых выключить флажок Вывод на экран
В строке Условие отбора для поля должность написать LIKE “продавец*”, а для поля зарплата написать: > ALL (SELECT зарплата FROM Сотрудники WHERE (( должность LIKE “*начальник*”) OR ( должность LIKE “*директор*))).
Соответствующий SQL-запрос:
SELECT Сотрудники.*
FROM Сотрудники
WHERE должность LIKE "продавец*" AND зарплата > ALL
(SELECT зарплата FROM Сотрудники
WHERE (( должность LIKE "*начальник*") OR ( должность LIKE "*директор*")));
Таблицам, как и полям, можно давать другие имена-псевдонимы.
Пример 16. Выдать сведения о деталях ( номер, имя и цену), для которых есть поставки. Эта задача может быть решена с помощью подчиненного запроса.
Создание QBE-запроса:
открыть бланк для создания запроса
добавить в него таблицу Детали
открыть окно Свойства для полей таблицы Детали и задать для нее псевдоним D
отобразить в динамическом наборе данных поля (в строке Поле бланка) номер детали : номерд, имя детали : имяд, цена детали: цена
создать в запросе вычисляемое поле без вывода его значения на экран с текстом в строке Поле: Exists (SELECT * FROM Поставки AS P WHERE D.номерд=P.номерд);
Соответствующий SQL-запрос:
SELECT D.номерд AS [номер детали], D.имяд AS [имя детали], D.цена AS [цена детали]
FROM Детали AS D
WHERE (((Exists (SELECT * FROM Поставки AS P WHERE D.номерд=P.номерд))));
Пример 17. Отобрать все поставки для деталей, не дороже 100 руб.
Эту задачу также можно решить с помощью подчиненного запроса.
Создание QBE-запроса:
создать запрос на выборку данных из таблицы Поставки, отобразив в динамическом наборе данных все поля.
в строку Поле вынести отдельно поля номерд, для которого выключить флажок Вывод на экран
В строке Условие отбора для поля номерд написать In (SELECT номерд FROM Детали WHERE цена <100)
Соответствующий SQL-запрос:
SELECT Поставки.*
FROM Поставки
WHERE ((Поставки.номерд In (SELECT номерд FROM Детали WHERE цена <100)));
Отбор данных можно производить с помощью фильтров, накладываемых на таблицы и формы.
