Лабораторная работа по базам данных

advertisement
ЛАБОРАТОРНАЯ РАБОТА
Тема: «Создание вычисляемых элементов в запросах, отчетах, формах.»
Задание 1:
Получить запрос, который отражает результат сдачи сессии, сдана сессия или нет.
Создадим в базе данных таблицу Количество экзаменов по семестрам с полями:
Семестр, Количество экзаменов, Специальность. В данной таблице ключевого поля не
будет. Для того чтобы создать данный запрос необходимо создать несколько
промежуточных:
Запрос, вычисляющий номер семестра оп дате сдачи экзамена; затем запрос, который
подсчитывает количество сданных каждым студентом экзаменов, и последний запрос
который будет сравнивать значения количества сданных экзаменов со значениями,
введенными в таблицу Количество экзаменов по семестрам.
Создадим запрос, который вычисляет номер семестра по данным таблицы
Экзамены и полю Номер группы таблицы Студенты.
 В бланк запроса добавьте поле Предмет из таблицы Экзамены и поля №зачетки,
Фамилия из таблицы Студенты.
 Создайте вычисляемое поле. В построителе выражения введите следующее
выражение:
Номер семестра: IIf(Month([Экзамены]![Дата сдачи])>=1 And
Month([Экзамены]![Дата сдачи])<=6;(CInt(Year([Экзамены]![Дата сдачи]))(CInt(Left([Студенты]![Группа];2))+2000))*2+1;(CInt(Year([Экзамены]![Дата сдачи]))(CInt(Left([Студенты]![Группа];2))+2000))*2)
Рис.1.
 Сохраните запрос под именем Определение семестра.
Функция IIf является встроенной функцией, ее можно вызвать, выбрав в Построителе
выражений папку Функции – Встроенные функции – Управление – IIf. Данная
функция возвращает одно из двух значений, записанных после условия.
Синтаксис функции: IIf(условие ; значение1 ; значение 2) Функция вернет Значение1,
если условие истинно, в противном случае вернет Значение2.
Функция Month( дата)- возвращает значение месяца из даты. Например,
Month(12.03.2006) = 3.
Функция Year( дата) - возвращает значение года из даты.
Функция Left ( строковое выражение; N) – возвращает N-первых символов в
строковом выражении. В нашем примере данная функция выделяет первых два
символа в названии Группы, для определения года поступления студентов.
Функция CInt( значение) – превращает значение из любого типа данных (текстового,
дата/время и т.д.) в значение числового типа.
Смысл созданного выражения: «Если значение месяца даты сдачи экзамена >= 1 и
<= 6, то вычислить разность значения года сдачи экзамена и (года поступления + 2000)
и результат разности умножить на 2 и увеличить на 1, в противном случае, вычислить
разность значения года сдачи экзамена и (года поступления + 2000) и результат
разности умножить на 2».
Создадим запрос, который вычислит количество сданных экзаменов каждым из
студентов.
 Для этого перенесите в бланк запроса все поля из запроса Определение семестра.
 Добавьте строку Групповые операции и выберите для поля Предмет функцию
Count.
 Запустите запрос на выполнение и убедитесь в правильности вычисления.
 Сохраните запрос с именем Количество предметов.
Рис.2.
 Создайте связь без обеспечения целостности между полем Семестр таблицы
Количество экзаменов по семестрам и полем Номер семестра из запроса
Количество предметов. Сервис – Схема данных. Правой клавишей мыши
вызовите контекстное меню.
 Выберите Добавить таблицу. Выберите таблицу Количество экзаменов по
семестрам, затем перейдите на вкладку Запросы и щелкните по запросу
Количество предметов.
 Создайте связь без обеспечения целостности между полем Специальность таблицы
Студенты и полем Специальность таблицы Количество экзаменов по семестрам.
Создадим запрос Итоги сдачи сессии.
 Вставьте поля из таблиц Студенты и Количество экзаменов по семестрам, и
