52953.fb2 VBA для чайников - читать онлайн бесплатно полную версию книги . Страница 111

VBA для чайников - читать онлайн бесплатно полную версию книги . Страница 111

If rstY.30F and rstY.EOF Then

MsgВох "Записи в этом наборе отсутствуют!"

End If

ADO позволяет вам перемещаться по набору записей достаточно легко. Например, для перемещения к первой записи в наборе используется метод MoveFirst, для перемещения к последней записи в наборе- метод MoveLast, а для перемещения к следующей -1ли предыдущей записи в наборе- метод MoveNext или MovePr evi ous соответственно. Метод Move позволяет вам перемещаться на определенное количество записей в наборе вперед или назад. Например, инструкция rstZ.Move -3 перемещает на три записи назад.

Если вы точно знаете, что захотите вернуться к определенной записи в дальнейшем, создайте для этой записи закладку. При работе с записью присвойте переменной значение свойства Bookmark объекта Recordset, как показано ниже:

varBookmark1 = rstA.Bookmark

После этого вы можете вернуться к этой закладке в дальнейшем, просто обратив инструкции:

rstA.Bookmark = varBookmark1

Метод Seek, а также четыре метода Find ( FindFist, FindLat, FindNext и FindPrevious ) позволяют вам отследить определенную запись, базируясь на ее содержимом. Поскольку метод Seek обнаруживает целевую запись, используя индексный номер, он работает намного быстрее, чем методы Find, однако, прежде чем вы сможете его использовать, содержимое базы данных должно быть проиндексировано.

Используйте метод AddNew для занесения новой записи в набор или перехода к новой записи. Если вы уже создали новый объект Recordset под названием rstIng, все, что вам необходимо для добавления новой записи, - это инструкция rst.Ing. После этого вы можете приступать к заполнению полей записи (подробности в разделе '"Изменение данных поля" дальше в настоящей главе). Однако, если хотите, можете указать значения полей сразу при создании новой записи. Метод -AddXew позволяет вам указывать поля и их значения, как показано ниже:

With rstIng

Array ( "Имя", "Возраст", "Пол"; .

Array("Анна", 42, "Ж")

End With

Как видно из этого примера, вы передаете аргументы методу AddNew в виде пары массивов, первый из которых содержит имена полей, а второй - их значения. В этом примере я использовал функцию Array VBA для создания на ходу массива, содержащего строковые значения. Вместо этого вы можете использовать переменные, представляющие массивы, которые вы создали раньше. В любом случае подобный прием для обеспечения значений полей массивов в момент создания новой записи означает, что вам не нужно вводить отдельную строку кода для каждого поля.

Для удаления текущей записи предназначен метод Delete.

Работа с текущим значением определенного поля с помощью программного кода так же проста, как и считывание значения свойства Value этого поля. Укажите поле по имени или по его индексному номеру, как показано в приведенных ниже примерах. Обратите внимание на то, что свойство Value является свойством по умолчанию, поэтому указывать его в коде не обязательно:

If rstYGate.Fields ("Service visits").Value >10

MsgBox "This unitneeds a major over haul!"

End If

strCurrentFieldData = rstYGate.Fields(3)

Поскольку коллекция Fields является коллекцией по умолчанию объекта Recordset, вам не обязательно указывать ее по имени. Для обращения к полю просто укажите его имя, предварительно поставив восклицательный знак и заключив в квадратные скобки имена, содержащие пробелы: rstYGatelDate = #5/15/2001#

With rstYGate

intltems =![Oil cans]

End With

Изменение (обновление) данных поля определенной записи с помощью ADO совсем несложно. Все, что вам необходимо сделать, - указать новое значение, после чего переместиться к другой записи, как показано ниже (здесь предполагается, что набор записей rstBucket уже открыт и содержит определенные данные):

KithrstBucket

.Fields ( 0).Value = "Love"

.MoveNext

End With

А если вы не хотите перемещаться от текущей записи, можно внести изменения в базу данных, воспользовавшись методом Update. В приведенном ниже примере я воспользовался преимуществами, обеспечиваемыми стандартным состоянием коллекции Fields и свойством Value, чтобы свести к минимуму код, который необходимо написать:

With rstBucket

!Value =8.93

.Update

End With

Как и метод AddNew, метод UpDate позволяет вам передать значения новых полей с помощью пары массивов, как показано ниже:

With rstBucket

.Update Array("Имя", "Звание", "Любимый напиток"),

Array("Лола", "Младший лейтенант", "Кофе")

End With

Используйте цикл Do для проверки или операций с несколькими записями в наборе, как показано в следующем примере;

'Циклическое перемещение между записями в наборе

With rstInPeace

Do Until .EOF

Debug.Print.Fields(0)

.MoveNext

Loop

End With

SetrstInPeace = Nothing

End Sub

Использование объекта Command