
- •Лабораторные работы Лабораторная работа № 1 Анализ процедуры обработки события, формируемой мастером
- •Инструкции
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 2 Выполнение запросов в процедуре обработки события
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №3 Поиск данных с использованием индексов
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №4 Создание новой таблицы в базе данных
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №5 Фильтрация записей формы по значению, выбранному из списка другой формы
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №6 Создание таблицы и заполнение ее записями
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №7 Расчет в текущей записи однотабличной формы и обновление таблицы
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №10 Создание таблицы с помощью инструкции sql
- •Сортировка записей и ключевое слово order by
- •Ограничение набора записей с использованием критерия отбора
- •Обработка групп данных
- •Использование соединений для связи записей
- •Select студент.Нг, студент.Нс, студент.Фио, успеваемость.Кп, успеваемость.Табн, успеваемость.Видз, успеваемость.Оценка
- •Запросы на изменение
- •Откройте базу данных Учебный процесс.
- •Задание для самостоятельной работы
- •Используя инструкции sql, обеспечьте сортировку записей таблицы izd в базе данных Изделия в алфавитном порядке.
- •Используя форму sql базы данных Изделия, обеспечьте вывод только тех записей из таблицы отгрузка, для которых поле Количество отгружаемого товара имеет значение меньшее 60.
Лабораторная работа № 2 Выполнение запросов в процедуре обработки события
Цель лабораторной работы: научиться выполнять запросы в процедуре обработки события.
Создайте процедуру, которая подключается при закрытии формы Студент и обновляет число студентов в группах, если список студентов групп сокращался или пополнялся новыми записями.
Для подсчета изменившегося числа студентов в группе и обновления поля КОЛ в таблице ГРУППА воспользуйтесь созданными для этих целей запросами Число студентов в группах и Обновление ГРУППА_КОЛ.
Кроме того, для некоторых групп могут быть уничтожены все записи о студентах, а два предыдущих запроса не решают задачу обновления поля КОЛ в этом случае, поэтому потребуется запрос Обнуление ГРУППА_КОЛ без подчиненных в СТУДЕНТ: запрос на обновление.
Рис. 2.1. Запрос на обновление полей в таблице ГРУППА
Выполнение перечисленных запросов в процедуре позволит автоматически поддерживать правильные значения в таблице Группа и освободит пользователя от необходимости помнить и вручную выполнять разрозненные действия.
В процедуре для выполнения запросов может быть использован объект
DoCmd и его метод OpenQuery.
Поскольку при работе с формой может и не производиться изменение числа записей о студентах, предусмотрите в процедуре выход на диалог с пользователем, в результате которого определитесь, нужно ли выполнят обновление таблицы ГРУППА. Для этого используйте функцию MsgBox , которая выводит в диалоговом окне текст, заданный ее первым аргументом, а также кнопки, например, Да и Нет, определяемые вторым аргументом (рис. 2.2), и, как любая функция, возвращает значение. Функция MsgBox возвращает при нажатии кнопки Да числовое значение 1 и при нажатии кнопки Нет – 2.
Рис.2.2. Диалоговое окно функции MsgBox
Для анализа значения, возвращенного функцией, и принятия решения о дальнейших действиях используйте инструкцию условного перехода:
If условие Then
[инструкции]
[Else
[инструкции]]
End If
Эта инструкция в зависимости от значения выражения, заданного в условии (True или False), выполняет ту или иную группу инструкций.
Для создания процедуры выполните следующие действия:
1. Откройте форму Студент в режиме конструктора.
Рис. 2.3. Инструкции начала и конца процедуры обработки события Закрытие для формы Студент
2. Откройте окно свойств формы на вкладке События. В строке Закрытие (Close) выберите значение [Процедура обработки события] и щелкните на значке построителя в конце строки. Таким образом связывается выполнение создаваемой процедуру с закрытием формы. В открывшемся окне модуля формы в шаблон процедуры обработки события Private Sub Form close () (Рис. 2.3.) запишите инструкции процедуры.
3. Для определения переменных, сохраняющих строковые значения имен запросов и числовое значение, возвращаемое функцией MsgBox, запишите инструкцию Dim.
Dim stDocName, stDocName1, stDocName2 As String, Ответ As Integer
4. Запишите инструкцию присваивания переменной ответ значения, возвращаемого функцией MsgBox.
Ответ = MsgBox (“Вы добавляли или удаляли записи о студентах в группах ?”, vbYesNo)
5. Приставка vb в значении второго аргумента указывает на использование значения встроенной константы VBA, определяющего вывод в диалоговом окне кнопок Да и Нет.
6. Для проверки, нажата ли пользователем в диалоговом окне кнопка Нет и выполнения в этом случае инструкции выхода из процедуры Exit Sub, запишите инструкцию условного перехода, опустив необязательную ее часть.
If Ответ = vbNo Then
Exit Sub
End If
7. Если переменная Ответ получила значение, соответствующее нажатию кнопки Нет, выполняется инструкция, следующих за Then и завершающая процедуру по Exit Sub, иначе выполнение процедуры продолжается с инструкции, следующей за End if.
8. Для обновления поля КОЛ в таблице Группа запишите инструкции выполнения перечисленных выше запросов. Используйте объект DoCmd и применяемый к данному объекту метод OpenQuery. Аргументом этого метода является имя выполняемого запроса. Если для сохранения имен запросов предусмотрены переменные, им прежде чем они будут использованы, должны быть присвоены эти имена.
StDocName = “Число студентов в группах”
StDocName1 = “Обновление ГРУППА_КОЛ”
StDocName2 = “Обнуление ГРУППА_КОЛ без подчиненных в СТУДЕНТ”
DoCmd.SetWarnings False
DoCmd.OpenQuery (stDocName)
DoCmd.OpenQuery (stDocNamel)
DoCmd.OpenQuery (stDocName2)
DoCmd.SetWarnings True
9. Метод SetWarnings с аргументом False позволяет отключить вывод стандартных предупреждений на экран во время выполнения запросов. После выполнения запросов этот режим восстанавливается.
10. Закройте окно редактора VBA и возвратитесь в Access, выполнив команду File | Close and Return to Microsoft Access.
11. Откройте форму Студент или выполните ее открытие через любую другую форму, например, как в предыдущем упражнении. Добавьте или удалите несколько записей о студентах. Откройте таблицу Группа и убедитесь, что ваша процедура работает.
12. Измените инструкцию DoCmd, заменив в ней имена переменных на имена запросов. Удалите из инструкции описания переменные StDocName, StDocName1 и StDocName2 и инструкции присваивания им значений. Убедитесь, что и в этом случае процедура работает правильно.
В окончательном виде процедура может иметь вид, представленный ниже: