7.1. Создание набора записей.

Объект Recordset можно создать несколькими способами: в результате выполнения команды (использование метода Execute() объекта Command или Connection), или с помощью метода Open() непосредственно объекта Recordset. Рассмотрим поподробнее последний вариант. Итак, метод Open().

HRESULT Open(const _variant_t &Source, const _variant_t &ActiveConnection, enum CursorTypeEnum CursorType, enum LockTypeEnum LockType, long Options);

Source - источник выборки (набора записей). Может быть как SQL строка (запрос), так и имя таблицы или хранимой процедуры на SQL сервере.

ActiveConnection - Соединение, используемое для создание набора записей (выборки). Может быть передано либо в виде строки соединения (при этом отпадает необходимость создания объекта Connection - ADO автоматически создает соединение, которое будет использовано для данного объекта Recordset. Указатель на такое соединение можно получить с помощью свойства объекта Recordset ActiveConnection), либо в виде указателя на уже созданное активное соединение.

CursorType - тип курсора для создаваемого объекта Recordset. Может принимать одно из следующих значений:

adOpenUnspecified - неопределенный тип курсора.

adOpenForwardOnly - односторонний курсор (значение по умолчанию). Не поддерживает методы MoveFirst() (к началу выборки), MoveLast() (к последней записи в выборке), MovePrevious()(к предыдущей записи в выборке). Также не поддерживает использование свойства RecordCount (количество записей в выборке). Не отслеживаются изменения и добавления, сделанные другими пользователями.

adOpenKeyset - курсор, управляемый по ключевому множеству, который может свободно перемещаться и находит некоторые виды изменений, внесенные в строки выборки. Число записей в таком наборе неизменно. Вы не сможете увидеть добавленных другими пользователями записей, удаленные другими пользователями записи остаются видимы в такой выборке, хотя и становятся недоступными.

adOpenDynamic - динамический курсор, который может перемещаться и определять все изменения, внесенные в данные, содержащиеся в выборке. Самый многофункциональный, но и самый дорогой по расходу памяти тип курсора.

adOpenStatic - статический курсор. В отличие от DAO, разрешается модифицировать все ADO Recordset, даже имеющие курсоры adForwardOnly и adOpenStatic. Однако при выборе таких курсоров для выборки все изменения, вносимые другими пользователями для вас невидимы.

LockType - Тип блокировки, используемый данным набором записей. Варианты:

adLockReadOnly - только чтение.

adLockPessimistic - блокирует строки, когда вы начинаете редактирование (если поставщик поддерживает данный тип).

adLockOptimistic - блокирует изменения только при передаче изменений в БД (поддерживается всеми поставщиками данных).

adLockBatchOptimistic - используется для пакетных операций модификации. Пакетная модификация позволяет выгружать множество записей, модифицировать их локально и отсылать изменения поставщику в одном пакете. Большинсто провайдеров не поддерживают эту блокировку.

Options - используется для указания вида Source. Варианты:

adCmdText - текстовая команда (в SQL соглашении).

adCmdTable - таблица или представление (она же - "вьюха", т.е.view).

adCmdStoredProc - хранимая процедура

adCmdUnknown - неизвестный тип (по умолчанию).

Ну что ж, попробуем открыть таблицу authors нашей многострадальной базы данных pubs. Предварительно еще надо определить, будет курсор серверным или клиентским. Сделаем мы это с помощью свойства CursorLocation объекта Recordset (варианты - adUseClient, adUseServer, adUseNone). Можно также ограничить число возвращаемых записей (свойство MaxRecords), задавать количество локально кэшируемых строк в наборе записей (свойство CacheSize - по умолчанию равно единице).

Пример:

_RecordsetPtr pRst;

_bstr_t strTableName = "authors";

pRst.CreateInstance(__uuidof(Recordset));

pRst->CursorLocation = adUseClient;

pRst->MaxRecords = 50;

pRst->CacheSize = 30;

pRst->Open(strTableName,_variant_t((IDispatch*)pConn,true),adOpenDynamic, adLocjOptimistic, adCmdTable);

7.2. Установка фильтра в наборе записей.

В ADO имеется механизм ограничения по какому-либо критерию возвращаемого набора записей - фильтрация выборки. Именно для целей фильтрации объект Recordset обладает свойством Filter.

Свойство Filter представляет собой расширение запроса, заданного в параметре Source Recordset'a. Строка, передаваемая в свойство Filter, должна иметь вид Имя_поля(столбца) - Оператор - Значение, например

pRst->Filter = "au_lname='White AND' au_fname LIKE 'J*' ";

Имя_поля - имя столбца из выборки Recordset.

Оператор - <, >, <=, >=, <>, =, или LIKE

Значение - значение, с которым сравнивается значение поля. Причем для строковых типов данных значение должно быть заключено в одинарные кавычки, для даты значение заключается между символами #. Допускается использование (как и в SQL синтаксисе) символов * и %, например при использовании оператора LIKE. Также допускается применение логических операторов AND и OR для составления комбинированного критерия фильтрации.

Свойство Filter также может принимать значение одной из нижеперечисленных констант:

adFilterNone - Отменяет текущее значение свойства Filter.

adFilterPendingRecords - В режиме пакетной модификации (см.ниже) это значение можно использовать для выбора только из тех строк, которые были изменены, но еще не модифицированы в базе данных.

adFilterAffectedRecords - Выбирает строки, для которых выполнялась последняя операция Delete(), Resync(), UpdateBatch(), CancelBatch().

adFilterFetchedRecords - выбирает строки, которые в настоящее время содержатся в локальном буфере.


Информация о работе «Введение в ADO»
Раздел: Информатика, программирование
Количество знаков с пробелами: 25509
Количество таблиц: 2
Количество изображений: 0

Похожие работы

Скачать
35963
32
2

... /загружать в/из файла. Его можно сохранять/загружать в/из текстовой строки. Он может загружать данные из объекта Record или какого-либо ресурса по URL. Его можно клонировать. Для иллюстрации работы с объектом Stream приведу-таки пример на VB6, который сохраняет изображение в файл без использования инструкции Put: Dim stream As New ADODB.stream 'Тип потока - бинарный stream.Type = ...

Скачать
31935
18
6

... string Company;  public string Phone;  public string Fax;  // Для отложенной загрузки списка заказов необходимо перейти  // от использования ArrayList к использованию специального класса из  // ObjectSpaces – ObjectList.  public ObjectList Orders = new ObjectList(); } public class Order {  private int _orderID = 0;  public int OrderID  { get {return _orderID;} ...

Скачать
114140
0
0

... данных базы и их представление. С помощью встроенных средств и инструментов базы данных создается пользовательский интерфейс, позволяющий управлять процессами ввода, хранения, обработки, обновления и представления информации базы данных.[2] 4 ЭТАПЫ РАЗРАБОТКА ПРОГРАММНОГО ПРОДУКТА Данная программа создана для учета успеваемости студентов. Для работы с программой необходимо нужные группы или ...

Скачать
79258
97
1

... форматами поддерживает OLE DB Persistence Provider. Кроме сохранения, можно также загружать (восстанавливать) объект Recordset из файлов. Сохранение и последующая загрузка рекордсета из файла в формате XML дали возможность использования XML-документов в качестве баз данных. OLE DB Persistence Provider жестко задает формат результирующего XML-документа: для описания структуры и типов узлов всегда ...

0 комментариев


Наверх