CRecordset::Edit

virtual void Edit( );
throw( CDBException, CMemoryException );

Remarks

Call this member function to allow changes to the current record. After you call Edit, you can change the field data members by directly resetting their values. The operation is completed when you subsequently call the Update member function to save your changes on the data source.

Note   If you have implemented bulk row fetching, you cannot call Edit. This will result in a failed assertion. Although class CRecordset does not provide a mechanism for updating bulk rows of data, you can write your own functions by using the ODBC API function SQLSetPos. For an example of how to do this, see the sample DBFETCH. For more information about bulk row fetching, see the article Recordset: Fetching Records in Bulk (ODBC) in Visual C++ Programmer’s Guide.

Edit saves the values of the recordset’s data members. If you call Edit, make changes, then call Edit again, the record’s values are restored to what they were before the first Edit call.

In some cases, you may want to update a column by making it Null (containing no data). To do so, call SetFieldNull with a parameter of TRUE to mark the field Null; this also causes the column to be updated. If you want a field to be written to the data source even though its value has not changed, call SetFieldDirty with a parameter of TRUE. This works even if the field had the value Null.

If the data source supports transactions, you can make the Edit call part of a transaction. Note that you should call CDatabase::BeginTrans before calling Edit and after the recordset has been opened. Also note that calling CDatabase::CommitTrans is not a substitute for calling Update to complete the Edit operation. For more information about transactions, see class CDatabase.

Depending on the current locking mode, the record being updated may be locked by Edit until you call Update or scroll to another record, or it may be locked only during the Edit call. You can change the locking mode with SetLockingMode.

The previous value of the current record is restored if you scroll to a new record before calling Update. A CDBException is thrown if you call Edit for a recordset that cannot be updated or if there is no current record.

For more information, see the articles Transaction (ODBC) and Recordset: Locking Records (ODBC) in Visual C++ Programmer’s Guide.

Example

// Example for CRecordset::Edit
// To edit a record,
// First set up the edit buffer
rsCustSet.Edit( );

// Then edit field data members for the record
rsCustSet.m_dwCustID = 2795;
rsCustSet.m_strCustomer = "Jones Mfg";

// Finally, complete the operation
if( !rsCustSet.Update( ) )
    // Handle the failure to update

CRecordset OverviewClass MembersHierarchy Chart

See Also   CRecordset::Update, CRecordset::AddNew, CRecordset::Delete, CRecordset::SetFieldDirty, CRecordset::SetFieldNull, CRecordset::CanUpdate, CRecordset::CanTransact, CRecordset::SetLockingMode