Share via


Erreur « Cet enregistrement a été modifié par un autre utilisateur » lorsque vous enregistrez un enregistrement modifié dans Access

Numéro de la base de connaissances d’origine : 837937

Remarque

Cet article s’applique uniquement à un projet Microsoft Access (.adp). Vous devez disposer de connaissances de base en macro, codage et interopérabilité avant de commencer.

Symptômes

Lorsque vous modifiez un enregistrement dans un formulaire basé sur une vue à plusieurs tables et que vous travaillez dans un environnement multi-utilisateur, vous risquez d’échouer lorsque vous essayez d’enregistrer les modifications apportées à l’enregistrement. Vous pouvez également recevoir le message d’erreur suivant dans la boîte de dialogue Conflit d’écriture :

Cet enregistrement a été modifié par un autre utilisateur depuis que vous avez commencé à le modifier. Si vous enregistrez l’enregistrement, vous remplacerez les modifications apportées par l’autre utilisateur.
La copie des modifications dans le Presse-papiers vous permet d’examiner les valeurs entrées par l’autre utilisateur, puis de coller vos modifications à nouveau si vous décidez d’apporter les modifications.

Si vous cliquez sur Copier dans le Presse-papiers ou Supprimer les modifications dans la boîte de dialogue Conflit d’écriture, vous remarquerez peut-être que les modifications que vous avez apportées à l’enregistrement sont annulées et que les modifications apportées à l’enregistrement effectuées par l’autre utilisateur sont désormais visibles. Toutefois, si vous modifiez à nouveau le même enregistrement et que vous essayez d’enregistrer l’enregistrement, vous pouvez recevoir à nouveau le message d’erreur mentionné dans la section « Symptômes ».

Vous pouvez également remarquer le message d’erreur mentionné dans la section « Symptômes » par intermittence lorsque vous cliquez sur Enregistrer l’enregistrement.

Remarque

Ce comportement peut ne pas s’afficher lorsque vous utilisez Microsoft Access 2000.

Solution de contournement

Pour contourner ce problème, utilisez l’une des méthodes suivantes :

  • Mettre à jour le formulaire basé sur la vue multi-tables

    Lors de la première occurrence du message d’erreur mentionné dans la section « Symptômes », vous devez cliquer sur Copier dans le Presse-papiers ou sur Supprimer les modifications dans la boîte de dialogue Conflit d’écriture . Pour éviter l’occurrence répétée du message d’erreur mentionné dans la section « Symptômes », vous devez mettre à jour le jeu d’enregistrements dans le formulaire avant de modifier à nouveau le même enregistrement.

    Notes

    • Pour mettre à jour le formulaire dans Access 2003 ou Dans Access 2002, cliquez sur Actualiser dans le menu Enregistrements .
    • Pour mettre à jour le formulaire dans Access 2007, cliquez sur Actualiser tout dans le groupe Enregistrements de l’onglet Accueil .
  • Utiliser un formulaire main avec un sous-formulaire lié

    Pour éviter l’occurrence répétée du message d’erreur mentionné dans la section « Symptômes », vous pouvez utiliser un formulaire main avec un sous-formulaire lié pour entrer des données dans les tables associées. Vous pouvez entrer des enregistrements dans les deux tables à partir d’un emplacement unique sans utiliser un formulaire basé sur la vue multi-tables.

    Pour créer un formulaire main avec un sous-formulaire lié, procédez comme suit :

    1. Créez un formulaire basé sur la table (enfant) associée utilisée dans la vue multi-tables. Incluez les champs obligatoires dans le formulaire.

    2. Enregistrez le formulaire, puis fermez-le.

    3. Créez un formulaire basé sur la table primaire utilisée dans la vue multi-tables. Incluez les champs obligatoires dans le formulaire.

    4. Dans la fenêtre Base de données, ajoutez le formulaire que vous avez enregistré à l’étape 2 au formulaire main.

      Cela crée un sous-formulaire.

    5. Définissez la propriété Lier les champs enfants et la propriété Link Master Fields du sous-formulaire sur le nom du ou des champs utilisés pour lier les tables.

Statut

Microsoft a confirmé qu’il s’agit d’un bogue dans les produits Microsoft répertoriés dans la section « S’applique à ».

Informations supplémentaires

Dans un environnement multi-utilisateur, le projet Microsoft Access (.adp) utilise une technique nommée verrouillage d’enregistrement optimiste pour gérer la contention des enregistrements. Par conséquent, lorsque plusieurs utilisateurs travaillent avec le même enregistrement en même temps, l’un des utilisateurs peut recevoir le message d’erreur mentionné dans la section « Symptômes ». Toutefois, le message d’erreur mentionné dans la section « Symptômes » peut également apparaître par intermittence lorsque toutes les conditions suivantes sont remplies :

  • Le formulaire est basé sur une vue à plusieurs tables.
  • La vue à plusieurs tables est basée sur les tables impliquées dans une relation parent-enfant.
  • L’enregistrement en cours de modification a été modifié et commité par un autre utilisateur depuis que vous avez commencé à modifier l’enregistrement.

Vous remarquerez peut-être que le même problème se produit lorsque vous utilisez la vue multi-tables directement dans un environnement multi-utilisateur.

Procédure pour reproduire le problème

  1. Démarrez Access.

  2. Ouvrez l’exemple de projet de base de données NorthwindCS.adp.

  3. Dans la fenêtre Base de données, cliquez sur Requêtes dans la section Objets .

    Remarque

    Dans Access 2007, cliquez sur Assistant Requête dans le groupe Autre sous l’onglet Créer .

  4. Dans le volet droit, double-cliquez sur Créer une vue dans le concepteur.

    Remarque

    Dans Access 2007, dans la boîte de dialogue Nouvelle requête , cliquez sur Mode Création, puis sur OK.

  5. Dans la boîte de dialogue Ajouter une table , double-cliquez sur Commandes et Détails de la commande sous l’onglet Tables , puis cliquez sur Fermer.

  6. Tapez ou collez la requête suivante dans le volet SQL :

    SELECT     
    dbo.Orders.OrderID, 
    dbo.[Order Details].ProductID, 
    dbo.[Order Details].Quantity, 
    dbo.Orders.ShipName
    FROM         
    dbo.Orders 
    INNER JOIN
    dbo.[Order Details] 
    ON 
    dbo.Orders.OrderID = dbo.[Order Details].OrderID
    

    Notes

    Remarque

    • Dans Access 2003 ou Dans Access 2002, si le volet SQL n’est pas visible, pointez sur Afficher les volets dans le menu Affichage , puis cliquez sur SQL.
    • Dans Access 2007, sous l’onglet Création , cliquez sur SQL dans le groupe Outils pour ouvrir le volet SQL.
  7. Enregistrez la vue en tant queOrderView.

  8. Dans le menu Affichage , cliquez sur Mode Feuille de données.

    Remarque

    Dans Access 2007, sous l’onglet Création , cliquez sur la flèche sous Affichage, puis sur Mode Feuille de données.

  9. Modifier un enregistrement dans la vue OrderView.

    Remarque

    Vérifiez que l’enregistrement n’a pas été enregistré.

  10. Ouvrez un autre instance de l’exemple de projet de base de données NorthwindCS.adp.

  11. Modifiez le même enregistrement que celui que vous avez modifié à l’étape 9.

  12. Dans le menu Enregistrements , cliquez sur Enregistrer l’enregistrement.

    Remarque

    Dans Access 2007, cliquez sur le bouton Microsoft Office, puis sur Enregistrer.

    Vous pouvez recevoir le message d’erreur mentionné dans la section « Symptômes ».