Il se peut que vous ne parviez pas modifier les données de la requête mode Feuille de données modifier les données dans la table sous-jacente. Cet article vous aide à comprendre quand vous pouvez modifier des données de requête, quand vous ne pouvez pas modifier des données de requête et comment modifier la conception d’une requête afin de pouvoir modifier ses données sous-jacentes.
Contenu de cet article
Introduction
Lorsque vous ouvrez une requête en vue Feuille de données, il se peut que vous vouliez modifier les données. Peut-être avez-vous remarqué une erreur ou peut-être voyez-vous des informations non à jour. Selon la façon dont la requête a été conçue, vous pouvez modifier les données directement dans le feuille de données.
Si vous essayez de modifier les données d’une feuille de données de requête mais que rien ne se passe, ou si Windows lit un son et que votre modification ne se produit pas, vous ne pouvez pas effectuer la modification. Il est possible que la requête elle-même ne soit pas disponible pour modification, par exemple, une requêteTab croisée. Par ailleurs, seul le champ que vous essayez de modifier n’est pas disponible pour modification (par exemple, si le champ est basé sur une fonction d’agrégation, telle qu’une moyenne). Dans les deux cas, vous pourrez peut-être faire quelque chose pour activer la modification.
Outre la modification des données en affichage Feuille de données de requête, vous pouvez également utiliser un requête Mise à jour pour mettre à jour les données d’une table. Cet article ne traite pas des requêtes Mise à jour.
Pour plus d’informations sur les requêtes Mise à jour, consultez l’article Créer et exécuter une requête Mise à jour.
En règle générale, lorsque vous voulez modifier des données en affichage Feuille de données de requête, vous souhaitez que vos modifications soient enregistrées dans les tables sur lesquelles la requête est basée. Si vous ne souhaitez pas modifier les données de ces tables, mais souhaitez modifier les données et conserver celles-ci une fois que vous avez terminé, vous pouvez utiliser une requête Création de table pour créer une table dont vous pouvez modifier les données. Vous pouvez également utiliser une requête Make-table pour enregistrer les résultats d’une requête qui n’autorise pas la modification en tant que nouvelle table, puis modifier les données dans cette nouvelle table. Cet article ne traite pas de la création et de l’exécuter de requêtes Création de table.
Pour plus d’informations sur les requêtes Création de table, voir l’article Créer une requête Création de table.
Quand puis-je modifier les données d’une requête ?
Vous pouvez toujours modifier les données d’une requête lorsque la requête est basée sur une seule table ou sur deux tables qui portent un relation un-à-un l’une à l’autre.
Remarque : Même lorsque vous pouvez modifier des données dans une requête, certains de ses champs peuvent ne pas être modifiables. Ces cas sont répertoriés dans la section suivante.
Quand ne puis-je pas modifier les données d’une requête ?
Vous ne pouvez jamais modifier les données d’une requête lorsque :
-
La requête est un requête analyse croisée.
-
La requête est un requête propre à SQL.
-
Le champ que vous essayez de modifier est un champ calculé. Dans ce cas, vous pourrez peut-être modifier les autres champs.
-
La requête est basée sur trois tables ou plus, et il existe une relation plusieurs-à-un-à-plusieurs.
Remarque : Même si vous ne pouvez pas modifier la feuille de données de requête dans ce cas, vous pouvez modifier les données dans un formulaire lorsque la propriété TypeRe recordset du formulaire est définie sur Dynaset (Mises à jour incohérentes).
-
La requête contient une clause GROUP BY.
Comment modifier une requête afin de pouvoir modifier ses données ?
Le tableau suivant répertorie des cas dans les cas où vous ne pouvez pas modifier une requête, couplés à des méthodes pour rendre la feuille de données de requête disponible pour modification.
Vous ne pouvez pas modifier les valeurs d’une feuille de données de requête lorsque : |
Pour rendre la feuille de données de requête disponible pour modification : |
La propriété Valeurs uniques de la requête est définie sur Oui. |
Définir la propriété Valeurs uniques de la requête sur Non. Pour savoir comment définir cette propriété, voir la section suivante, Définir la propriété Valeursuniques sur Non. |
La requête inclut une table base de données ODBC liée sans aucun index unique ou une table Paradox sans clé primaire. |
Ajoutez une clé primaire ou un index unique à la table liée en utilisant les méthodes fournies par le fournisseur de la base de données liée. |
Vous n’avez pas les autorisations Mettre à jour les données pour la table sous-jacente. |
Attribuer des autorisations Mettre à jour les données. |
La requête inclut plusieurs tables ou requêtes, et les tables ou requêtes ne sont pas jointes par une ligne de jointie en mode Création. |
Créez les jointeurs appropriés. Consultez la section Créer des jointeurspour découvrir comment créer les jointeurs. |
La base de données est ouverte en lecture seule ou est située sur un lecteur en lecture seule. |
Fermez la base de données et rouvrez-lasans sélectionner Ouvrir en lecture seule . ou, si la base de données est située 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. |
Le champ de l’enregistrement que vous essayez de mettre à jour est supprimé ou verrouillé par un autre utilisateur. |
Attendez que l’enregistrement soit déverrouillé. Un enregistrement verrouillé peut être mis à jour dès que l’enregistrement est déverrouillé. Attendez que l’autre utilisateur termine l’opération qui a verrouillé l’enregistrement. |
La requête est basée sur des tables avec une relation un-à-plusieurs et le champ de jointie du côté « plusieurs » n’est pas un champ de sortie. Dans ce cas, les données dans le champ de jointe du côté « un » ne peuvent pas être modifiées. |
Ajoutez le champ de jointie du côté « plusieurs » de la relation aux champs de sortie de la requête. Consultez la section Ajouter le champde jointie du côté « plusieurs » aux champs de sortie de la requête pour découvrir comment ajouter le champ de jointie. |
Le champ de joint lors de la modification des données du côté « plusieurs » se trouve du côté « un ». |
Appuyez sur Shift+F9 pour valider vos modifications et actualiser la requête. |
Il existe un champ vide de la table du côté « un » d’une relation un-à-plusieurs, et la jointe est une jointe externe droite. |
Assurez-vous que ce champ est du côté « un ». Vous ne pouvez modifier le champ de joint alors du côté « plusieurs » que s’il existe une valeur dans ce champ du côté « un ». |
Vous utilisez une table de base de données ODBC liée et tous les champs de l’index unique de la table liée ne sont pas tous dans le résultat de la requête. |
Ajoutez tous les champs de l’index unique de la table ODBC aux champs de sortie de la requête. Consultez la section Ajouter des champs d’index uniquesà partir d’une table ODBC liée pour découvrir comment ajouter les champs. |
Définir la propriété Valeurs uniques sur Non
-
Ouvrez la requête en mode Création.
-
Si la feuille Propriétés n’est pas ouverte, ouvrez-la en appuyant sur F4. Cliquez une fois dans la grille de création de requête pour vous assurer que la feuille de propriétés affiche les propriétés de la requête plutôt que les propriétés de champ.
-
Dans la feuille de propriétés, recherchez la zone de propriété Valeurs uniques. Cliquez sur la zone à côté de celle-ci, sur la flèche dans cette zone, puis sur Non.
Créer des jointeurs
-
Ouvrez la requête en mode Création.
-
Pour chaque table ou requête que vous voulez joindre à une autre, faites glisser le champ de jointie de cette table ou requête vers le champ correspondant dans la table ou requête sur laquelle vous voulez créer la jointie.
Pour plus d’informations sur la création de jointeurs, voir l’article Joindre des tables et des requêtes.
Ajouter le champ de jointie du côté « plusieurs » aux champs de sortie de la requête
-
Ouvrez la requête en mode Création.
-
Dans le Concepteur de requêtes, recherchez la jointrie qui correspond à la relation un-à-plusieurs pertinente.
-
Double-cliquez sur le champ de jointës du côté « plusieurs » de la relation un-à-plusieurs. Le champ de jointage apparaît dans la grille de champs, indiquant qu’il s’agit désormais d’un champ de sortie.
Ajouter des champs d’index uniques à partir d’une table ODBC liée
-
Ouvrez la requête en mode Création.
-
Dans le Concepteur de requêtes, recherchez la table ODBC liée.
-
Les champs d’index uniques sont symbolés par un symbole de clé en même temps que leur nom. Double-cliquez sur chaque champ qui n’est pas déjà dans la grille de champs. Chaque champ apparaît dans la grille des champs, indiquant qu’il s’agit désormais d’un champ de sortie.