Vous pouvez rencontrer des situations dans lesquelles vous ne pouvez pas modifier les données de la table sous-jacente en mode Feuille de données de requête. 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
- Quand puis-je modifier les données d’une requête ?
- Quand ne puis-je pas modifier les données d’une requête ?
- Comment faire modifier une requête de manière à pouvoir modifier ses données ?
Introduction
Lorsque vous ouvrez une requête en mode Feuille de données, vous pouvez conclure que vous voulez modifier les données. Vous remarquez peut-être une erreur ou des informations obsolètes. En fonction de la façon dont la requête a été générée, vous pouvez modifier les données directement dans la feuille de données de la requête.
Si vous essayez de modifier les données dans une feuille de données de requête mais que rien ne se produit, ou si Windows émet un son et que votre modification n’a pas lieu, 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 d’analyse croisée. Il se peut également que seul le champ que vous essayez de modifier ne soit pas disponible pour la 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 mode Feuille de données de requête, vous pouvez également utiliser une requête Mise à jour pour mettre à jour les données d’une table. Cet article ne traite pas des 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 tout de même les modifier et conserver les données modifiées une fois que vous avez terminé, vous pouvez utiliser une requête Création de table pour commencer par créer une table dont vous pouvez modifier les données. Vous pouvez également utiliser une requête Création de table pour enregistrer les résultats d’une requête qui ne permet pas la modification en tant que nouvelle table, puis modifier les données de cette nouvelle table. Cet article n’explique pas comment créer et exécuter des requêtes Création de table.
Pour plus d’informations sur les requêtes Création de table, voir Créer une requête Création de table.
Haut de la page
Quand puis-je modifier les données d’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 ont une relation un-à-un.
Remarque
Même lorsque vous pouvez modifier les données d’une requête, certains de ses champs peuvent ne pas être disponibles pour la modification. Ces cas sont énumérés dans la section suivante.
Haut de la page
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 dans les cas suivants :
La requête est une requête analyse croisée.
Il s’agit d’une 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
Bien que vous ne puissiez 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é RecordsetType du formulaire est définie sur Dynaset (Mises à jour incohérentes).
La requête contient une clause GROUP BY.
Haut de la page
Comment faire modifier une requête de manière à pouvoir modifier ses données ?
Le tableau suivant répertorie les cas dans lesquels vous ne pouvez pas modifier une requête, ainsi que les méthodes permettant de 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 à la 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. Pour plus d’informations sur la définition de cette propriété, reportez-vous à la section suivante, Définir la propriété Valeurs uniques sur Non. |
| 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. | Attribuez des autorisations de données de mise à jour. |
| La requête inclut plusieurs tables ou requêtes, et les tables ou requêtes ne sont pas jointes par une ligne de jointure en mode Création. | Créez les jointures appropriées. Consultez la section Créer des 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, supprimer l’attribut en lecture seule du lecteur ou déplacer 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 qu’il est déverrouillé. Attendez que l’autre utilisateur ait terminé 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 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 la requête. Pour plus d’informations sur l’ajout du champ de jointure, reportez-vous à la section Ajouter le champ de jointure du côté « plusieurs » aux champs de sortie de requête. |
| Le champ de jointure du côté « plusieurs » (après avoir modifié les données) est du côté « un ». | Appuyez sur Maj+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 jointure est une jointure externe droite. | Assurez-vous que ce champ contient de la valeur sur le côté « un ». Vous ne pouvez modifier le champ de jointure du côté « plusieurs » que 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 la requête. Consultez la section Ajouter des champs d’index uniques à partir d’une table ODBC liée pour savoir comment ajouter les champs. |
Haut de la page
Définir 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 création 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 située dans celle-ci, puis cliquez sur Non.
Créer des jointures
- 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 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.
Ajoutez 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 dans la grille de champs, indiquant qu’il s’agit maintenant 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 comportent un symbole en forme de clé à côté du nom du champ. Double-cliquez sur chaque champ qui n’est pas déjà dans la grille des champs. Chaque champ apparaît dans la grille des champs, indiquant qu’il s’agit désormais d’un champ de sortie.
Haut de la page