Лабораторная работа №4 Тема: Программирование на vba
1 Доработка формы Студенты БД Студенты
На форму Студенты необходимо добавить кнопки для редактирования каждого из словарей и просмотра отчета Студенты и их оценки. Пример формы Студенты приведен на рисунке 1.
Рисунок 1 – Доработанная форма Студенты
Для добавление кнопки Редактировать словарь Факультеты на форму необходимо:
-
перетащить кнопку с Панели элементов на форму и отказаться от использования мастера Создание кнопок;
-
в свойствах кнопки задать надпись кнопки Редактировать словарь Факультеты;
-
задать имя кнопки btnEditFclt;
-
на вкладке события свойств кнопки выбрать свойство Нажатие кнопки и нажать ;
-
в открывшемся окне VBE создать собственный модуль с помощью пунктов меню Insert->Module;
-
созданный модуль сохранить с именем, например MyModule;
-
указать в только что созданном модуле признак обязательного объявления переменных;
-
вставить процедуру в модуль с помощью пунктов меню Insert->Procedure (рисунок 2)
Рисунок 2 – Добавление процедуры OpenTableFclt
-
в тело процедуры добавить комментарий с описанием процедуры, команду для открытия таблицы Факультеты и инструкции по перехвату возможных ошибок (рисунок 3);
Рисунок 3 – Процедура OpenTableFclt
-
проверить работоспособность процедуры;
-
в модуле Form_Студенты в процедуре, обрабатывающей нажатие кнопки btnEditFclt вставить вызов процедуры OpenTableFclt.
Добавить оставшиеся кнопки на форму Студенты аналогично вышеописанному алгоритму.
Работа с датами и циклами
Подсчет рабочих дней
Встроенная функция VBA DateDiff быстро подсчитает общее количество календарных дней, но не существует такой функции, которая вычла бы из этого числа выходные.
В предлагаемом решении мы добавляем в форму Заказы БД Борей командную кнопку и текстовое поле. При щелчке на этой кнопке в новом текстовом поле отображается количество рабочих дней между датами начала и планового завершения проекта. Это позволит пользователю более точно оценить потенциально возможные трудозатраты.
Откройте форму Заказы в режиме конструктора и добавьте в нее командную кнопку и текстовое поле справа от элемента Дата окончания. Присвойте командной кнопке имя cmdCalculate, а текстовому полю txtBusinessDays. Установите значение свойства Вывод на экран текстового поля в Нет.
Щелкните на кнопке Code (программа) панели инструментов. Откроется окно редактора VBE и в нем окно модуля формы.
Введите следующую процедуру обработки события:
private Sub cmdCalculate_Click()
'Определяет количество рабочих дней,
'отведенных на выполнение проекта,
'исключая из общего количества выходные
Dim dtmStart As Date
Dim dtmEnd As Date
Dim intTotalDays As Integer
Dim intWeekendDays As Integer
Dim intBusinessDays As Integer
If isNull(ДатаРазмещения) Then
MsgBox "Введите дату размещения",
vbOKOnly, "Ошибка"
Exit Sub
End If
If IsNull(ДатаИсполнения) Then
MsgBox "Введите дату исполнения",
vbOKOnly, "Error"
Exit Sub
End If
dtmStart = ДатаРазмещения
dtmEnd = ДатаИсполнения
Select Case DatePart("w", dtmStart, vbMonday)
Case Is = 6
dtmStart = DateAdd("d", dtmStart, 2)
Case Is = 7
dtmStart = DateAdd("d", dtmStart, 1)
End Select
Select Case DatePart("w", dtmEnd, vbMonday)
Case Is = 6
dtmEnd = DateAdd("d", dtmEnd, -1)
Case Is = 7
dtmEnd = DateAdd("d", dtmEnd, -2)
End Select
intTotalDays = DateDiff("d", dtmStart, dtmEnd) + 1
intWeekendDays = DateDiff("ww", dtmStart, dtmEnd, vbMonday)*2
intBusinessDays = intTotalDays - intWeekendDays
txtBusinessDays = intBusinessDays
txtBusinessDays.Visible = True
End Sub
Сохраните программу и вернитесь в Access. Для этого щелкните на кнопке View Microsoft Office Access панели инструментов редактора VBE или на кнопке формы Заказы панели задач операционной системы.