Il peut arriver que, dans certains cas, vous ne puissiez pas modifier les données d'une requête en mode Feuille de données (mode Feuille de données : fenêtre qui affiche des données d'une table, d'un formulaire, d'une requête, d'une vue ou d'une procédure stockée sous forme de lignes et de colonnes. En mode Feuille de données, vous pouvez modifier des champs et ajouter, supprimer ou rechercher des données.) pour changer les données de la table sous-jacente. Cet article vous indique quand vous pouvez modifier les données d'une requête et comment vous pouvez modifier une requête de manière à changer ses données sous-jacentes.
Dans cet article
Introduction
Lorsque vous ouvrez une requête en mode Feuille de données, il peut arriver qu'il soit nécessaire de modifier des données car certaines sont erronées ou obsolètes. Si la requête a été créée de façon à permettre les modifications, vous pouvez modifier les données directement dans la feuille de données (feuille de données : données d'une table, d'un formulaire, d'une requête, d'une vue ou d'une procédure stockée affichées sous forme de lignes et de colonnes.) de la requête.
Si, lorsque vous essayez de modifier les données dans la feuille de données d'une requête rien ne se passe ou Windows émet un son et ne prend pas en compte vos modifications, cela peut indiquer que la requête ou le champ que vous voulez modifier n'est pas modifiable, par exemple : s'il s'agit d'une requête croisée ou d'un champ reposant sur une fonction d'agrégation, comme une moyenne. Il est toutefois possible de remédier à cette situation.
En plus de modifier des données en mode Feuille de données, une requête Mise à jour (requête Mise à jour : requête Action (instruction SQL) qui modifie un jeu d'enregistrements en fonction des critères (conditions de recherche) que vous spécifiez.) vous permet de 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, voir l'article Créer une requête Mise à jour.
En général, lorsque vous modifiez les données d'une requête en mode Feuille de données, Il est conseillé d'enregistrer les modifications dans les tables sur lesquelles la requête repose. Si vous ne voulez pas modifier les données dans ces tables mais quand même conserver les données modifiées, vous pouvez utiliser une requête Création de table (requête Création de table : requête (instruction SQL) qui crée une nouvelle table, puis des enregistrements (lignes) en copiant des enregistrements à partir d'une table existante.) qui vous permet de créer une table dont vous pouvez modifier les données. Vous pouvez également utiliser une telle requête pour enregistrer les résultats d'une requête dans une table puis les modifier. Cet article n'indique pas la marche à suivre pour créer et exécuter des requêtes Création de table.
Pour plus d'informations sur les requêtes de création de table, consultez l'article Créer une requête de création de table.
Haut de la page
Quand peut-on modifier les données d'une requête ?
Vous pouvez modifier les données d'une requête si celle-ci repose sur une table ou deux tables reliées l'une à l'autre dans une relation un-à-un (relation un-à-un : association entre deux tables dans laquelle la valeur de clé primaire de chaque enregistrement de la table primaire correspond à la valeur du ou des champs correspondants d'un seul enregistrement de la table liée.).
Remarque Il arrive cependant parfois que bien que vous puissiez modifier les données d'une requête, certains de ses champs ne soient pas modifiables. La section suivante décrit pareilles situations.
Haut de la page
Quand ne peut-on pas modifier les données d'une requête ?
Vous ne pouvez pas modifier les données d'une requête lorsque :
- La requête est une requête croisée (requête analyse croisée : requête qui calcule une somme, une moyenne, un compte ou un autre type de total effectué sur des enregistrements, puis qui regroupe le résultat en deux types d'informations : l'un affiché verticalement sur le côté gauche de la feuille de données et l'autre affiché horizontalement en haut.).
- La requête est une requête SQL (requête propre à SQL : requête qui se compose d'une instruction SQL. Les sous-requêtes et les requêtes directes, Union et Définition des données sont des requêtes propres à SQL.).
- Le champ que vous essayez de modifier est un champ calculé (champ calculé : champ, défini dans une requête, qui affiche le résultat d'une expression au lieu d'afficher les données stockées. La valeur est recalculée chaque fois qu'une valeur de l'expression est modifiée.). Dans ce cas, il se peut que les autres champs soient modifiables.
- La requête repose sur au moins trois tables reliées entre elles dans le cadre d'une relation plusieurs-à-une-à-plusieurs.
Remarque Bien que, dans ce cas, vous ne puissiez pas modifier la feuille de données de la requête, vous pouvez modifier les données dans un formulaire lorsque la propriété RecordsetType du formulaire a pour valeur Feuille rép.dyn.(MAJ globale).
- La requête contient une clause GROUP BY.
Haut de la page
Comment peut-on modifier une requête de manière à changer ses données ?
Le tableau suivant indique les cas dans lesquels vous ne pouvez pas modifier une requête et les méthodes qui permettent de rendre modifiable la feuille de données de la requête.
Haut de la page
Attribuer la valeur Non à la propriété Valeurs uniques
- Ouvrez la requête en mode Création.
- Si la feuille de propriétés n'est pas ouverte, ouvrez-la en appuyant sur F4. Cliquez une fois dans la grille de création de la requête pour que la feuille de propriétés affiche les propriétés de la requête et non les propriétés des champs.
- Dans la feuille de propriétés, cliquez sur la flèche à côté de la zone de propriété Valeurs uniques, puis cliquez sur Non.
Créer des jointures
- 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 jointure de cette table ou requête sur le champ correspondant de la table ou requête que vous voulez joindre à la première.
Pour plus d'informations sur la création de jointures, voir l'article Joindre des tables et des requêtes.
Ajouter le champ de jointure 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 jointure qui correspond à la relation un-à-plusieurs appropriée.
- Double-cliquez sur le champ de jointure du côté « plusieurs » de la relation un-à-plusieurs. Le champ de jointure apparaît alors dans la grille des champs, ce qui indique qu'il est désormais un champ de sortie.
Ajouter des champs de l'index unique à partir d'une table ODBC attachée
- Ouvrez la requête en mode Création.
- Dans le Concepteur de requête, recherchez la table ODBC attachée.
- Un symbole représentant une clé apparaît à côté du nom des champs de l'index unique. Double-cliquez sur chaque champ qui n'est pas dans la grille des champs. Chaque champ apparaît alors dans la grille de champs, ce qui indique qu'il est désormais un champ de sortie.
Haut de la page