CRecordset::Delete
Löscht den aktuellen Datensatz.
virtual void Delete( );
Hinweise
Nach einem erfolgreichen Löschen werden die Felddatenmember des Recordsets mit einem NULL-Wert festgelegt, und Sie müssen eine der Move-Funktionen explizit aufrufen, um die vom gelöschten Datensatz wechseln.Wenn Sie den Rasterlinienindikator vom gelöschten Datensatz wechseln, zurückzukehren ist nicht möglich, hinzufügen.Wenn die Datenquelle Transaktionen unterstützt, können Sie den Löschen Aufrufsteil aus einer Transaktion ausführen.Weitere Informationen finden Sie im Artikel Transaktion (ODBC).
Hinweis |
---|
Wenn Sie das gesammelte Abrufen von Zeilen implementiert haben, können Sie Löschen 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). |
Vorsicht |
---|
Das Recordset muss aktualisierbar sein und muss einen gültigen Rekordstrom im Recordset geben, wenn Sie Löschen aufrufen; andernfalls tritt ein Fehler auf.Wenn Sie einen Datensatz löschen, jedoch nicht zu einem neuen Datensatz wechseln, bevor Sie Löschen erneut aufrufen, löst LöschenCDBException aus. |
Anders als AddNew und Bearbeiten wird ein Aufruf Löschen nicht in einem Aufruf Update erfolgreich.Wenn ein Löschen Aufruf fehlschlägt, werden die Felddatenmember unverändert gelassen.
Ausnahmen
Diese Methode kann Ausnahmen des Typs CDBException* auslösen.
Beispiel
In diesem Beispiel wird ein Recordset an, das auf den Frame einer Funktion erstellt wird.Das Beispiel setzt das Vorhandensein von m_dbCust an, eine Membervariable des Typs CDatabase bereits mit der Datenquelle verbunden.
// Create a derived CRecordset object
CCustomer rsCustSet(&m_dbCust);
rsCustSet.Open();
if(rsCustSet.IsEOF() || !rsCustSet.CanUpdate() ||
!rsCustSet.CanTransact())
{
return;
}
m_dbCust.BeginTrans();
// Perhaps scroll to a new record...
// Delete the current record
rsCustSet.Delete();
// Finished commands for this transaction
if(IDYES == AfxMessageBox(_T("Commit transaction?"), MB_YESNO))
m_dbCust.CommitTrans();
else // User changed mind
m_dbCust.Rollback();
Anforderungen
Header: afxdb.h