CRecordset::Edit

virtuelle privatevoid Edit( );
werfen ( CDBException, CMemoryException );

Bemerkungen

Rufen Sie diese Memberfunktion um Änderungen am aktuellen Datensatz zu ermöglichen. Nach dem Aufruf von Bearbeitenkönnen Sie die Felddatenmember ändern, indem Sie direkt ihre Werte zurücksetzen. Der Vorgang ist abgeschlossen, wenn Sie anschließend zum Speichern der Änderungen in der Datenquelle die Update -Memberfunktion aufrufen.

Hinweis&Nbsp;  Wenn Sie das gesammelte Abrufen von Zeilen implementiert haben, können nicht Sie Bearbeitenaufrufen. Dadurch wird eine Assertionsmeldung. Obwohl CRecordset -Klasse nicht über einen Mechanismus zum Aktualisieren von Zeilen Massenkopieren von Daten bereitstellt, können Sie eigene Funktionen schreiben, mithilfe der ODBC-API-Funktion SQLSetPos. Ein Beispiel für wie Sie dies tun, finden Sie im Beispiel DBFETCH. Weitere Informationen über gesammelte finden Sie im Artikel Recordset: Abrufen von Datensätzen in einer Sammeloperation (ODBC) im Visual C++ Programmer's Guide.

Bearbeiten , speichert die Werte von Datenmembern des Recordsets. Wenn Sie Bearbeiten aufrufen, Änderungen vornehmen, dann erneut Bearbeiten rufen , werden die Werte des Datensatzes wiederhergestellt, was sie vor dem ersten Aufruf von Bearbeiten waren.

In einigen Fällen können Sie eine Spalte aktualisieren, indem es Null (enthält keine Daten) zu machen. Hierzu rufen Sie SetFieldNull mit einem Parameter von TRUE , markieren Sie das Feld Null; Dies führt dazu, dass die Spalte aktualisiert werden. Möchten Sie ein Feld in der Datenquelle geschrieben werden, auch wenn der Wert nicht geändert hat, rufen Sie SetFieldDirty mit einem Parameter von TRUE. Dies funktioniert auch, wenn das Feld den Wert Null hatte.

Wenn die Datenquelle Transaktionen unterstützt, stellen Sie die Bearbeiten Teil einer Transaktion aufrufen. Beachten Sie, dass Sie CDatabase::BeginTrans aufrufen soll, vor dem Aufruf von Bearbeiten und nachdem das Recordset geöffnet wurde. Beachten Sie auch, dass aufrufen CDatabase::CommitTrans kein Ersatz für das Aufrufen von Update zum Abschließen des Vorgangs zu bearbeiten ist. Weitere Informationen über Transaktionen finden Sie unter CDatabase -Klasse.

Je nach das aktuelle Sperrverhalten kann der Datensatz aktualisiert bis Sie Update oder Blättern Sie zu einem anderen Datensatz aufrufen, oder es möglicherweise gesperrt durch Bearbeiten gesperrt werden nur während des Aufrufs zu bearbeiten . Sie können das Sperrverhalten mit SetLockingMode ändern.

Der vorherige Wert des aktuellen Datensatzes wird wiederhergestellt, wenn Sie zu einem neuen Datensatz Blättern, bevor Sie Updateaufrufen. Ein CDBException wird ausgelöst, wenn Sie Bearbeiten für ein Recordset aufrufen, die nicht aktualisiert werden kann oder es kein aktueller Datensatz ist.

Weitere Informationen finden Sie in die Artikeln Transaktion (ODBC) und Recordset: Sperren von Datensätzen (ODBC) im Visual C++ Programmer's Guide.

Beispiel

 / / Beispiel für CRecordset::Edit
/ / Um einen Datensatz bearbeiten
/ / Zuerst den Bearbeitungspuffer eingerichtet
rsCustSet.Edit ();

/ / Dann Felddatenmember für den Datensatz bearbeiten
rsCustSet.m_dwCustID = 2795;
rsCustSet.m_strCustomer = "Jones Mfg";

/ / Die Operation schließlich komplett
Wenn (! rsCustSet.Update ())
 &Nbsp;  / / Handle den Fehler aktualisieren

CRecordset ÜbersichtMember der Klasse | Hierarchiediagramm

Siehe auch&Nbsp;CRecordset:: Update, CRecordset::AddNew, CRecordset::Delete, CRecordset::SetFieldDirty, CRecordset::SetFieldNull, CRecordset::CanUpdate, CRecordset::CanTransact, CRecordset::SetLockingMode

Index