- •Курс «Базы данных»
- •Глава 6. Разработка пользовательских приложений в среде субд ms Access 28
- •Глава 1. Базы данных. Системы управления базами данных (субд)
- •Обзор субд
- •Основные функции субд
- •Управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Поддержка языков баз данных
- •Контрольные вопросы
- •Глава 2. Модели данных
- •Журнализация и восстановление базы данных после сбоев
- •Иерархическая модель данных
- •Сетевая модель данных
- •Достоинства и недостатки ранних моделей
- •Объектная модель
- •Контрольные вопросы
- •Глава 3. Реляционная модель Основные понятия и ограничения реляционной модели
- •Математическое определение отношения. Реляционная алгебра
- •1.Объединение (r u s).
- •2.Разность (r - s).
- •3.Декартово произведение (RxS)
- •4. Проекция
- •5. Селекция
- •Контрольные вопросы
- •Глава 4. Вопросы проектирования реляционных баз данных Цели проектирования базы данных. Этапы проектирования
- •Вопросы и задания
- •Нормализация. 1,2,3 нормальные формы
- •1 Нормальная форма.
- •2 Нормальная форма.
- •3 Нормальная форма.
- •Вопросы и задания
- •Глава 5. Семантическая модель данных
- •Читатель
- •Операции над сущностями
- •Порядок построения er-модели и построение реляционной схемы базы данных из er-модели
- •Пример построения er- модели
- •Глава 6. Разработка пользовательских приложений в среде субд ms Access Объекты базы данных
- •Вопросы и задания
- •Ввод данных в таблицу
- •Вопросы и задания
- •Формы. Типы форм. Элементы управления
- •Создание формы с помощью Конструктора
- •Вопросы и задания
- •Запросы. Макросы. Отчеты Основы sql
- •Создание вложенных (подчиненных) запросов
- •Обновление записей
- •Вопросы и задания
- •Запросы qbe. Мастер запросов
- •Вопросы и задания
- •Вопросы и задания
- •Итоговый запрос
- •Перекрестный запрос
- •Вопросы и задания
- •Построение форм на основе запроса
- •Макросы
- •Разработка приложения
Вопросы и задания
Что такое запрос?
Для чего предназначены запросы?
Какой специальный язык существует для работы с данными таблиц?
Как создать новый запрос при помощи Построителя запросов?
Как сохранить запрос?
Как запустить запрос на выполнение?
Что такое запрос на выборку данных?
Как организовано окно Построителя запросов?
Как сформировать структуру виртуальной таблицы, которая получится в результате выполнения запроса на выборку данных?
Как определить видимые поля в результирующей таблице?
Как упорядочить данные результирующей таблицы?
Как сформировать условие отбора записей в результирующей таблице?
Обьясните, как используются операторы Between, In, Like при построении условия отбора записей.
Создайте запрос на выборку записей из таблицы Книга, в которых значение поля Цена находится в диапазоне от 150 до 300 рублей. Используйте оператор Between.
Создайте запрос на выборку записей из таблицы Книга, в которых значением поля Жанр является «детектив» или «фантастика». Используйте оператор In.
Создайте запрос на выборку записей из таблицы Книга, в которых значение поля Автор начинается на букву «А» является «детектив» или «фантастика». Используйте оператор Like.
Виды запросов
При работе с построителем запросов можно определить вид запроса, который строится. Это делается с помощью меню Запрос в верхней части экрана. При выборе определенного вида запроса меняется вид окна Построителя запросов.
По умолчанию строится запрос на выборку.
Запрос на обновление данных
Создание запроса:
На вкладке Запросы щелкнуть по кнопке Создать/Конструктор.
Добавить таблицу в которой нужно обновить данные.
Преобразовать запрос в запрос на обновление: выбрать меню Запрос/Обновление.
В Построителе запросов в строку Поле: перенести поле, значения в котором подлежат обновлению.
В строке Обновление: построить выражение определяющее алгоритм обновления данных.
Например: В таблице Книги требуется увеличить цену всех книг в два раза.
Действия:
На вкладке Запросы щелкнуть по кнопке Создать/Конструктор.
Добавить таблицу Книги.
Преобразовать запрос в запрос на обновление: выбрать меню Запрос/Обновление.
В Построителе запросов в строку Поле: перенести поле Цена.
В строке Обновление: построить выражение определяющее алгоритм обновления данных: = [Книги]![Цена] * 2
Запрос на языке SQL:
UPDATE Книги SET Книги.Цена = [Книги]![Цена]*2;
Выражения
Выражения являются основным средством выполнения многих операций MS Access. Выражение представляет собой комбинацию символов — идентификаторов, операторов и значений — дающую определенный результат.
Например, следующее выражение позволяет вывести в элементе управления в форме или отчете сумму значений полей «СуммаЗаказа» и «СтоимостьДоставки» :
= [СуммаЗаказа] + [СтоимостьДоставки]
Элементы выражений
Выражения состоят из следующих элементов:
Операторы. Арифметические (+,-,*,/), сравнения (>,<,=,<>),логические (And,Or,Not), специальные (Between,In,Like), оператор конкатенации (&).
Константы. Постоянные значения, вводимые пользователем.
Идентификаторы. Это имена объектов MS Access, таких, как поля таблиц, элементы управления и так далее. А также постоянные именованные константы: True, False,Yes,No,Null.
Функции. В MS Access насчитывается около полутора сотен функций. Они сгруппированы по назначению. Например, функции работы с датой и временем: Date, Time, Now и т.д.
Именование объектов МS Access.Идентификаторыъ
Идентификатор – это имя объекта. Каждый объект MS Access (база данных, таблица, поле, элемент управления и т.д.)имеет идентифицирующее его имя. Каждый обьект MS Access принадлежит к какому-то семейству или классу объектов. Идентификатор объекта строится по правилу:
Имя_семейства![Имя объекта]![Имя свойства]
Например: Forms![Книги]![Автор]
Например, идентификатор поля Адрес в таблице Клиент:
Клиент!Адрес
Если идентификатор содержит пробел, то он заключается в квадратные скобки.
Например:
Клиент![Код клиента]
При обращения к свойству объекта в качестве разделителя используется обычно точка: Клиенты.Адрес
Построитель выражений
Это специальная программа-Мастер, которая вызывается по щелчку мышью по кнопке с изображением волшебной палочки и многоточия. Построитель выражений в специальных окнах предоставляет доступ ко всем объектам и функциям базы данных. Мышью можно выбирать нужный элемент выражения – оператор, функцию или идентификатор и быстро создавать выражения. Рассмотрим элементы окна Построителя выражений.
Здесь строится Само
выражение
В верхнем окошке строится само выражение. Ниже расположены кнопки для выбора операторов. В нижнем левом окошке можно выбрать семейство объектов, открыть его щелчком мыши и выбрать объект. Например, таблицу Книги. В среднем нижнем окошке отобразится перечень элементов, составляющих данный объект. В данном случае, список полей таблицы. В случае формы, например, отобразится список полей и элементов управления, входящих в форму. В нижнем правом окошке отображается слово Значение для выбора элемента объекта, а в случае работы со встроенными функциями в нем отображается список функций категории, выбранной в среднем окошке.
Всегда лучше использовать Построитель Выражений вместо того, чтобы писать идентификатор объекта или функцию «вручную». Это избавляет от многих ошибок.
Встроенные функции MS Access
Как уже говорилось, MS Access располагает значительным набором встроенных функций. В зависимости от назначения они разделяются на категории. (См. приложение Встроенные функции)
Создание в запросе вычисляемого поля
Иногда в результате запроса есть необходимость получать значения, вычисляемые на основе данных таблиц. Например, требуется рассчитать стоимость книг при условии увеличения ее 2 раза, но при этом данные таблицы не изменять. То есть требуется получить результирующую таблицу вида:
Название книги |
Автор |
Цена |
Новая цена |
|
|
|
|
Поле Новая цена является вычисляемым. Действия при создании запроса:
На вкладке Запросы щелкнуть по кнопке Создать/Конструктор.
Добавить таблицу Книги.
Перенести мышкой в строку Поле атрибуты Название книги, Автор, Цена.
Установить курсор в строке Поле на свободный столбец.
В Построителе запросов построить выражение, определяющее алгоритм обновления данных: = [Книги]![Цена] * 2
Установить новую подпись для созданного вычисляемого поля, выбрав пункт меню Вид/Свойства, и на вкладке Общие выбрать Подпись и внести Новая цена.
Сохранить запрос.
Запрос на языке SQL:
SELECT Книги.Автор, Книги.Название, Книги.Цена, [Книги]![Цена]*2 AS Выражение1
FROM Книги;
Параметрический запрос
Выше мы рассмотрели, как задавать условие отбора записей в запросе статически, на этапе проектирования запроса. Иногда удобнее бывает условие отбора задавать динамически, в процессе выполнения запроса. Для этого необходимо создать запрос с использованием параметра или параметрический запрос.
Например, необходимо создать запрос для того, чтобы пользователь мог выбирать книги какого-то жанра и при этом жанр можно было бы задавать при открытии запроса.
Действия:
На вкладке Запросы щелкнуть по кнопке Создать/Конструктор.
Добавить таблицы Книги и Жанры.
Перенести мышкой в строку Поле атрибуты Название книги, Автор, Жанр.
Преобразовать запрос в параметрический: выбрать меню Запрос/Параметрический.
В строке Условие отбора в квадратных скобках записать имя параметра:[Укажите жанр]
Сохранить запрос.
При выполнении запроса на экране появится окно с заголовком Введите значение параметра. После ввода значения (например, «детектив») нужно щелкнуть по кнопке Ok. Система выведет на экран только записи, удовлетворяющие введенному условия, т.е. книги жанра «детектив».
Запрос на языке SQL:
SELECT Книги.Автор, Книги.Название, Жанр.Жанр
FROM Жанр INNER JOIN Книги ON Жанр.[Код жанра] = Книги.[Код жанра]
WHERE (((Жанр.Жанр)=[ Укажите жанр]));
Использование в запросе встроенных функций MS Access
При создании вычисляемых полей или условия отбора в запросе можно использовать встроенные функции MS Access. Перечень встроенных функций по категориям можно увидеть в окне Построителя выражений, открыв семейство Функции/Встроенные функции.
Например: требуется построить запрос, позволяющий определить, какие книги выдавались в конкретный месяц конкретного года.
Действия:
На вкладке Запросы щелкнуть по кнопке Создать/Конструктор.
Добавить таблицы Книги, Обмен.
Перенести мышкой в строку Поле атрибуты Название книги, Автор, Дата выдачи.
Установить курсор в строке Поле на свободный столбец.
Открыть Построитель запросов.
Построить выражение с использованием встроенной функции Year из категории Дата/Время, которая возвращает целочисленное значение года от заданной даты: Year([Обмен]![Дата выдачи] )
В следующем свободном столбце аналогично построить выражение с использованием встроенной функции Month из категории Дата/Время, которая возвращает целочисленное значение месяца от заданной даты: Month([Обмен]![Дата выдачи] ).
Преобразовать запрос в параметрический.
В строке Условие отбора в столбце, который вернет значения Года, в квадратных скобках записать имя параметра:[Укажите год].
Аналогично в строке Условие отбора в столбце, который вернет значения Месяц, в квадратных скобках записать имя параметра:[Укажите месяц].
Установить новые подписи для созданных вычисляемых полей соответственно Год и Месяц (пункт меню Вид/Свойства/Подпись на вкладке Общие).
Сохранить запрос.
Запрос на языке SQL:
SELECT Книги.Автор, Книги.Название, Обмен.[Дата выдачи], Year([Обмен]![Дата выдачи]) AS Выражение1, Month([Обмен]![Дата выдачи]) AS Выражение2
FROM Читатель INNER JOIN (Книги INNER JOIN Обмен ON Книги.[Код книги] = Обмен.[Код книги]) ON Читатель.[Номер билета] = Обмен.[Номер билета]
WHERE (((Year([Обмен]![Дата выдачи]))=[Укажите год]) AND ((Month([Обмен]![Дата выдачи]))=[Укажите месяц]));
