Partager via


CRecordset::Edit

Permet les modifications apportées à l'enregistrement courant.

virtual void Edit( );

Notes

Après avoir appelé Modifier, vous pouvez modifier les données membres de champ en réinitialisant directement leurs valeurs.L'opération est terminée lorsque vous appelez ensuite la fonction membre de mise à jour pour enregistrer vos modifications dans la source de données.

[!REMARQUE]

Si vous avez implémenté l'extraction de lignes en bloc, vous ne pouvez pas appeler Modifier.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).

Modifier enregistre les valeurs des données membres du recordset.Si vous appelez Modifier, apportez les modifications, puis appelez Modifier de nouveau, les valeurs de l'enregistrement sont restaurées à ce qu'elles étaient avant le premier appel de Modifier .

Dans certains cas, vous pouvez mettre à jour une colonne en la faisant annuler (ne contenant aucune donnée).Pour ce faire, appelez SetFieldNull avec un paramètre de TRUE pour marquer le champ Null ; cela entraîne également la colonne d'être mise à jour.Si vous souhaitez un champ à écrire dans la source de données même si sa valeur n'a pas changé, appelez SetFieldDirty avec un paramètre de TRUE.Cela fonctionne même si le champ avait la valeur Null.

Si la source de données prend en charge les transactions, vous pouvez faire de la place d'appel de Modifier d'une transaction.Notez que vous devez appeler CDatabase::BeginTrans avant d'appeler Modifier et après que le recordset a été ouvert.Notez également qu'appeler CDatabase::CommitTrans n'est pas un substitut pour appeler Mettre à jour pour terminer l'opération de Modifier .Pour plus d'informations sur les transactions, consultez la classe CDatabase.

Selon le mode de verrouillage actuel, l'enregistrement qui est mis à jour peut être verrouillé par Modifier jusqu'à ce que vous appeliez Mettre à jour ou le défilement à un autre enregistrement, ou il peut être verrouillé uniquement pendant l'appel de Modifier .Vous pouvez modifier le mode de verrouillage avec SetLockingMode.

La valeur précédente de l'enregistrement en cours est restaurée si vous accédez à un nouvel enregistrement avant d'appeler Mettre à jour.CDBException est levée si vous appelez Modifier pour un recordset qui ne peut pas être mis à jour ou s'il n'existe aucun enregistrement courant.

Pour plus d'informations, consultez les articles transaction (ODBC) et recordset : Verrouillage d'enregistrements (ODBC).

Exceptions

Cette méthode peut lever des exceptions de type CDBException* et CMemoryException*.

Exemple

// 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!"));
}

Configuration requise

Header: afxdb.h

Voir aussi

Référence

Classe de CRecordset

Graphique de la hiérarchie

CRecordset::Update

CRecordset::AddNew

CRecordset::Delete

CRecordset::SetFieldDirty

CRecordset::SetFieldNull

CRecordset::CanUpdate

CRecordset::CanTransact

CRecordset::SetLockingMode