Лабораторная работа № 6.
2. «СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ЗАПРОСОВ»
2.7. ЗАДАНИЕ 15. Построение сложных запросов с условиями отбора для вычисляемых полей
В запросе Стипендия II курса размер стипендии задавался одинаковым для всех категорий студентов. Во многих ВУЗах практикуется дифференцированная стипендия для разных категорий студентов. Допустим, что размер базовой стипендии равен N руб. Для отличников стипендия увеличивается вдвое, а для тех, кто получает стипендию, имея тройки, уменьшается вдвое. Составим запрос, в котором выдается список всех студентов II курса (группы А-2, Б-2) за II семестр (2_з, 2_э1, 2_э2) с указанием начисленной стипендии.
Создайте такой запрос по следующей схеме.
- Создайте новый запрос в режиме Конструктора. Добавьте в бланк запроса таблицы Учетная карта и Ведомость.
- Перенесите в нижнюю половину запроса поля ФИО, Nгр, Форма опл, Льготы из таблицы Учетная карта и поля 2_з, 2_э1, 2_э2 из таблицы Ведомость.
- В ячейке Условие Отбора поля №гр укажите выбор групп II курса любым способом, например, используя операторы In ("А2";"Б2") или "А2" OR "Б2". (Можете предложить другой способ определения студентов одного курса?)
- В новом столбце создайте вычисляемое поле логического типа K, определяющее что студент может получать базовую стипендию, а именно: он обучается на бюджетной основе, не имеет задолженностей за сессию и оценки за экзамены выше «3». Выражение, соответствующее данному критерию, можно записать так:
K: [Paym]="б" And [2_p]="з" And ([2_e1]=4 Or [2_e2]=4) And [2_e1]>3 And [2_e2]>3
- По аналогии в новом столбце запишите выражение для вычисляемого поля логического типа L, определяющее что студент может получать повышенную стипендию: он обучается на бюджетной основе, не имеет задолженностей за сессию и все оценки за экзамены «5».
- В следующем столбце запишите выражение для вычисляемого поля логического типа M, определяющее что студент может получать половину базовой стипендии: он обучается на бюджетной основе, имеет льготы, сессию сдал без задолженностей и без двоек, но имеет тройки.
- В следующем новом столбце создайте вычисляемое поле денежного типа Стипендия, указав в Свойствах поля формат поля Денежный с числом знаков 2. Выражение для этого можно записать, используя функцию управления Iif. Это выражение будет достаточно громоздким, а именно:
Стип: IIf([K]=-1; [Стипендия]; IIf([L]=-1;[Стипендия]*2;
IIf ([M]=–1;[Стипендия]/2;0)))
- Посмотрите результаты работы запроса (рис. 36). Знак «-1» в логических полях K,L,M свидетельствует о том, к какой категории относится данный студент.
- Сохраните запрос, присвоив ему имя Дифференцированная стипендия II курса.
- Создайте с помощью Конструктора новую таблицу Активисты факультета (рис. 37). В этой таблице представлен список студентов, занимающихся общественной работой.
Категория этой работы оценивается как «1», если работа соответствует уровню факультета, и «0», если – уровню группы. Если категория общественной работы «1»,то к стипендии добавляется M % от стипендии, которую получает данный студент.
11. Свяжите новую таблицу с таблицей Учетная карта, не устанавливая целостность данных.
Рис. 36. Результаты работы запроса на вычисление дифференцированной стипендии. Значение «-1» в логических полях K,L,M является
показателем для начисления стипендии в зависимости
от категории студента
Рис. 37. Таблица Активисты факультета
12. Модифицируйте запрос Дифференцированная стипендия II курса так, чтобы в нем вычислялась дополнительная стипендия, если категория общественной работы оценивается «1», и выдавалась суммарная стипендия (Рис. 38).
При введении вычисляемых полей не забудьте указать денежный формат полей.
Рис. 38. Результаты работы модифицированного запроса
Дифференцированная стипендия II курса для случая 10 % надбавки
к стипендии за общественную работу