запроса Количество предметов, как указано на рисунке.
Рис.3.
 Создайте вычисляемое поле Итог сессии. В построителе выражений введите
следующее:
Итог сессии: IIf([Количество предметов]![Count-Предмет]=[Количество экзаменов по
семестрам]![Количество экзаменов];"Сдано";"Не сдано")
 Нажмите ОК.
 Запустите запрос на выполнение.
Задание 2: Создать отчет, который по значению среднего балла, полученных оценок на
экзаменах, формирует платежную ведомость с автоматическим начислением стипендии.
Если студенты первого курса, то размер стипендии вне зависимости от среднего балла
оценок, 40 руб., если средний балл меньше 4, стипендия не начисляется, если от 4 до 4,5 ,
то начислить 50 руб., если больше 4,5 – 60 руб.
Из - за невозможности вставки полей в отчет из разных таблиц, создадим запрос с именем
Запрос для отчета, который будет содержать поля Фамилия, Имя, Отчество, Группа из
таблицы Студенты, поле Оценка из таблицы Экзамены.
 Добавьте строку Групповые операции и выберите для поля оценка функцию Avg.
 В строке условия отбора для поля Оценка вставьте условие >4, для поля Группа в
строке бланка запроса ИЛИ вставьте условие Like 06*
Рис.4.


Перейдите на вкладку Отчеты. Выберите Создать – Конструктор. В качестве
источника выберите Запрос для отчета.
В область данных перетащите поля Фамилия, Имя, Отчество, Avg-Оценка.

Выберите группировку по полю Группа. Добавьте заголовок и примечание группы.
В заголовок группы перетащите из списка полей поле Группа.
 Левую часть поля (название) измените на Платежная ведомость для получения
стипендии группой.
 Измените свойства поля Avg-Оценка. Щелкните правой клавишей мыши по этому
полю, в контекстном меню выберите строку Свойства. В строке Вывод на экран
выберите Нет.
 Вставьте с панели элементов объект поле ab рядом с полем Отчество. Вызовите
окно свойств для данного объекта. В строке Данные вызовите построитель
выражении, нажав на |…| В построителе выражений наберите следующее:
= Switch([Avg-Оценка]>4 And [Avg-Оценка]<4,5;50;[Avg-Оценка] > 4,5 ;60 ;
Left([Группа];2) ="06";40)
Это выражение означает: если средний балл оценок больше 4 и меньше 4,5, то
назначить стипендию в размере 50 руб., если средний балл оценок больше 4,5,
назначить стипендию в размере 60 руб., если первые два знака в названии группы –
«06» назначить стипендию в размере 40 руб.
Функция выбора Switch(условие1; значение1; условие2; значение2;…условие N;
значение N). Заменяет несколько вложенных конструкций IIf.
 В строке Формат поля окна свойств выберите из списка значение Денежный.
 Рядом с вычисляемым полем размера стипендии добавьте объект Прямоугольник с
панели элементов.
 Разместите названия полей, как это показано на рисунке.
Рис.5.


В Примечание группы вставьте с панели элементов объект Разрыв страницы.
Для всех полей в Области данных в окне свойств выберите Тип границы
Сплошная.
Задание 3: Создать форму, которая выводит информацию о студентах по
вводимым фамилии и имени, а так же содержит текстовое поле, в котором
программным путем выводиться значение «Местный житель» или «Иногородний
житель».
Для начала необходимо создать запрос с именем Запрос для формы, в который
поместить все поля из таблицы Студенты. В строке условия отбора для поля
Фамилия ввести следующее выражение: [Введите фамилию], для поля Имя
[Введите имя].
Рис.6.


Создайте форму в режиме Конструктора Форма – Создать – Конструктор. В
качестве источника данных выберите Запрос Для Формы, созданный раннее.
Расположите поля в области данных, как показано на рисунке.
Рис.7.
 Закройте и сохраните форму с именем Информация о студентах. Откройте ее вновь
