- •Основы программирования с использованием ado, доступ и работа с базами данных Access.
- •I. Два этапа подготовки работы с базами данных:
- •II. Практическая работа с базой данных:
- •Задания по работе с базой данных.
- •Доступ к данным из набора записей: Свойство Fields объекта Recordset.
- •Листинг 4. Извлечение данных из набора записей
- •Поиск записи.
- •Добавление новой записи
- •1. Извлечение значений из поля
- •2. Извлечение записей
Поиск записи.
Для этого в ADO - два метода — Find и Seek
Обычно достаточно уметь пользоваться только методом Find
Синтаксис метода Find:
Recordset.Find Criteria, SkipRows, SearchDirection, Start
Recordset - Объект типа Recordset, в котором нужно найти запись
Criteria - Выражение, определяющее критерий, используемый для поиска записи
SkipRows - Необязательное значение - определяет количество строк от текущей записи (или от записи, определенной в аргументе start), которые необходимо пропустить перед началом выполнения поиска. По умолчанию этот аргумент равен нулю
SearcDirection - Необязательная константа - определяет, в каком направлении будет осуществляться поиск. Для поиска вперед используется константа adSearchForward (установлена по умолчанию), для поиска назад используется константа adSearchBackward
Start - Необязательная закладка, определяющая запись, начиная с которой следует выполнять поиск
После вызова метода можно получить два результата:
Найдена запись, которая удовлетворяет заданному критерию.
В этом случае: указатель перемещается к этой записи.
Не найдена запись, которая удовлетворяет заданному критерию.
В этом случае:
- если аргумент SearchDirection равен adSearchForward, то поиск прекратится тогда, когда будет достигнут конец набора записей (свойство EOF будет равным True).
- если аргумент SearchDirection равен adSearchBackward, то поиск завершится, если будет достигнуто начало набора записей (свойство BOF будет равным True).
Листинг 6.Пример использования метода «Find»
Sub Поиск()
Dim нз As Recordset
'Создание обьекта Recordset
Set нз = CreateObject("ADODB.Recordset")
'Открытие обьекта
With нз
.Source = "Сотрудники"
.ActiveConnection = "db1"
.CursorType = adOpenKeyset
.Open
End With
'Запуск метода Find
'Recordset.Find Criteria, SkipRows, SearshDirection, Start
строка_критерия = "Город='Москва'"
нз.Find строка_критерия
'Цикл используется для поиска записей
'которые удовлетворяют категорию
Do While Not нз.EOF
'Вывод данных на экран
MsgBox нз("Фамилия") & " " & нз("Имя")
'Повторный поиск будет выполнен с пропуском текущей строчки
'так как аргумент SkipRows равен единице
нз.Find строка_критерия, 1
Loop
' Закрыть набор записей
нз.Close
Set нз = Nothing
End Sub
Редактирование записей.
Для редактирования записи необходимо выполнить следующие действия:
Изменить данные в одном или нескольких полях.
Этот процесс напоминает присвоение значения переменной.
Например:
нз("Должность")="Торговыйпредставитель"
нз('Цена') = 199,90
Обновить запись, чтобы внести новые данные в таблицу.
Для этого используется метод Update объекта Recordset.
Листинг7. Редактирование данных в наборе записей.
Sub Редактирование_записей()
Dim нз As Recordset
Dim строка_критерия As String
'Создание обьекта Recordset
Set нз = CreateObject("ADODB.Recordset")
'Открытие обьекта
With нз
.Source = "Сотрудники"
.ActiveConnection = "db1"
'константа adOpenKeyset - позволяет вставлять и изменять записи
.CursorType = adOpenKeyset
'константа adLockPessimistic - используется, когда нужно изминить
'несколько записей, а затем сразу обновить все записи
.LockType = adLockPessimistic
.Open
End With
'Вызов метода Find
строка_критерия = "Должность='Представитель'"
нз.Find строка_критерия
'Поиск записей, удовлетворяющих критерию
Do While Not нз.EOF
'Вывод данных на экран
нз("Должность") = "Торговый представитель"
'Вызов метода Update завершает внесение изменений в текущую запись
нз.Update
MsgBox нз("Фамилия") & " " & нз("Имя") & " " & нз("Должность")
'Повторный поиск с пропуском текущей строки
нз.Find строка_критерия
Loop
'Закрытие набора записей
нз.Close
Set нз = Nothing
End Sub