Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA_Labs.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
8.08 Mб
Скачать

Задание для самостоятельной работы

Создайте процедуру, которая подключается при закрытии формы IZD и обновляет таблицу IZD, если список изделий сокра­щался или пополнялся новыми записями.

Контрольные вопросы

  1. Какой метод объекта DoCmd позволяет открыть форму, выполнить за­прос

  2. Какая инструкция позволяет из процедуры вывести на экран сообще­ние?

  3. Какого типа значение возвращает функция MsgBox?

  4. Можно ли в текст сообщения MsgBox включить значение элемента управления формы?

  5. Чем отличается функция MsgBox от инструкции Msgвох

  6. Какая инструкция позволяет переходить на выполнение различных ветвей программы?

  7. Какая инструкция позволяет выполнить перехват ошибок в процедуре и передачу управления программе обработки ошибок?

  8. В каком свойстве, какого объекта формируется текст стандартного сообщения об ошибке?

Лабораторная работа №3 Поиск данных с использованием индексов

Цель лабораторной работы: научиться применять метод Seek, выполняющий поиск нужной записи с использованием индексов.

Рассмотрим, как найти данные о студенте в таблице базы данных Учебный процесс по первичному ключу. Напомним, что таблица СТУДЕНТ имеет составной ключ, включающий поля НГ (Номер группы) и НС (Номер сту­дента в группе).

Для выполнения процедур поиска воспользуемся кнопочной формой Поиск. Создадим эту форму в режиме конструктора форм, не выбирая для нее ис­точника данных. Создадим кнопку для запуска процедуры, используя па­нель элементов при отключенном мастере. В режиме формы она может иметь вид, представленный на рис. 3.1.

Рис. 3.1. Кнопочная форма для запуска процедуры

Для быстрого поиска записи по первичному составному ключу используйте метод Seek объекта Recordset. Объект Recordset представляет набор записей, который обеспечивает доступ к записям набора и обработку каждой из них. Для создания набора записей используйте метод OpenRecordset объекта Database – база данных.

Метод Seek применяется к индексированному набору записей объекту Recordset, источником записей для которого является таблица. Находит запись, удовлетворяющую заданным условиям для текущего индекса, и делает эту запись текущей. Текущий индекс указывается с помощью свойства Index объекта Recordset перед вызовом метода Seek.

Для выполнения сформулированной задачи в процедуре понадобятся объектная переменная типа Database для хранения ссылки на объект, представляющий базу данных, и объектная переменная типа Recordset для хранения ссылки на объект, представляющий набор записей. Синтаксис методов Seek и OpenRecordset требует использования объектной переменной для представления существующего табличного объекта Recordset и объекта Database.

Ниже приводится подробное объяснение используемых в процедуре инст­рукций.

1. Откройте окно модуля формы, щелкнув на кнопке панели инструментов Программа. Форма должна быть закрыта или находиться в режиме конст­руктора.

2. В шаблон процедуры обработки события Click (нажатие кнопки) для кнопки поиска по первичному ключу (идентификатору) Private Sub Кнопка_ Click() запишите приведенные ниже инструкции процедуры.

3. Инструкции

Dim dbsУчебный_процесс As Database

Dim rstСтудент As Recordset

описывают объектные переменные для хранения ссылок на объекты базы данных и набор записей.

4. Для присваивания объектной переменной ссылки используется инструкция Set.

Инструкция

Set dbsУчебный_процесс = CurrentDb()

присваивает объектной переменной типа Database значение ссылки на текущую базу данных.

5. Для поиска записи в таблице СТУДЕНТ с использованием индекса соз­дайте на ее основе набор записей. Используйте для этого метод OpenRecordset объекта Database и сохраните ссылку на этот объект в объектной переменной rstСтудент:

Set rstСтудент = dbsУчебный_процесс.OpenRecordset("СТУДЕНТ", DbOpenTable)

6. Прежде, чем использовать метод Seek, присвойте свойству Index набора записей имя первичного индекса таблицы Студент. Метод Seek будет производить поиск записи, используя этот индекс. Напомним, индекс с именем PrimaryKey построен по ключу таблицы НГ+НС.

rstСтудент.Index = "PrimaryKey"

7. Для ввода параметров поиска НГ и НС используйте функцию InputBox, которая выводит на экран диалоговое окно с полем ввода и организует ожидание ввода текста. Если пользователь нажмет кнопку ОК, в этом окне функция возвращает содержимое поля ввода. Присвойте введенное пользователем значение параметра строковым переменным strNG и strNS:

strNG = InputBox("Введи номер группы", "Ввод параметров поиска")

strNS = InputBox("Введи номер студента", "Ввод параметров поиска")

8. Первый аргумент функции InputBox определяет текст, отображаемый в окне диалога. Второй аргумент определяет текст, отображаемый в заголовке окна диалога. Третий аргумент определяет текст, отображаемый в поле ввода.

9. Для поиска записи используйте метод Seek, примененный к набору записей rstCтудент. Этот метод находит запись, в которой значения первичного составного ключа равны указанным в аргументах значениям, делает ее текущей:

rstСтудент.Seek "=", strNG, strNS

10. Для проверки результата поиска используйте свойство NoMatch набора записей rstCтудент. Свойство приобретает значение True, если запись с данным ключом не найдена, и False - в противном случае. Использование значения этого свойства в инструкции условного перехода if ... Then ... End if позволяет направить выполнение процедуры по различным ветвям.

If rstСтудент.NoMatch Then

MsgBox "Идентификатор не найден"

Exit Sub

End If

11. В рассмотренной процедуре отработаны далеко не все ситуации, которые могут возникнуть при ее выполнении. В частности, можно предусмотреть реакцию на нажатие кнопки Отмена (Cancel) в диалоговом окне функции InputBox. Если пользователь нажмет кнопку ОК или клавишу <Enter>, функция InputBox возвратит содержимое поля ввода. Если пользователь нажмет кнопку Отмена (Cancel), функция возвратит пустую строку. С помощью инструкции If не сложно организовать проверку значения, возвращаемого функцией InputBox и в случае возврата пустой строки организовать выполнение процедуры по некоторой другой ветке.

12. Для вывода данных из полей найденной записи используйте инструкцию MsgBox, результаты выполнения которой приведены на рис. 3.2.

Рис. 3.2. Окна ввода значений для строковых переменных

Рис 3.3. Результат поиска по идентификатору

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]