Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория и практические задания по ППО 2 семестр.doc
Скачиваний:
3
Добавлен:
05.05.2019
Размер:
140.8 Кб
Скачать

Поиск записи.

Для этого в 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

Редактирование записей.

Для редактирования записи необходимо выполнить следующие действия:

  1. Изменить данные в одном или нескольких полях.

Этот процесс напоминает присвоение значения переменной.

Например:

нз("Должность")="Торговыйпредставитель"

нз('Цена') = 199,90

  1. Обновить запись, чтобы внести новые данные в таблицу.

Для этого используется метод 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