Freigeben über


CRecordset::Edit

Ermöglicht Änderungen am aktuellen Datensatz.

virtual void Edit( );

Hinweise

Nachdem Sie Bearbeiten aufrufen, können Sie die Felddatenmember ändern, indem Sie direkt ihre Werte zurücksetzen.Der Vorgang ist abgeschlossen, wenn Sie später die Update-Memberfunktion aufrufen, um die Änderungen in der Datenquelle zu speichern.

HinweisHinweis

Wenn Sie das gesammelte Abrufen von Zeilen implementiert haben, können Sie Bearbeiten nicht aufrufen.Dies führt zu einem Assertionsfehler.Obwohl Klasse CRecordset keinen Mechanismus zum Aktualisieren von Datenzeilen bereitstellt, können Sie eigene Funktionen schreiben, indem Sie die ODBC-API-Funktion SQLSetPos verwenden.Weitere Informationen über das gesammelte Abrufen von Zeilen, finden Sie im Artikel Recordset: Datensätzen in einer Sammeloperation (ODBC).

Bearbeiten speichert die Werte der Datenmember des Recordsets.Wenn Sie Bearbeiten aufrufen, nehmen Sie Änderungen vor, und rufen Sie dann Bearbeiten erneut, die Werte des Datensatzes werden wiederhergestellt zu auf, was sie vor dem ersten Aufruf Bearbeiten waren.

In einigen Fällen müssen Sie eine Spalte aktualisieren, indem Sie sie ungültig zu machen vorliegt (keine Daten enthalten).Hierzu, rufen Sie SetFieldNull mit einem Parameter von TRUE auf um die Feld NULL zu markieren, dieses bewirkt auch die Spalte aktualisiert.Wenn Sie ein Feld in die Datenquelle geschrieben werden, obwohl der Wert nicht geändert hat, rufen Sie SetFieldDirty mit einem Parameter von TRUE auf.Dies funktioniert, selbst wenn das Feld den Wert NULL hat.

Wenn die Datenquelle Transaktionen unterstützt, können Sie den Bearbeiten Aufrufsteil aus einer Transaktion ausführen.Beachten Sie, dass Sie CDatabase::BeginTrans aufrufen sollten, bevor Sie Bearbeiten aufrufen und nachdem das Recordset geöffnet wurde.Beachten Sie auch, dass CDatabase::CommitTrans aufzurufen, kein Ersatz für das Aufrufen von Update, um den Vorgang abzuschließen Bearbeiten ist.Weitere Informationen über Transaktionen, finden Sie unter CDatabase-Klasse.

Je nach dem aktuellen Sperrverhalten wird der Datensatz möglicherweise, der aktualisiert wird, durch Bearbeiten gesperrt, bis Sie Update aufrufen oder zu einem anderen Datensatz wechseln, oder er möglicherweise wird nur während des Aufrufs Bearbeiten gesperrt.Sie können das Sperrverhalten mit SetLockingMode ändern.

Der vorherige Wert des aktuellen Datensatzes wird wiederhergestellt, wenn Sie zu einem neuen Datensatz wechseln, bevor Sie Update aufrufen.CDBException wird ausgelöst, wenn Sie Bearbeiten für ein Recordset aufrufen, das nicht aktualisiert werden kann, oder wenn es keinen aktuellen Datensatz gibt.

Weitere Informationen finden Sie in Artikel Transaktion (ODBC) und Recordset: Sperren von Datensätzen (ODBC).

Ausnahmen

Diese Methode kann Ausnahmen des Typs CDBException* und CMemoryException* auslösen.

Beispiel

// To edit a record, first set up the edit buffer
rsCustSet.Edit();

// Then edit field data members for the record
rsCustSet.m_BillingID = 2795;
rsCustSet.m_ContactFirstName = _T("Jones Mfg");

// Finally, complete the operation
if(!rsCustSet.Update())
{
    // Handle the failure to update
    AfxMessageBox(_T("Couldn't update record!"));
}

Anforderungen

Header: afxdb.h

Siehe auch

Referenz

CRecordset-Klasse

Hierarchien-Diagramm

CRecordset::Update

CRecordset::AddNew

CRecordset::Delete

CRecordset::SetFieldDirty

CRecordset::SetFieldNull

CRecordset::CanUpdate

CRecordset::CanTransact

CRecordset::SetLockingMode