CRecordset::Delete
Supprime l'enregistrement actif.
virtual void Delete( );
Notes
Après une suppression a réussi, les membres de données de type champ de recordset sont définies à une valeur NULL, et vous devez appeler explicitement une des fonctions de Déplacer pour fermer l'enregistrement supprimé.Une fois que vous quittez l'enregistrement supprimé, il n'est pas possible de retourner à l'.Si la source de données prend en charge les transactions, vous pouvez faire de la place d'appel de Supprimer d'une transaction.Pour plus d'informations, consultez l'article transaction (ODBC).
[!REMARQUE]
Si vous avez implémenté l'extraction de lignes en bloc, vous ne pouvez pas appeler Supprimer.Cela provoquera une assertion.Bien que la classe CRecordset ne fournit pas de mécanisme pour mettre à jour les lignes en bloc de données, vous pouvez écrire vos propres fonctions à l'aide de la fonction API ODBC SQLSetPos.Pour plus d'informations sur l'extraction de lignes en bloc, consultez l'article recordset : Extraction globale d'enregistrements (ODBC).
Attention |
---|
Le recordset doit être modifiable et il doit exister un actuel d'enregistrement valide dans le recordset lorsque vous appelez Supprimer; sinon, une erreur se produit.Par exemple, si vous supprimez un enregistrement mais ne le faites pas par défilement à un nouvel enregistrement avant d'appeler Supprimer de nouveau, Supprimer lève CDBException. |
Contrairement à AddNew et de modification, un appel à Supprimer n'est pas suivie par un appel à mise à jour.Si un appel de Supprimer échoue, les membres de données de type champ sont laissées inchangées.
Exceptions
Cette méthode peut lever des exceptions de type CDBException*.
Exemple
Cet exemple montre un recordset créé sur le frame d'une fonction.l'exemple suppose l'existence d' m_dbCust, une variable membre de type CDatabase déjà connectée à la source de données.
// 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();
Configuration requise
Header: afxdb.h