18c0693f

Свойства объекта Recordset (продолжение)



Приведу пример создания фильтра:
Public Sub CreateFilter() 'Работа с фильтром
'Создать соединение CreateConnection 'Создать и выполнить команду 'задание свойств объекта Command Cmd1.ActiveConnection = Con1 Cmd1.CommandText = "SElect * From [Заказы]" Cmd1.CommandType = adCmdText Cmd1.Prepared = True ' вызов команды на исполнение Set Rst1 = Cmd1.Execute
'Задать фильтр Rst1.Filter = " [Сотрудник] = 'Петрова О.' AND " _ & "[Заказчик] = 'Книжная лавка'" With Rst1 .MoveFirst Do While Not .EOF 'Обработка текущей записи Debug.Print "Стоимость заказа = ", Rst1!Стоимость .MoveNext Loop End With End Sub
По-видимому, в дополнительных комментариях текст процедуры не нуждается. Не буду приводить и отладочных результатов, замечу, что все работало правильно, и на печать была выдана стоимость всех заказов, удовлетворяющих условию фильтра. Продолжим рассмотрение свойств:
  • Property Index As String. Устанавливает или возвращает строку, задающую имя индекса. Поля в таблицах базы данных могут быть индексированы. Система индексов позволяет быстрее находить нужные записи. Свойство Index используется в сочетании с методом поиска Seek для быстрого поиска записей в наборе по значениям индексируемого поля. Замечу, что не все Провайдеры позволяют работать с индексами, в частности Провайдер, обеспечивающий работу с базой данных Access, не поддерживает индексы.
  • Property MarshalOptions As MarshalOptionsEnum. Свойство позволяет управлять транспортировкой измененных записей набора на сервер. Применяется оно только на клиентской стороне и позволяет указать, нужно ли передавать серверу все записи или только те записи, которые подверглись изменениям. Свойство имеет всего два возможных значения: adMarshalAll, adMarshalModifiedOnly.
  • Property MaxRecords As Long. Позволяет ограничить число записей, одновременно передаваемых Провайдером от источника данных объекту Recordset. По умолчанию свойство имеет значение 0, указывающее, что ограничений на число передаваемых записей не устанавливается.
  • Property Properties As Properties. Второе из свойств, возвращающее объект - коллекцию Properties объекта Recordset. В этой большой коллекции, насчитывающей около сотни элементов - объектов класса Property собраны характеристики объекта Recordset, меняя которые можно управлять объектом. Многие из них задаются по умолчанию, обращение к ним позволяет выяснить текущие свойства объекта.
  • Property Sort As String. Если свойство Filter позволяет провести фильтрацию набора записей, то свойство Sort позволяет провести сортировку по одному или нескольким полям в порядке возрастания или убывания значений. Часто бывает удобнее сортировку и фильтрацию задавать не в операторе SQL при формировании объекта Recordset, а выполнять эти операции по мере необходимости, работая с уже созданным объектом и используя возможности, предоставляемые его свойствами. Вот пример подобной сортировки:


    Public Sub CreateSortedSet() 'Сортировать полученный набор данных 'Создать соединение CreateConnection 'Создать и выполнить команду 'задание свойств объекта Command Cmd1.ActiveConnection = Con1 Cmd1.CommandText = "Select * From [Заказчики]" Cmd1.CommandType = adCmdText Cmd1.Prepared = True ' вызов команды на исполнение Set Rst1 = Cmd1.Execute 'Задание критерия сортировки Rst1.Sort = "Город ASC" 'Работа с отсортированным набором With Rst1 .MoveFirst Do While Not .EOF 'Обработка текущей записи Debug.Print "Организация = ", Rst1!Название, Rst1!Город .MoveNext Loop
    End With End Sub
    Для простоты я ограничился сортировкой по одному полю, указав ASC - возрастающий порядок следования значений по этому полю.
  • Property Source As Variant. Свойство позволяет задать или выяснить, что является источником данных для объекта Recordset. При установке значением свойства может быть ссылка на объект Command или строка. Возвращается всегда только строка, если источником данных является объект Command, то строка содержит описание источника - соответствующий SQL-оператор. Источником может быть также имя таблицы или имя хранимой процедуры.
  • Property State As Long, Property Status As Long. Я уже рассказывал о свойстве State, составное значение которого позволяет определить, открыт или закрыт объект и состояние выполняемого метода. Свойство Status в отличие от свойства State характерно только для объекта Recordset и определяет статус текущей записи по отношению к пакетным обновлениям или другим групповым операциям. Также как и для свойства State, его значение представляет сумму значений констант, в совокупности, задающих статус записи. Константы принадлежат перечислению RecordStatusEnum, задающему 18 различных значений, приведу лишь несколько из них: adRecNew, adRecInvalid, adRecUnmodified. Заметьте, как обычно в таких случаях, значения констант задаются степенями числа 2, так что их сумма всегда представляет уникальное значение и однозначно определяет все слагаемые. Программисты говорят в таких ситуациях, что значение свойства задает маску.
  • Property StayInSync As Boolean. Система ADO позволяет создавать иерархические наборы записей, в которых запись объекта Recordset может ссылаться на своих потомков. Такие иерархические наборы поддерживаются специальной службой - Microsoft Data Shaping Service for OLE DB. Булево свойство StayInSync задается только для иерархических наборов и позволяет управлять навигацией по иерархии записей в таком наборе. Значение True указывает, что при изменении позиции родительской записи раздел (Chapter), содержащий потомков, будет указывать на новое положение родителя. При значении False ссылка не меняется, так что потомки получают нового родителя.




  • Все публикации раздела