Visual Basic 6. Руководство разработчика

       

Работа с объектом


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.


Содержание раздела