Работа с объектом
RecordSet
Если создан объект RecordSet, то можно получить доступ к записям и их полям с помощью нескольких методов и свойств, идентичных методам и свойствам объекта RecordSet DAO. Количество возвращенных записей хранится в свойстве RecordCount, принимающем правильное значение только при перемещении на последнюю запись. Для RecordSet типа Forward-Only нельзя просто получить количество записей. Необходимо просканировать и обработать их все. При иных типах RecordSet можно переместиться с помощью метода MoveLast на последнюю запись, а затем вернуться к первой записи, используя метод MoveFirst. После этого для получения количества строк в объекте RecordSet можно использовать свойство RecordCount. Конечно, этот метод не будет работать с RecordSet типа Forward-Only.
Доступ к индивидуальным значениям полей в строке получают с помощью семейства Fields. Количество колонок в объекте RecordSet находится в свойстве Fields Count. К каждому из полей в текущей строке можно адресоваться с помощью индекса (это порядковый номер поля в SQL-выражении) или по его имени. Например, если используется SQL-выражение,
SELECT ProductName, ProductID FROM Products
то можно получить доступ к именам товаров в текущей записи с помощью выражений двух видов:
RecSet.Fields(0).Value
или
RecSet.Fields ("ProductName") .Value
(Можно опустить Value, как свойство, установленное по умолчанию для семейства Fields.)
Для сканирования объекта RecordSet используйте методы Move (MoveFirst, MoveLast, MovePrevious и MoveNext). В дополнение к методам навигации, объект RecordSet содержит метод AbsolutePosition,
который указывает на позицию текущей записи в объекте RecordSet.
Для сканирования RecordSet можно использовать цикл:
For Each rec In RecSet
{обработка текущей записи}
Next
или следующий фрагмент с циклом For...Next
RecSet.MoveLast
AllRecs = RecSet.RecordCount
RecSet.Move First
For i = 1 To AllRecs
{обработка текущей записи}
RecSet.MoveNext
Next
Похожий цикл используется для сканирования колонок
RecordSet. Имена полей получают с помощью свойства Fields(i).Name. Следующий цикл предназначен для печати имен колонок в наборе записей RecSet.
For Each fld In RecSet.Fields
Debug.Print fld.Name
Next
Можно отсортировать RecordSet в соответствии со значениями полей или отфильтровать их, чтобы отобрать записи, отвечающие определенному критерию. Извлекать рекомендуется только нужные записи в желаемом порядке. Когда это невозможно (или когда создан клиентский RecordSet и необходимо применять разные методы обработки разных записей), то используются свойства Sort и Filter объекта RecordSet.
Свойство Sort принимает в качестве аргумента имя поля, в соответствии с которым необходимо отсортировать RecordSet. Предположим, создан объект RecordSet с именами заказчиков из базы данных NWIND, и необходимо отсортировать их в соответствии с полем Country. Установите свойство Sort.
RSCustomers.Sort = "Country ASCENDING"
Для фильтрации выбранных записей в RecordSet используйте следующее выражение.
RSCustomers.Filter = "Country = 'Germany' "
RSCustomers. Filter — не метод, и он не возвращает RecordSet. А метод Move будет игнорировать записи, у которых значение поля Country не Germany.