
- •Содержание
- •1. Создание базы данных
- •1.2. Пример реляционной базы данных
- •1.3. Создание структуры Таблицы 1
- •2.Создание схемы данных:
- •.2. 1 Создание формы для таблицы отдел
- •Запрос в режиме конструктора
- •Запрос в режиме sql
- •Результаты выполнения запроса (запрос в режиме таблицы)
- •8.2.Связанная форма
Запрос в режиме конструктора
В окне базы данных выделить объект Запросы и дважды кликнуть мышкой кнопку Создание запроса в режиме конструктора или на панели инструментов нажать кнопку Конструктор. Выбрать все таблицы.
Заполняем бланк запроса.
В строку ПОЛЕ: бланка запроса выбрать поля FAM, OKL, GOD, NAZ, NDOL, так как значения этих полей требуется вывести в таблице результатов выполнения запроса. При этом автоматически заполняется строка Имя таблицы:. В строке Сортировка: поля FAM выбираем по возрастанию. В строке Вывод на экран: устанавливаем флажки в тех полях значения, которых следует отобразить в таблице результатов выполнения запроса. В строке Условие отбора: записываем выражения для отбора записей в соответствии с условием: в поле GOD - <2000 и в поле NDOL – “инженер”, в строке или: записываем в поле GOD выражение <2000 и в поле NDOL – “техник”.
Для просмотра запроса в режиме SQL в строке меню выбрать пункт Вид, затем строку Режим SQL.
Запрос в режиме sql
SELECT КАДРЫ.FAM, ДОЛЖНОСТИ.OKL, КАДРЫ.GOD, ОТДЕЛ.NAZ, ДОЛЖНОСТИ.NDOL
FROM ОТДЕЛ INNER JOIN (ДОЛЖНОСТИ INNER JOIN КАДРЫ ON ДОЛЖНОСТИ.NDOL = КАДРЫ.DOL) ON ОТДЕЛ.NOM = КАДРЫ.[NOT]
WHERE (((КАДРЫ.GOD)<2000) AND ((ДОЛЖНОСТИ.NDOL)="инженер")) OR (((КАДРЫ.GOD)<2000) AND ((ДОЛЖНОСТИ.NDOL)="техник"))
ORDER BY КАДРЫ.FAM;
Результаты выполнения запроса (запрос в режиме таблицы)
Фамилия |
Оклад |
Год поступления |
Наименование отдела |
Наименование должности |
Дурнова |
20000,00 |
1995 |
Финансовый |
техник |
Иванов |
20000,00 |
1999 |
Финансовый |
техник |
Суркова |
30000,00 |
1997 |
Финансовый |
инженер |
Последовательность действий при сохранении Запроса в режиме конструктора:
-
открыть запрос в режиме конструктора;
-
нажать на клавиатуре клавишу Print Screen;
-
Пуск-Программы-Стандартные-Paint-Правка-Вставить;
-
вырезать запрос;
-
правка-копировать;
-
открыть документ в MS WORD;
-
правка-вставить.
Запрос 2. (Для студентов с нечётными по списку номерами). Из таблицы КАДРЫ выбрать лаборантов ФАМИЛИИ, которых начинаются с букв от А до К..
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Наименование должности |
Год поступления |
Наименование отдела |
Запрос сохранить, как файл Запрос2.doc.
Запрос 2. (Для студентов с чётными по списку номерами). Из таблицы КАДРЫ выбрать экономистов ФАМИЛИИ, которых начинаются с букв от Р до Я..
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Наименование должности |
Год поступления |
Наименование отдела |
Запрос сохранить, как файл Запрос2.doc.
Запрос 3. (Для студентов с нечётными по списку номерами). Из таблицы КАДРЫ выбрать экономистов, поступивших на работу в период с 2000 до 2005 года. При записи выражения, задающего условие отбора по годам использовать оператор BETWEEN………AND… .Список рассортировать по убыванию по годам поступления и представить в виде:
Фамилия |
Наименование отдела |
Наименование должности |
Год поступления |
Запрос сохранить, как файл Запрос3.doc .
Запрос 3. (Для студентов с чётными по списку номерами). Из таблицы КАДРЫ выбрать сотрудников 1 отдела, поступивших на работу в период с 1995 до 2000 года. При записи выражения, задающего условие отбора по годам использовать оператор >=……AND… <=….. Список рассортировать по возрастанию по годам поступления и представить в виде:
Фамилия |
Год поступления |
НОМЕР ОТДЕЛА |
Должность |
Запрос сохранить, как файл Запрос3.doc
Запрос 4. (Для студентов с нечётными по списку номерами). Из таблицы КАДРЫ выбрать сотрудников, родившихся в период с 1.01.1970 года по 31.12.1979 года. При записи выражения, задающего условие использовать оператор BETWEEN………AND… .Список рассортировать по убыванию дат рождения и представить в виде:
Должность |
Фамилия |
Дата рождения |
Запрос сохранить, как файл Запрос4.doc
Запрос 4. (Для студентов с чётными по списку номерами). Из таблицы КАДРЫ выбрать сотрудников, родившихся в период с 1.01.1960 года по 31.12.1970 года. При записи выражения, задающего условие использовать оператор >=………AND… .<= . Список рассортировать по возрастанию дат рождения и представить в виде:
Фамилия |
Дата рождения |
Номер отдела |
Запрос сохранить, как файл Запрос4.doc
5.Рассмотрим создание запроса с вычисляемыми полями
Запрос 1. Из таблицы КАДРЫ отобрать сотрудников, родившихся в первой половине года.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Год поступления |
Месяц рождения |
Вариант запроса с заголовком
Запрос в режиме конструктора
В вычисляемом поле записана функция MONTH([DAT]), которая выделяет номер месяца из поля DAT, тип поля DAT - дата/время.
Запрос в режиме SQL
SELECT КАДРЫ.FAM, КАДРЫ.GOD, Month([DAT]) AS [Месяц рождения]
FROM КАДРЫ
WHERE (((Month([DAT]))<7));
В режиме SQL выражение для вычисляемого поля записывается в инструкции SELECT, а заголовок вычисляемого поля записывается после слова AS.
Результат выполнения запроса
Фамилия |
Год поступления |
Месяц рождения |
Васина |
2005 |
3 |
Грязнова |
2002 |
5 |
Чернов |
2003 |
4 |
Козлов |
2000 |
1 |
Сухов |
2005 |
2 |
Яшин |
1997 |
5 |
Вариант запроса без заголовка
Запрос в режиме конструктора
Запрос в режиме SQL
SELECT КАДРЫ.FAM, КАДРЫ.DAT, Month([DAT]) AS Выражение1
FROM КАДРЫ
WHERE (((Month([DAT]))<7));
Результат выполнения запроса
Фамилия |
Дата рождения |
Выражение1 |
Васина |
03.03.1980 |
3 |
Грязнова |
07.05.1975 |
5 |
Чернов |
19.04.1970 |
4 |
Козлов |
01.01.1970 |
1 |
Сухов |
02.02.1960 |
2 |
Яшин |
30.05.1955 |
5 |
Запрос 2.
Из таблицы КАДРЫ выбрать сотрудников, возраст которых находится в диапазоне от 20 до 40 лет (включительно). При записи выражения, задающего условие отбора по возрасту использовать оператор BETWEEN………AND… . Список рассортировать по убыванию возраста.
Для определения текущего года использовать функцию DATE().
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Дата рождения |
Возраст |
Функция Year(Date()) возвращает значение текущего года, а функция Year([DAT]) возвращает год рождения сотрудника. Возраст каждого сотрудника сравнить с условием (от 20 до 40).
Запрос 2.
Из таблицы КАДРЫ выбрать сотрудников, возраст которых находится в диапазоне от 20 до 40 лет (включительно). При записи выражения, задающего условие отбора по возрасту использовать оператор
>= ….AND….. <=… . Список рассортировать по возрастанию возраста.
Для определения текущего года использовать функцию NOW().
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Дата рождения |
Возраст |
Функция NOW() возвращает текущую дату и время, снятые с компьютера в формате чч.мм.гггг.чч:мм:СС.
Функция Year(NOW()) возвращает значение текущего года, а функция Year([DAT]) возвращает год рождения сотрудника. Возраст каждого сотрудника сравнить с условием (от 20 до 40).
Запрос 3. (Для студентов с нечётными по списку номерами). Из таблицы КАДРЫ выбрать сотрудников, стаж работы которых не превышает 5 лет.
В таблице результатов выполнения запроса предусмотреть вывод значений всех полей таблицы КАДРЫ.
Фамилия |
Должность |
Год поступления |
Дата рождения |
Номер отдела |
СТАЖ |
Запрос 3. (Для студентов с чётными по списку номерами). Из таблицы КАДРЫ выбрать инженеров, стаж работы которых больше 3 лет.
В таблице результатов выполнения запроса предусмотреть вывод значений всех полей таблицы КАДРЫ.
Фамилия |
Должность |
Год поступления |
Дата рождения |
Номер отдела |
СТАЖ |
Запрос 4. (Для студентов с нечётными по списку номерами).
Всем сотрудникам Планового отдела выписать премию в размере 40% от должностного оклада.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей.
Фамилия |
Должность |
ПРЕМИЯ |
Запрос 4. (Для студентов с чётными по списку номерами).
Всем сотрудникам 1 отдела выписать премию в размере 40% от должностного оклада.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей.
Фамилия |
Должность |
ПРЕМИЯ |
Функции Left(), Mid() выделяют часть текстового поля. Формат функций:
1 Left(аргумент1;аргумент2), где аргумент1 - имя поля или строковое выражение, аргумент2 - количество выделенных символов;l
2 Mid(аргумент1;аргумент2;аргумент3), где аргумент1 - имя поля или строковое выражение, аргумент2 - определяет позицию первого выделенного символа, аргумент3 - количество выделенных символов.
При создании 5 запроса для выделения числа воспользоваться функцией LEFT(), а для выделения месяца – функцией MID().
Запрос 5. (Для студентов с нечётными по списку номерами). Из таблицы КАДРЫ выбрать сотрудников, которые родились в первой половине любого месяца и во второй половине любого года.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей.
Фамилия |
Дата рождения |
Запрос 5. (Для студентов с чётными по списку номерами). Из таблицы КАДРЫ выбрать сотрудников, которые родились во второй половине любого месяца и в первой половине любого года.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей.
Фамилия |
Дата рождения |
6.Запрос с параметрами
Рассмотрим создание запроса с параметрами
Запрос 1. Для произвольно заданной должности и произвольно заданного отдела отобразить список сотрудников.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Наименование должности |
Оклад |
Наименование отдела |
Запрос в режиме конструктора
В данной задаче в качестве первого параметра используется значение должности, поэтому в поле DOL в строке Условие отбора в квадратных скобках записываем текст приглашения ([введите должность]). В качестве второго параметра используется номер отдела, поэтому в поле NOM в строке Условие отбора в квадратных скобках записываем текст приглашения ([введите номер отдела]).
Запрос в режиме SQL
SELECT КАДРЫ.FAM, ДОЛЖНОСТИ.NDOL, ДОЛЖНОСТИ.OKL, ОТДЕЛ.NAZ
FROM ОТДЕЛ INNER JOIN (ДОЛЖНОСТИ INNER JOIN КАДРЫ ON ДОЛЖНОСТИ.NDOL = КАДРЫ.DOL) ON ОТДЕЛ.NOM = КАДРЫ.[NOT]
WHERE (((ДОЛЖНОСТИ.NDOL)=[введите должность]) AND ((ОТДЕЛ.NOM)=[введите номер отдела]));
После запуска запроса появляется первое диалоговое окно с текстом приглашения - введите должность, в пустую строку окна пользователь вводит любую, интересующую его в данный момент должность (например, техник), а затем нажимает кнопку OK.
Затем появляется второе диалоговое окно с текстом приглашения- введите номер отдела, в пустую строку окна пользователь вводит номер любого, интересующего его в данный момент отдела (например 2), а затем нажимает кнопку OK.
Результат выполнения запроса
Фамилия |
Наименование должности |
Оклад |
Наименование отдела |
Дурнова |
техник |
20000,00 |
Финансовый |
Маркова |
техник |
20000,00 |
Финансовый |
В электронных тетрадях по каждому запросу размещать:
-
условие запроса,
-
запрос в режиме конструктора,
-
запрос в режиме SQL,
-
диалоговые окна с текстом приглашения,
-
результаты выполнения запроса.
Запрос 2. (Для студентов с нечётными по списку номерами). Из таблицы КАДРЫ выбрать сотрудников, родившихся позже 01.01.1970.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Дата рождения |
Должность |
Наименование отдела |
Запрос 2. . Из таблицы КАДРЫ выбрать экономистов, родившихся ранее 01.01.1970.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Дата рождения |
Запрос 3. Выбрать фамилии экономистов, поступивших на работу в произвольно заданный интервал лет. Список фамилий расположить по алфавиту.
Для решения поставленной задачи следует разработать запрос, обеспечивающий ввод двух параметров: год начала интервала и год окончания интервала.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Год поступления |
Запрос 3. Выбрать фамилии лаборантов, поступивших на работу в произвольно заданный интервал лет. Список фамилий расположить по алфавиту.
Для решения поставленной задачи следует разработать запрос, обеспечивающий ввод двух параметров: год начала интервала и год окончания интервала.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Год поступления |
Запрос 4. (Для студентов с нечётными по списку номерами). Выбрать фамилии сотрудников 1 отдела, родившихся в произвольно заданный интервал дат рождения. Список фамилий расположить по алфавиту.
Для решения поставленной задачи следует разработать запрос, обеспечивающий ввод двух параметров: дату рождения начала интервала и дату рождения окончания интервала.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Дата рождения |
Наименование должности |
Запрос 4. (Для студентов с чётными по списку номерами). Выбрать фамилии инженеров, родившихся в произвольно заданный интервал дат рождения. Список фамилий расположить по алфавиту.
Для решения поставленной задачи следует разработать запрос, обеспечивающий ввод двух параметров: дату рождения начала интервала и дату рождения окончания интервала.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Фамилия |
Наименование отдела |
Дата рождения |
Встроенные функции вводятся в строку Групповая операция бланка конструктора запроса. Эту строку можно добавить в бланк, кликнув мышкой по кнопке Групповые операции Панели инструментов окна Microsoft Access.
7. Рассмотрим создание запроса с групповыми вычислениями.
Запрос 1. По информации, представленной в таблице КАДРЫ, для каждой должности определить фонд заработанной платы и количество сотрудников каждой должности.
При создании запроса в бланк конструктора добавляем строку Групповая операция. Требуется выполнять вычисления для каждой должности, поэтому в строке Групповая операция в поле NDOL оставляем элемент Группировка, который определяет группы, для которых выполняются вычисления. Имена вычисляемым полям не присваиваем.
В режиме SQL появилась новая инструкция GROUP BY, которая обеспечивает вычисления заданных функций отдельно для каждой должности по значениям в поле NDOL.
SELECT ДОЛЖНОСТИ.NDOL, Sum(ДОЛЖНОСТИ.OKL) AS [Sum-OKL], Count(КАДРЫ.FAM) AS [Count-FAM]
FROM ОТДЕЛ INNER JOIN (ДОЛЖНОСТИ INNER JOIN КАДРЫ ON ДОЛЖНОСТИ.NDOL = КАДРЫ.DOL) ON ОТДЕЛ.NOM = КАДРЫ.[NOT]
GROUP BY ДОЛЖНОСТИ.NDOL
ORDER BY ДОЛЖНОСТИ.NDOL;
Наименование должности |
Sum-OKL |
Count-FAM |
инженер |
150000 |
5 |
лаборант |
40000 |
4 |
нотариус |
100000 |
2 |
техник |
60000 |
3 |
экономист |
160000 |
4 |
юрист |
120000 |
2 |
SELECT ДОЛЖНОСТИ.NDOL, Sum(ДОЛЖНОСТИ.OKL) AS ФОНД, Count(КАДРЫ.FAM) AS КОЛИЧЕСТВО
FROM ОТДЕЛ INNER JOIN (ДОЛЖНОСТИ INNER JOIN КАДРЫ ON ДОЛЖНОСТИ.NDOL = КАДРЫ.DOL) ON ОТДЕЛ.NOM = КАДРЫ.[NOT]
GROUP BY ДОЛЖНОСТИ.NDOL
ORDER BY ДОЛЖНОСТИ.NDOL DESC;
Наименование должности |
ФОНД |
КОЛИЧЕСТВО |
юрист |
120000 |
2 |
экономист |
160000 |
4 |
техник |
60000 |
3 |
нотариус |
100000 |
2 |
лаборант |
40000 |
4 |
инженер |
150000 |
5 |
.
Запрос 2. По информации, представленной в таблице КАДРЫ, для каждой должности определить средний возраст сотрудников
Для определения возраста сотрудника следует вычесть год его рождения из текущего года и использовать встроенную функцию AVG() для определения среднего возраста.
На бланке конструктора запроса создано вычисляемое поле и записано выражение для определения среднего возраста. В строке Групповая операция этих полей выбран элемент Выражение.
SELECT ДОЛЖНОСТИ.NDOL, Avg(Year(Date())-Year([DAT])) AS Выражение1
FROM ОТДЕЛ INNER JOIN (ДОЛЖНОСТИ INNER JOIN КАДРЫ ON ДОЛЖНОСТИ.NDOL = КАДРЫ.DOL) ON ОТДЕЛ.NOM = КАДРЫ.[NOT]
GROUP BY ДОЛЖНОСТИ.NDOL
ORDER BY Avg(Year(Date())-Year([DAT]));
Наименование должности |
Выражение1 |
лаборант |
24 |
экономист |
39 |
техник |
42,3333333333333 |
юрист |
43 |
инженер |
46,4 |
нотариус |
47 |
Модифицируем Запрос 2.
Открыть Запрос 2 в режиме Конструктора.
Установить указатель мышки в любую позицию вычисляемого поля с заголовком Выражение1. Кликнуть правой кнопкой мышки. Открывается контекстное меню, в котором следует выбрать строку Свойства (смотри рисунок).
На экране отобразится окно Свойства поля, в котором на вкладке Общие установить Формат поля - фиксированный и Число десятичных знаков - 2.
После этих действий результат в полях столбика с заголовком Выражение1 отображается числом с двумя десятичными знаками после запятой. Затем вычисляемому полю зададим имя.
SELECT ДОЛЖНОСТИ.NDOL, Avg(Year(Date())-Year([DAT])) AS [СРЕДНИЙ ВОЗРАСТ]
FROM ОТДЕЛ INNER JOIN (ДОЛЖНОСТИ INNER JOIN КАДРЫ ON ДОЛЖНОСТИ.NDOL = КАДРЫ.DOL) ON ОТДЕЛ.NOM = КАДРЫ.[NOT]
GROUP BY ДОЛЖНОСТИ.NDOL
ORDER BY Avg(Year(Date())-Year([DAT]));
Наименование должности |
СРЕДНИЙ ВОЗРАСТ |
лаборант |
24,00 |
экономист |
39,00 |
техник |
42,33 |
юрист |
43,00 |
инженер |
46,40 |
нотариус |
47,00 |
Запрос 3. По информации, представленной в таблице КАДРЫ, для должностей “лаборант” и “техник” определить средний возраст сотрудников
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Наименование должности |
СРЕДНИЙ ВОЗРАСТ |
Запрос 3. По информации, представленной в таблице КАДРЫ, для должностей “юрист” и “нотариус” определить средний возраст сотрудников.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Наименование должности |
СРЕДНИЙ ВОЗРАСТ |
Запрос 4.(Для всех студентов) По информации, представленной в таблице КАДРЫ, для каждой должности определить средний стаж работы.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Должность |
Средний стаж |
Применения встроенных функций MAX и MIN в запросах на выборку с итоговыми вычислениями.
Запрос 5.(Для всех студентов) По информации, представленной в таблице КАДРЫ, для каждой должности определить год рождения самого молодого и год рождения самого опытного (с точки зрения возраста) сотрудника.
В таблице результатов выполнения запроса предусмотреть вывод значений следующих полей:
Наименование должности |
САМЫЙ МОЛОДОЙ |
САМЫЙ ОПЫТНЫЙ |
8.1.Создание различных элементов управления в форме КАДРЫ
Добавление различных элементов управления осуществляется в режиме конструктора
1.Создание надписи (свободный элемент управления)
Порядок действий:
1.увеличить область заголовка формы и размер самой формы, перемещая их границы указателем мышки,
2. кликнуть мышкой и отпустить кнопку Надпись на Панели элементов,
3.переместить указатель мышки (указатель мышки принимает вид +A ) в область заголовка формы, где должна располагаться надпись, нажать и отпустить левую кнопку мышки и ввести текст заголовка,
4. выделив текст заголовка, можно его форматировать, то есть менять размер, цвет, начертание шрифта, цвет фона и так далее.
2.Создание поля для вычисления
Порядок действий:
-
кликнуть мышкой и отпустить кнопку Поле на Панели, элементов
-
переместить указатель мышки (указатель мышки принимает вид +ab )в область формы, где должно располагаться поле, нажать и отпустить левую кнопку мышки,
-
снять выделение поля и записать выражение (следует помнить, что выражению обязательно предшествует знак равенства, и поля таблицы записываются в квадратных скобках).
4.затем создаём, редактируем и форматируем поле Надпись, записывая в него наименование результата вычислений.
ЗАДАНИЕ 1.
Последовательность действий:
-
в окне базы данных в списке Объекты кликнуть значок Формы,
-
на панели инструментов окна базы данных кликнуть кнопку Создать,
-
появляется окно Новая форма, в котором следует выбрать строку Мастер форм,
-
в текстовой строке окна Новая форма выбрать имя таблицы ОТДЕЛ и нажать кнопку OK,
-
появляется окно Создание форм, в котором из текстового окна Доступные поля следует перенести все поля таблицы ОТДЕЛ в текстовое окно Выбранные поля,
-
в строке Таблицы и запросы (этого же окна) выбрать таблицу КАДРЫ и перенести все поля в текстовое окно Выбранные поля,
-
в строке Таблицы и запросы (этого же окна) выбрать таблицу ДОЛЖНОСТИ и перенести поле OKL в текстовое окно Выбранные поля и нажать кнопку Далее (следует отметить, что порядок выбора таблиц не имеет значения),
-
появляется следующее окно Создание форм, в котором выделить имя главной таблицы ОТДЕЛ, установить переключатель Подчинённые формы и нажать кнопку Далее (вид представления данных зависит от того какая таблица выделена - главная или подчинённая),
-
в следующем окне выбрать внешний вид формы - ленточный и нажать кнопку Далее,
-
в следующем окне выбрать любой стиль и нажать кнопку Далее,
-
в следующем окне задать имена форм (лучше, когда имена форм совпадает с именами таблиц, то есть ОТДЕЛ1 и КАДРЫ подчинённая форма и нажать кнопку Готово.
На рисунке представлена подчинённая форма в режиме конструктора и в режиме формы.
ЗАДАНИЕ 2