Comment résoudre les erreurs qui peuvent se produire lorsque vous mettez à jour des données dans des requêtes et des formulaires Access

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

Remarque

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

Cet article décrit les erreurs qui peuvent se produire dans Microsoft Access lorsque vous mettez à jour des données dans des requêtes et des formulaires. Cet article décrit également les causes des erreurs et comment les résoudre.

Lorsque vous essayez de mettre à jour des données dans une requête ou dans un formulaire, vous pouvez recevoir l’un des messages d’erreur suivants :

L'opération doit utiliser une requête qui peut être mise à jour.

- ou -

Ce recordset n’est pas modifiable.

Résolution des problèmes susceptibles de se produire lorsque vous mettez à jour des données dans une requête

  • Lorsque la requête est basée sur trois tables ou plus et qu’il existe une relation plusieurs-à-un-plusieurs, vous ne pouvez pas mettre à jour les données directement dans la requête. Vous pouvez mettre à jour les données dans un formulaire ou dans une page d’accès aux données. Vous pouvez le faire en fonction de la requête lorsque la RecordsetType propriété du formulaire est définie sur Dynaset(Incohérent Mises à jour).

  • Quand la requête est une requête analyse croisée, vous ne pouvez pas mettre à jour les données dans la requête.

  • Quand la requête est une requête directe Microsoft SQL, vous ne pouvez pas mettre à jour les données dans la requête.

  • Lorsque la requête calcule une somme, une moyenne, un nombre ou un autre type de total sur les valeurs d’un champ, vous ne pouvez pas mettre à jour les données de la requête. En outre, vous ne pouvez pas mettre à jour une requête qui fait référence à un champ dans la ligne Mettre à jour à partir d’un analyse croisée, d’une requête, d’une requête select ou d’une sous-requête qui contient des totaux ou des fonctions d’agrégation. Pour contourner ce problème, utilisez la fonction d’agrégation de domaine dans la ligne Mettre à jour vers d’une requête de mise à jour. Vous pouvez référencer des champs à partir d’une requête analyse croisée, d’une requête select ou d’une sous-requête contenant des totaux ou des fonctions d’agrégation.

  • Lorsque la requête est une requête Union, vous ne pouvez pas mettre à jour les données dans la requête.

  • Lorsque la propriété Valeurs uniques de la requête est définie sur Oui, vous ne pouvez pas mettre à jour les données de la requête. Pour contourner ce problème, définissez la propriété Valeurs uniques de la requête sur Non.

  • Lorsque la requête inclut une table ODBC liée sans index unique ou une table Paradox sans clé primaire, vous ne pouvez pas mettre à jour les données de la requête. Pour contourner ce problème, ajoutez une clé primaire ou un index unique à la table liée.

  • Lorsque vous ne disposez pas des autorisations Mettre à jour les données pour la requête ou la table sous-jacente, vous ne pouvez pas mettre à jour les données. Pour résoudre ce problème, attribuez des autorisations pour mettre à jour les données.

  • Lorsque la requête inclut plusieurs tables ou une requête et que les tables ou requêtes ne sont pas jointes par une ligne de jointure en mode Création , vous ne pouvez pas mettre à jour les données de la requête. Pour résoudre ce problème, vous devez joindre les tables correctement afin de pouvoir les mettre à jour.

  • Lorsque le champ que vous souhaitez mettre à jour est un champ calculé, vous ne pouvez pas mettre à jour les données dans la requête.

  • Lorsque le champ que vous essayez de mettre à jour est en lecture seule, que la base de données est ouverte en lecture seule ou que la base de données se trouve sur un lecteur en lecture seule, vous ne pouvez pas mettre à jour les données dans la requête. Pour éviter ce problème, n’ouvrez pas la base de données en lecture seule. Si la base de données se trouve sur un lecteur en lecture seule, supprimez l’attribut en lecture seule du lecteur ou déplacez la base de données vers un lecteur qui n’est pas en lecture seule.

  • Lorsque le champ de l’enregistrement que vous essayez de mettre à jour est supprimé ou verrouillé par un autre utilisateur, vous ne pouvez pas mettre à jour les données dans la requête. Un enregistrement verrouillé peut être mis à jour dès que l’enregistrement est déverrouillé.

  • Lorsque la requête est basée sur des tables avec une relation un-à-plusieurs, les types de champs que vous ne pourrez peut-être pas modifier sont les suivants :

    • Champ de jointure du côté « un ».
    • Le champ de jointure côté « plusieurs » n’apparaît pas dans la feuille de données.
    • Champ Jointure du côté « plusieurs » après la mise à jour des données du côté « un ».
    • Il existe un champ vide de la table du côté « un » d’une relation un-à-plusieurs avec une jointure externe.
    • La clé unique entière de la table ODBC n’est pas la sortie.

    Vous pouvez résoudre l’un de ces problèmes si vous effectuez l’action appropriée à partir de la liste suivante :

    • Activez les mises à jour en cascade entre les deux tables.
    • Ajoutez le champ de jointure du côté « plusieurs » à votre requête pour pouvoir ajouter de nouveaux enregistrements.
    • Enregistrez l'enregistrement. Vous pouvez apporter des modifications au champ de jointure latérale « plusieurs ».
    • Entrez des valeurs dans les champs de la table du côté « plusieurs ». Vous ne pouvez le faire que lorsque le champ joint du côté « un » contient une valeur pour cet enregistrement.
    • Sélectionnez tous les champs de clé primaire des tables ODBC pour autoriser les insertions.

Informations de résolution des problèmes susceptibles de se produire lorsque vous mettez à jour des données dans un formulaire

  • Vous ne pouvez pas mettre à jour les données d’un formulaire si le formulaire est basé sur une procédure stockée avec plusieurs tables.

  • Vous ne pouvez pas mettre à jour les données d’un formulaire si celui-ci est basé sur un jeu d’enregistrements ADO (ActiveX Data Objects). Les formulaires d’accès vous permettent de modifier des données à partir d’un jeu d’enregistrements ADO si le jeu d’enregistrements ADO est créé à l’aide d’une combinaison des fournisseurs MSDataShape et SQL Server OLEDB.