Partager via


CDaoRecordset::Edit

Appelez la fonction membre pour autoriser des modifications apportées à l'enregistrement courant.

virtual void Edit( );

Notes

Une fois que vous appelez la fonction membre de Modifier , les modifications apportées aux champs de l'enregistrement en cours sont copiées dans la mémoire tampon de copie.Après avoir apporté des modifications souhaitées à l'enregistrement, appelez Mettre à jour pour enregistrer vos modifications.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 .

Mise en gardeAttention

Si vous modifiez un enregistrement puis exécuter toute opération qui passe à un autre enregistrement sans le premier Mettre à jourappelant, vos modifications sont perdues sans avertissement.En outre, si vous fermez le recordset ou la base de données parente, votre enregistrement modifié est ignoré sans avertissement.

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.

L'infrastructure marque les membres de données de type champ modifiés pour les vérifier est écrite dans l'enregistrement dans la source de données par le mécanisme du processus DFX (DFX).Modifier la valeur d'un champ définit en général le champ modifié automatiquement, vous devez rarement appeler SetFieldDirty vous-même, mais vous pouvez parfois souhaiter vous assurer que les colonnes sont explicitement mises à jour ou insérées quelle que soit la valeur est dans les données membres de champ.Le mécanisme DFX utilise également l'utilisation de PSEUDO NULL.Pour plus d'informations, consultez CDaoFieldExchange::m_nOperation.

Si le mécanisme de double tampon n'est pas utilisé, puis modifier la valeur du champ n'affecte pas automatiquement le champ comme modifié.Dans ce cas, il est nécessaire de définir explicitement le champ modifié.La balise contenue dans m_bCheckCacheForDirtyFields contrôle ce contrôle automatique de champ.

Lorsque l'objet recordset est pessimistement verrouillé dans un environnement multi-utilisateur, le d'enregistrement reste verrouillé du temps Modifier est utilisé tant que la mise à jour terminé.Si le recordset est avec optimisme verrouillé, l'enregistrement est verrouillé et comparé à l'enregistrement pré-édité juste avant sa mise à jour dans la base de données.Si l'enregistrement a changé depuis vous Modifierappelé, de échec de l'opération de Mettre à jour et MFC lève une exception.Vous pouvez modifier le mode de verrouillage avec SetLockingMode.

[!REMARQUE]

Le verrouillage optimiste est toujours utilisé sur les formats externes de base de données, tels que ODBC et la méthode d'accès séquentiel indexé installable.

L'enregistrement actif reste actif après avoir appelé Modifier.Pour appeler Modifier, il doit exister un enregistrement courant.S'il n'existe aucun enregistrement actif ou si le recordset ne fait pas référence à un objet ouvert de type table ou de recordset de type feuille de réponse dynamique, une exception se produit.Appeler Modifier cause CDaoException d'être levée dans les conditions suivantes :

  • Il n'existe aucun enregistrement courant.

  • La base de données ou le recordset est en lecture seule.

  • Champ de l'enregistrement ne peut pas être mise à jour.

  • La base de données ou le recordset a été ouverte pour l'utilisation exclusive par un autre utilisateur.

  • Un autre utilisateur a verrouillé la page contenant votre enregistrement.

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 CDaoWorkspace::BeginTrans avant d'appeler Modifier et après que le recordset a été ouvert.Notez également qu'appeler CDaoWorkspace::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 CDaoWorkspace.

Pour des informations connexes, consultez les rubriques traitant méthode d'AddNew », « la méthode de modification », « méthode de suppression », « méthode update », et « propriété pouvant être mis à jour » dans l'aide de DAO.

Configuration requise

Header: afxdao.h

Voir aussi

Référence

Classe de CDaoRecordset

Graphique de la hiérarchie

CDaoRecordset::AddNew

CDaoRecordset::CancelUpdate

CDaoRecordset::CanTransact

CDaoRecordset::Delete

CDaoRecordset::Update