Статья: Введение в ADO

}

В примере мы выводим данные о полях одной записи (по умолчанию это первая строка выборки). Рассмотрим методы перемещения по выборке данных.

Чтобы перейти к первой строке набора записей можно применить метод MoveFirst() объекта Recordset. Методы MoveNext(), MoveLast() и MovePrevious() позволяют перемещаться по выборке, соответственно, к следующей записи, к последней и предыдущей (если эти перемещения допускает тип курсора).

Объект Recordset имеет свойства EOF и BOF (название свойства EOF мы изменили при подключении msado15.dll - см.выше), которые позволяют определить, что при перемещении по набору записей достигнута последняя (EOF) или первая (BOF) запись. Происходит это следующим образом: если при перемещении по выборке достигнута первая запись, то при следующем вызове MovePrevious() свойство BOF приобретает значение TRUE, аналогично, если позиционирована последняя запись, то при использовании MoveNext() значение TRUE приобретает свойство EOF объекта Recordset.

Пример:

int nNumFields = pRst->Fields->Count;

while(!pRst->ADOEOF){

for(int i=0;i<nNumFields;i++)

{

_bstr_t strName = pRst->Fields->Item[(_variant_t)I]->Name;

_bstr_t strValue = pRst->Fields->Item[(_variant_t)I]->Value;

TRACE(" %S = %S (тип: %d) ", (LPCTSTR)strName, (LPCTSTR) strValue, (short) pRst->Fields->Item(_variant_t)I]->Type);

}

pRst->MoveNext();

}

Также для перемещения по выборке данных можно воспользоваться методом

HRESULT Move(long NumRecords, const _variant_t &Start = vtMissing);

Знаковое целое NumRecords показывает, на сколько записей необходимо переместится по выборке (если NumRecords > 0, то переместиться вперед, если NumRecords < 0, то назад).

Параметр Start задает начальное положение указателя текущей записи (если Start = 0, то перемещение произойдет относительно текущей записи, иначе в Start надо передавать так называемую закладку

(Значение закладки для текущей строки можно получить из свойства Bookmark выборки. Если сохранить это значение в какой-либо переменной, то потом его можно присвоить свойству Bookmark и снова сделать эту строку текущей. Проверить, что набор записей поддерживает закладки можно с помощью метода Support() объекта Recordset.)

на требуемую начальную запись).

ADO Recordset позволяет производить так называемый постраничный просмотр выборки. Для этого необходимо свойстве в PageSize объекта Recordset указать количество строк, составляющих одну страницу. При этом из свойства PageCount можно узнать о количестве страниц в выборке.

7.4. Модификация данных.

Вставка строк в Recordset осуществляется посредством методов AddNew() и Update().

Метод AddNew() непосредственно добавляет новую строку (и делает ее текущей) в наборе записей.

HRESULT AddNew(const _variant_t & FieldList, const _variant_t &Values);

FieldList - массив имен или номеров инициализируемых в строке полей.

Values - массив инициализирующих значений для этих полей.

Далее строку можно модифицировать с помощью объектов коллекции Fields (если это необходимо), после чего изменения можно сохранить в базе данных, вызвав метод Update() (если при вызове метода AddNew() в него передавались инициализирующие значения, Update() вызывать не надо).

К-во Просмотров: 494
Бесплатно скачать Статья: Введение в ADO