- •Учебное пособие по базам данных
- •Раздел 1. Теория проектирования баз данных
- •Тема 1.1. Основные понятия и типы моделей данных
- •Тема 1.2. Взаимосвязи в моделях и реляционный подход к построению моделей
- •Раздел 2. Организация баз данных
- •Тема 2.1. Проектирование баз данных и создание таблиц
- •Пуск – Все программы – ms Office – ms Access
- •Тема 2.2 Управление записями
- •Тема 2.3 Обработка данных. Организация запросов Назначение и виды запросов
- •Условия отбора записей
- •Многотабличные запросы
- •Использование групповых операций в запросах
- •Раздел 3 Организация пользовательского интерфейса
- •Тема 3.1 Работа с формами: создание, модификация, удаление
- •Тема 3.2 Формирование отчетов
- •Тема 3.3 Командный интерфейс приложения
- •Сервис → Служебные программы → Диспетчер кнопочных форм.
- •Сервис → Служебные программы → Диспетчер кнопочных форм.
Многотабличные запросы
Многотабличный запрос позволяет сформировать результат путем объединения взаимосвязанных записей из таблиц и выбора из них нужных полей и записей. Многотабличный запрос часто осуществляет объединение данных, которые на этапе проектирования были разделены на множество таблиц в соответствии с требованиями нормализации. В таких таблицах, прежде всего, обеспечивалось отсутствие дублирования данных в базе, (повторяются только значения ключевых полей). В результате выполнения запроса формируется таблица с повторяющимися данными, в которой каждая запись собирает необходимые данные из разных таблиц.
При проектировании и конструировании запроса важнейшим условием является правильное представление о том, как идет объединение записей таблиц при формировании результата.
Например, при объединении двух таблиц, связанных отношением 1:М, для которых обеспечивается целостность данных, результирующая запись образуется на основе записи подчиненной таблицы, в которую добавляются поля из связанной записи в главной таблице. Подобное объединение формирует ненормализованную таблицу, в которой число записей равно числу записей в подчиненной таблице. При этом данные главной таблицы дублируются.
Вычисляемые поля
В запросе для каждой записи могут производиться вычисления с числовыми и строковыми значениями или значениями дат с использованием данных из одного или нескольких полей. Результат вычисления образует в таблице запроса новое вычисляемое поле. В исходных таблицах новых полей не создается. При каждом выполнении запроса производится вычисление с использованием текущих значений полей. Вычисления проводятся построчно (горизонтально).
В выражениях вычисляемых полей помимо имен полей могут использоваться литералы и функции. В результате обработки выражения может получаться только одно значение. Для записи выражения в вычисляемом поле может быть использован Построитель выражений, который вызывается из контекстного меню кнопкой «Построить». Курсор мыши предварительно должен быть установлен в ячейке ввода выражения. При этом открывается окно построителя выражений (Рис. 2.36). В формулах, которые будут созданы в построителе выражений, участвуют не данные, а заголовки полей, из которых они будут взяты. В окне построителя выражений будет отражаться вводимая формула (Рис. 2.37).
Рис. 2.36 Вызов окна построителя выражений
Р ис. 2.37 Создание формул в построителе выражений
Вычисляемое поле может содержать вызовы встроенных функций Access и следующие операторы:
«+» – складывает два арифметических выражения;
«–» – вычитает из первого арифметического выражения второе;
«*» – перемножает два арифметических выражения;
«/» – делит первое арифметическое выражение на второе;
«\» – округляет два арифметических выражения до целых значений и делит первое на второе. Результат округляется до целого;
«^» – возводит первое арифметическое выражение в степень, задаваемую вторым арифметическим выражением;
«MOD» – округляет оба арифметических выражения до целых значений, делит первое на второе и возвращает остаток;
«&» – создает текстовую строку как результат присоединения второй строки к концу первой. Если один из операндов является числом, то оно автоматически преобразуется в строку символов.
Например, необходимо вычислить стоимость товара, приобретенного у поставщика. Для этого необходимо ввести формулу:
цена покупки * количество купленного
Для построения выражения надо выбрать таблицу «Товары», а в ней поля «Цена покупки» и «Количество купленного». При создании выражения в окне построителя формула будет отображаться следующим образом:
[товары]![цена покупки]*[товары]![кол-во купленного]
В первых квадратных скобках указывается название таблицы, из которой взяты данные. (Это нужно на тот случай, если данные берутся из нескольких таблиц, или в нескольких таблицах есть поля с одинаковыми названиями). В следующих скобках указывается название поля. Знак «!» используется как разделитель. В результате вычислений будет создано поле, в котором числа из поля «Цена» построчно будут перемножены на числа, из поля «Количество» (Рис. 2.38).
№ |
Название |
Цена покупки |
Кол-во покупки |
… |
В результате выполнения запроса появится таблица: |
|
№ |
Название |
Выражение 1 |
1 |
Хлеб |
10 |
100 |
|
1 |
Хлеб |
1000 |
||
2 |
Батон |
12 |
90 |
|
2 |
Батон |
1080 |
||
3 |
Сушка |
23 |
120 |
|
3 |
Сушка |
2760 |
Рис. 2.38 Вычисление стоимости товара с помощью построителя выражений
Если в процессе работы с базой данных цена товара или его количество изменится, это сразу же отразится на значении стоимости товара в запросе.
По умолчанию первому вычисляемому полю присваивается имя Выражение1 следующему Выражение2 и т.д. Пользователь имеет возможность присвоить новое имя и подпись вычисляемому полю.
Для изменения только имени поля в запросе в режиме конструктора запроса в бланке запроса вместо «выражение N» надо ввести новое имя. Новое имя используется не только в заголовке столбца таблицы запроса, а и в новых объектах, построенных на этом запросе.
Для изменения подписи поля в свойствах поля надо установить курсор мыши на вычисляемое поле в бланке запроса. В окне «Свойства поля» на вкладке «Общие» ввести нужный текст подписи в строку «Подпись поля».
При создании вычисляемых полей так же могут быть использованы параметры. Например, увеличение оклада работников может производиться не на заданную сумму, а на определенный процент, вводимый с клавиатуры. Для этого в формулу построителя выражений надо добавить, например, [введите процент]. (Рис. 2.39)
Р ис. 2.39 Использование параметра в вычисляемых полях