Пример программы поиска

Справочная информация

Для организации обращения к базе данных, созданной средствами СУБД MS Access, могут быть использованы модели данных DAO (Data Access Objects), ADO (ActiveX Data Objects), ODBCDirect (Open Data Base Connectivity Direct). Первая из них является наиболее апробированной и удобнее других описывает доступ к файлам Access.

Для извлечения данных с помощью объектного доступа (DAO) необходимо в общем случае:

1. Создать рабочую область (Объект Workspaсe);

2. Открыть базу данных (объект Database);

3. Создать набор записей (объект Recordset);

4. Выполнить непосредственное обращение к конкретным записям и полям;

5. Закрыть набор данных;

6. Закрыть базу данных;

7. Закрыть рабочую область (завершить сеанс работы).

При запуске программ VBA из среды СУБД Access необходимость в пунктах 1 и 7 отпадает, т.к. СУБД сама выполняет эти действия, а пункты 2 и 6 выполняет пользователь, открывая и закрывая на время сеанса работы ту или иную базу данных. Таким образом, для обработки объектов в программе достаточно обратиться к открытой базе данных методом CurrentDb и выполнить пункты 3, 4 и 5. Например, для обращения к записям таблицы Студенты учебной базы данных Студент.mdb необходимо создать следующий фрагмент кода:

 

‘База данных Студент.mdb должна быть открыта средствами

‘СУБД Access

‘объявление объектных переменных

Dim База, Запись As Variant

‘присвоение переменной ссылки на открытую (текущую) базу ‘данных

Set База = CurrentDb

‘присвоение объектной переменной ссылки на набор записей ‘таблицы Студенты.mdb

Set Запись = База.OpenRecordSet("Студенты")

‘операторы обработки записей таблицы Студенты.mdb

‘закрытие набора записей таблицы Студенты.mdb

Запись.Close

 

Перечень используемых объектов, их свойств, событий и методов можно увидеть в окне Object Browser редактора VBA (меню View à Object Browser ). Основные методы и свойства объекта Recordset, которые будут использованы нами в дальнейшем описании, приведены в прилож. 16.

При обработке таблиц или запросов обычно выполняются операции по поиску, редактированию, удалению, просмотру, добавлению записей и расчету. Примеры программ, реализующих данные операции, приведены ниже.

 

Требуется создать процедуру поиска записей в таблице Студенты учебной базы данных. Поиск осуществляется по фамилии студента, значение которой вводится с клавиатуры. Если записи найдены, то выводится номер найденной записи с указанием фамилии, имени и отчества студента. Если подобных записей нет, то выводится сообщение об этом.

 

'Последовательный поиск по фамилии и вывод на экран

‘Программа не проверяет корректность введенной с клавиатуры фамилии

Sub Поиск()

Dim База, Запись As Variant

Dim p As String * 20, i As Integer, признак As Boolean

Set База = CurrentDb

Set Запись = База.OpenRecordSet("Студенты")

признак = False

'признак характеризует хотя бы одну найденную запись

p = InputBox("Введите фамилию", "Поиск", "Шариков")

If RTrim(p) = Empty Then Exit Sub

With Запись

Do Until Запись.EOF = True 'Свойство "End of File" - признак конца файла

If RTrim(![Фамилия].Value) = RTrim(p) Then

i = i + 1

признак = True

MsgBox str(i) & "-я запись. Студент " & ![Фамилия].Value _ & " " & ![Имя].Value & " " & [Отчество].Value

End If

.MoveNext 'метод перехода к следующей записи

Loop

If признак = False Then MsgBox "Записи с фамилией " _

& p & "отсутствуют"

.Close

End With

End Sub