введите фамилию студент в поле диалогового окна, нажмите на кнопку ОК или Enter,
введите имя студента. Просмотрите выводимые данные.
Создадим кнопку, которая позволит, не выходя из формы, ввести данные другого
студента, для этого необходимо создать макрос.
 Перейдите на вкладку Макросы – Создать. В верхней строке из списка выберите
команду Закрыть. Укажите в строке Тип объекта – Форма, Имя объекта Информация о студентах.
 В следующей строке Макрокоманд выберите команду Открыть форму. Укажите имя
формы Информация о студентах. Закройте и сохраните с именем Макрос для кнопки.
Рис.8.

Перетащите с панели элементов в область данных объект Кнопка. В мастере
создания кнопок Выберите строку Разное и в соседнем окошке выберите строчку
Выполнить макрос.
 Нажмите Далее. Затем выберите из списка макросов Макрос для кнопки и нажмите
Далее.
 Выберите в качестве оформления кнопки Текст. Введите в поле вместо «выполнить
макрос» текст «Следующий запрос».
Добавим текстовое поле для вывода значений из программы.
 На панели элементов выберите объект Другие элементы в раскрывшемся
списке в конце выберите строку Microsoft Forms 2.0 TextBox. Растяните объект
на форме. Щелкните правой клавишей по данному объекту в строке Имя
введите Ghit.

На панели инструментов щелкните по кнопке программа
. Запустится
редактор программ Microsoft Visual Basic. Введите следующий текст
программы.
Рис.9.
Ме.Город – ссылка на поле Город текущей формы. Ме – служебный оператор,
который указывает на текущую форму (или отчет, запрос или др. объект для
которого создается программный код).
Данный программный код означает, если значение поля формы Город равно
Тирасполь, то значение текстового поля равно «Местный житель», иначе
значение текстового поля равно «Иногородний житель».
 Закройте форму и сохраните изменения.
 Откройте форму введите данные студента, потом в открывшейся форме
установите курсор в текстовое поле и убедитесь в правильности выводимого
значения, нажмите на кнопку и снова введите данные другого студента.

Результат выполнения покажите преподавателю.
В языке VBA, как и в других языках программирования, основными элементами,
управляющими ходом выполнения процедуры, являются условные операторы. Наиболее
простой из них - оператор If . . . Then:
If
Полина = "Ж" Then
Поздравление = "С 8 марта!"
End if
Если условие, заданное выражением между ключевыми словами If и Then выполняется,
соблюдаются инструкции внутри блока, ограниченного ключевыми словами Then и End
if. Иначе операторы между ключевыми словами не выполняются, а ACCESS перейдет к
обработке оператора, который следует за ключевыми слова End if. В случае
необходимости произвести два различных действия (одно при соблюдении условия, а
второе - нет), надлежит воспользоваться полной формой оператора If:
If
выражение Then
Оператор1
Else
Оператор2
End if
Если условие соблюдается, выполняется Оператор1 (или группа операторов,
расположенных между ключевыми словами Then и Else, а если не соблюдается Оператор2 (или группа операторов, расположенных между ключевыми словами Else и
End if.
Однако, не всегда возможны два варианта решения. Учитывая это, VBA предоставляет в
распоряжение пользователей оператор Select Case, предназначенный для выбора
одного из множеств вариантов решений:
Select Case Город
Case "Киев"
Код_МГТС = "044"
Case "Москва"
Код_МГТС = "495"
Case "Запорожье"
Код_МГТС = "061-2"
Case Else
Print "Я не знаю такого города!"
End Select
При выполнении этого оператора проверяется значение переменной Город. В
зависимости от результата проверки переменной Код_МГТС присваивается телефонной
код некоторого города. Если значение переменной Город не совпадает ни с одним из
значений, перечисленных в строках с ключевым словом Case, производится действие,
указанной между ключевыми словами Case Else и End Select.
Download