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

Как видно из определения, в Update(…), так же как и в AddNew(…) можно передавать массив имен (или номеров) модифицируемых полей и новые значения.

Пример добавления записи:

pRst->AddNew();

pRst->Fields->Item["au_lname"]->Value = _bstr_t("Усов");

pRst->Fields->Item["au_fname"]->Value = _bstr_t("ВиталийМ.");

pRst->Update();

Удалить запись в наборе записей можно с помощью метода Delete(…) объекта Recordset.

HRESULT Delete(enum AffectEnum AffectRecords);

AffectRecords принимает одно из следующих значений:

adAffectCurrent - удалить текущую строку(по умолчанию)

adAffectGroup - удаляет все строки, удовлетворяющие критерию свойства Filter.

adAffectAll - удаляет все записи.

adAffectAllChapters - удаляет все записи главы. (ссылка на диапазон строк источника данных. Как правило, ссылка на другой Recordset. Глава позволяет реализовать отношения наследник-родитель между объектами Recordset.)

Если Recordset находится в режиме непосредственного редактирования, то помеченные строки удаляются немедленно в источнике данных. Если же применяется режим пакетной модификации (наконец-то и до него дошли), то строки удалятся после вызова метода UpdateBatch().

Что же такое "режим пакетной модификации"??? Все очень просто - некоторые поставщики данных позволяют кэшировать выборки локально, вносить в них изменения и потом передавать всю выборку (или изменения в ней) источнику данных одновременно в одном пакете (а не по одной строке). Как отмечалось выше, для использования пакетной модификации необходимо при создании объекта Recordset использовать флаг adLockBatchOptimistic. Для передачи изменений в выборке источнику данных в пакетном режиме необходимо вызвать метод

HRESULT UpdateBatch(AffectEnum AffectRecords);

Где AffectRecords:

adAffectCurrent - обновить текущую строку(по умолчанию)

adAffectGroup - обновить все строки, удовлетворяющие критерию свойства Filter.

adAffectAll - обновить все записи.

adAffectAllChapters - обновить все записи главы. (ссылка на диапазон строк источника данных. Как правило, ссылка на другой Recordset. Глава позволяет реализовать отношения наследник-родитель между объектами Recordset.)

Если после модификации данных вы решили отменить изменения, сделать это можно с помощью методов CancelUpdate() и CancelBatch(AffectEnum AffectRecords) для режимов неотложной модификации и пакетной, соответственно.

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