
- •Лабораторные работы Лабораторная работа № 1 Анализ процедуры обработки события, формируемой мастером
- •Инструкции
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 2 Выполнение запросов в процедуре обработки события
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №3 Поиск данных с использованием индексов
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №4 Создание новой таблицы в базе данных
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №5 Фильтрация записей формы по значению, выбранному из списка другой формы
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №6 Создание таблицы и заполнение ее записями
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №7 Расчет в текущей записи однотабличной формы и обновление таблицы
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №10 Создание таблицы с помощью инструкции sql
- •Сортировка записей и ключевое слово order by
- •Ограничение набора записей с использованием критерия отбора
- •Обработка групп данных
- •Использование соединений для связи записей
- •Select студент.Нг, студент.Нс, студент.Фио, успеваемость.Кп, успеваемость.Табн, успеваемость.Видз, успеваемость.Оценка
- •Запросы на изменение
- •Откройте базу данных Учебный процесс.
- •Задание для самостоятельной работы
- •Используя инструкции sql, обеспечьте сортировку записей таблицы izd в базе данных Изделия в алфавитном порядке.
- •Используя форму sql базы данных Изделия, обеспечьте вывод только тех записей из таблицы отгрузка, для которых поле Количество отгружаемого товара имеет значение меньшее 60.
Задание для самостоятельной работы
Создайте процедуру, которая подключается при закрытии формы IZD и обновляет таблицу IZD, если список изделий сокращался или пополнялся новыми записями.
Контрольные вопросы
Какой метод объекта DoCmd позволяет открыть форму, выполнить запрос
Какая инструкция позволяет из процедуры вывести на экран сообщение?
Какого типа значение возвращает функция MsgBox?
Можно ли в текст сообщения MsgBox включить значение элемента управления формы?
Чем отличается функция MsgBox от инструкции Msgвох
Какая инструкция позволяет переходить на выполнение различных ветвей программы?
Какая инструкция позволяет выполнить перехват ошибок в процедуре и передачу управления программе обработки ошибок?
В каком свойстве, какого объекта формируется текст стандартного сообщения об ошибке?
Лабораторная работа №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. Результат поиска по идентификатору