CRecordset::Edit

Виртуальный void Edit( );
бросить ( CDBException, CMemoryException );

Примечания

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

Примечание   При реализации групповой выборки строк, вызвать редактироватьнельзя. Это приведет к неудачной утверждение. Хотя класс CRecordset не поддерживает механизм обновления массовая строк данных, вы можете написать свои собственные функции, используя функцию интерфейса API ODBC SQLSetPos. В качестве примера того, как это сделать, см. пример DBFETCH. Дополнительные сведения о групповой выборки строк, найти в статье набор записей: выборка записей (ODBC) в Руководстве по Visual C++ программист.

Редактировать сохраняет значения членов данных набора записей. Если вы звоните, редактировать, внести изменения, а затем вновь изменить , запись значения будут восстановлены на то, что они были до первого вызова редактировать.

В некоторых случаях может потребоваться обновить столбец, сделав его Null (содержащие данные отсутствуют). Для этого нужно вызовите метод SetFieldNull с параметром TRUE для обозначения поля Null; Это также приводит к столбец обновлен. Если вы хотите поля для записи к источнику данных, даже если его значение не изменилось, вызовите SetFieldDirty с параметром TRUE. Это работает, даже если поле имеет значение Null.

Если источник данных поддерживает транзакции, можно сделать редактирования вызова частью транзакции. Обратите внимание, что необходимо вызвать CDatabase::BeginTrans перед вызовом, редактировать и после открытия набора записей. Также Заметьте, что вызов CDatabase::CommitTrans не подменяет вызова Update для завершения операции редактирования . Для получения дополнительных сведений о транзакциях содержится класса CDatabase.

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

Если вы перечисляете к новой записи перед вызовом Updateвосстанавливается предыдущее значение текущей записи. Если Вы призываете редактирования набора записей, которые не могут быть обновлены или если нет текущей записи вызывается CDBException.

Для получения дополнительной информации, обратитесь к статьям Транзакций (ODBC) и набор записей: Блокировка записей (ODBC) в Руководстве по Visual C++ программист.

Пример

 / / Пример для CRecordset::Edit
/ / Для редактирования записи,
/ / Настроить буфер редактирования
rsCustSet.Edit ();

/ / Нажмите изменить члены данных поля для записи
rsCustSet.m_dwCustID = 2795;
rsCustSet.m_strCustomer = «Джонс Mfg»;

/ / Наконец, завершить операцию
Если (! rsCustSet.Update ())
    / / Обработать сбой обновления

Обзор CRecordsetЧлены класса | Иерархическая схема

См. такжеnbsp;CRecordset::Update, CRecordset::Add&New, CRecordset::Delete, CRecordset::SetFieldDirty, CRecordset::SetFieldNull, CRecordset::CanUpdate, CRecordset::CanTransact, CRecordset::SetLockingMode

Index