Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Numéro de base de connaissances d’origine : 328828
Remarque
Nécessite des compétences de macro, de codage et d’interopérabilité de base. 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 dans des formulaires. Cet article décrit également les causes des erreurs et comment résoudre ces erreurs.
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 pouvant être mise à jour.
- ou -
Ce recordset n’est pas modifiable.
Informations de dépannage concernant les problèmes qui peuvent 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
RecordsetTypepropriété du formulaire est définie sur Dynaset (Mises à jour incohérentes).Lorsque la requête est une requête croisée, vous ne pouvez pas mettre à jour les données de la requête.
Lorsque 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 dans la requête. En outre, vous ne pouvez pas mettre à jour une requête qui référence un champ dans la ligne Update To à partir d'une requête croisée, d'une requête, d'une requête sélection ou d'une sous-requête qui contient des totaux ou des fonctions d’agrégation. Pour contourner ce problème, utilisez la fonction Domain Aggregate dans la ligne Update To d’une requête de mise à jour. Vous pouvez faire référence à des champs à partir d’une requête analyse croisée, d’une requête de sélection 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 dans 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 ni table Paradox sans clé primaire, vous ne pouvez pas mettre à jour les données dans la requête. Pour contourner ce problème, ajoutez une clé primaire ou un index unique à la table liée.
Lorsque vous n’avez pas d’autorisations De mise à jour des 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 les requêtes ne sont pas jointes par une ligne de jointure en mode Création , vous ne pouvez pas mettre à jour les données dans la requête. Pour résoudre ce problème, vous devez joindre correctement les tables pour 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, la base de données est ouverte en lecture seule ou 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 pouvez peut-être pas modifier sont les suivants :
- Joindre le champ du côté « un ».
- Le champ de jointure côté « plusieurs » n’apparaît pas dans la feuille de données.
- Joignez le champ du côté « plusieurs » après avoir mis à jour les données du côté « un ».
- Un champ vide de la table du côté « un » d’une relation un-à-plusieurs avec une jointure externe existe.
- 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 la bonne action dans 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 côté « 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 dépannage sur les problèmes qui peuvent se produire lorsque vous mettez à jour des données dans un formulaire
Vous ne pouvez pas mettre à jour les données dans 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 dans un formulaire si le formulaire est basé sur un jeu d’enregistrements ActiveX Data Objects (ADO). 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.