Vous pouvez rencontrer des situations où vous ne pouvez pas modifier les données dans la requête mode Feuille de données pour modifier les données de 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 les 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 mode Feuille de données, vous souhaiterez peut-être modifier les données. Peut-être remarquez-vous une erreur, ou peut-être que vous voyez des informations obsolètes. Selon la façon dont la requête a été générée, vous pouvez modifier les données directement dans la requête 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 produit, ou que Windows lit un son et que votre modification ne se produit pas, vous ne pouvez pas effectuer la modification. Il se peut que la requête elle-même ne soit pas disponible pour modification, par exemple une requête analyse croisée. Il se peut également que 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 pouvez faire quelque chose pour activer la modification.
En plus de modifier les données en mode 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 couvre pas les requêtes de 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 souhaitez modifier des données en mode 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 que vous souhaitez toujours modifier les données et conserver les données modifiées une fois que vous avez terminé, vous pouvez utiliser un requête Création de table pour créer d’abord 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 de cette nouvelle table. Cet article ne décrit pas comment créer et exécuter des requêtes make-table.
Pour plus d’informations sur les requêtes make-table, consultez l’article Create une requête make-table.
Quand puis-je modifier des données dans une requête ?
Vous pouvez toujours modifier les données d’une requête lorsque celle-ci est basée sur une seule table ou sur deux tables qui portent une 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 disponibles pour modification. Ces cas sont répertoriés dans la section suivante.
Quand ne puis-je pas modifier des données dans une requête ?
Vous ne pouvez jamais modifier les données d’une requête dans les cas suivants :
-
La requête est une requête analyse croisée.
-
La requête est une requête propre à SQL.
-
Le champ que vous essayez de modifier est un champ calculé. Dans ce cas, vous pouvez modifier les autres champs.
-
La requête est basée sur trois tables ou plus et il existe une relation plusieurs-à-un-à-plusieurs.
Remarque : Bien que vous ne puissiez pas modifier la feuille de données de requête dans ce cas, vous pouvez modifier les données d’un formulaire lorsque la propriété RecordsetType du formulaire est définie sur Dynaset (incohérent Mises à jour) .
-
La requête contient une clause GROUP BY.
Comment faire modifier une requête afin de pouvoir modifier ses données ?
Le tableau suivant répertorie les cas où vous ne pouvez pas modifier une requête, associée à 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 dans les cas suivants : |
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éfinissez la propriété Valeurs uniques de la requête sur Non. Consultez la section suivante, Définir la propriété Valeurs uniques sur Non, pour savoir comment définir cette propriété. |
La requête inclut une table de base de données ODBC liée sans index unique ou une table Paradox sans clé primaire. |
Ajoutez une clé primaire ou un index unique à la table liée à l’aide des méthodes fournies par le fournisseur de la base de données liée. |
Vous ne disposez pas des autorisations Mettre à jour les données pour la table sous-jacente. |
Attribuer des autorisations de mise à jour des données. |
La requête comprend plusieurs tables ou une requête, et les tables ou requêtes ne sont pas jointes par une ligne de jointure en mode Création. |
Create les jointures appropriées. Consultez la section Create jointures pour savoir comment créer les jointures. |
La base de données est ouverte en lecture seule ou se trouve sur un lecteur en lecture seule. |
Fermez la base de données et rouvrez-la sans sélectionner Ouvrir en lecture seule . ou, 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. |
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 un relation un-à-plusieurs, et le champ de jointure du côté « plusieurs » n’est pas un champ de sortie. Dans ce cas, les données du champ de jointure du côté « un » ne peuvent pas être modifiées. |
Ajoutez le champ de jointure du côté « plusieurs » de la relation aux champs de sortie de requête. Consultez la section Ajouter le champ de jointure du côté « plusieurs » aux champs de sortie de requête pour savoir comment ajouter le champ de jointure. |
Le champ de jointure du côté « plusieurs » (après avoir modifié les données) se trouve du côté « un ». |
Appuyez sur Maj+F9 pour valider vos modifications et actualiser la requête. |
Il existe un champ vide dans la table du côté « un » d’une relation un-à-plusieurs, et la jointure est une jointure externe droite. |
Vérifiez qu’il y a une valeur dans ce champ du côté « un ». Vous pouvez modifier le champ de jointure côté « plusieurs » uniquement s’il y a 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 figurent pas dans la sortie de la requête. |
Ajoutez tous les champs de l’index unique de la table ODBC aux champs de sortie de requête. Pour savoir comment ajouter les champs, consultez la section Ajouter des champs d’index uniques à partir d’une table ODBC liée. |
Définissez la propriété Valeurs uniques sur Non
-
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 conception de requête pour vous assurer que la feuille de propriétés affiche les propriétés de 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 en regard de celle-ci, cliquez sur la flèche dans cette zone, puis cliquez sur Non.
jointures Create
-
Ouvrez la requête en mode Création.
-
Pour chaque table ou requête que vous souhaitez joindre à une autre, faites glisser le champ de jointure de cette table ou requête vers le champ correspondant dans la table ou la requête sur laquelle vous souhaitez créer la jointure.
Pour plus d’informations sur la création de jointures, consultez l’article Joindre des tables et des requêtes.
Ajouter le champ de jointure du côté « plusieurs » aux champs de sortie de 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 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 auront un symbole clé en regard du nom du champ. Double-cliquez sur chaque champ qui ne figure pas déjà dans la grille de champs. Chaque champ apparaît dans la grille de champs, indiquant qu’il s’agit désormais d’un champ de sortie.