Utilisation de champs à plusieurs valeurs dans les requêtes

Important :  Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Dans Microsoft Office Access 2007, vous pouvez créer un champ contenant plusieurs valeurs, comme une liste de personnes auxquelles vous avez affecté un problème. Les champs à valeurs multiples conviennent dans des cas précis, par exemple lorsque vous utilisez Office Access 2007 pour manipuler des informations stockées dans une liste Windows SharePoint Services 3.0, qui contient l'un des champs à valeurs multiples disponibles dans Windows SharePoint Services 3.0.

Cet article décrit les champs à valeurs multiples et explique comment les utiliser dans des requêtes.

Contenu de cet article

Qu’est un champ à plusieurs valeurs ?

Présentation des requêtes

Affichage d’un champ à plusieurs valeurs dans une requête

Afficher les valeurs individuelles dans un champ à plusieurs valeurs

Présentation de la valeur liée et la valeur d’affichage dans un champ de recherche

Comment faire pour afficher la valeur liée dans une requête

Entrer des critères de requête simple pour un champ à plusieurs valeurs

Recherche de plusieurs valeurs dans un champ à plusieurs valeurs

Comprendre l’impact des, y compris une. Champ de valeur dans la liste de champs

Comptage, regroupement et d’autres fonctions d’agrégation

À l’aide d’une requête Ajout avec un champ à plusieurs valeurs

Utiliser une requête mise à jour avec un champ à plusieurs valeurs

Utiliser une requête Suppression avec un champ à plusieurs valeurs

Haut de la Page

Définition d'un champ à plusieurs valeurs

Supposons que vous avez une tâche à attribuer à l'un de vos employés ou prestataires de services, mais que vous trouvez plus judicieux de l'attribuer à plusieurs personnes. Dans Office Access 2007, vous pouvez créer un champ à plusieurs valeurs, ce qui permet de sélectionner les personnes dans une liste.

Champ à plusieurs valeurs

Lorsque vous cliquez sur la zone de liste déroulante, des cases à cocher sont activées pour indiquer votre sélection. Activez ou désactivez les éléments de la liste, puis cliquez sur OK pour envoyer votre sélection.

Zone de liste déroulante de champ à plusieurs valeurs

Les personnes sélectionnées sont stockées dans le champ à plusieurs valeurs, séparées par des virgules (par défaut) lors de l'affichage.

Champ à plusieurs valeurs séparées par des virgules

Les champs à plusieurs valeurs ont été créés spécialement pour les situations dans lesquelles vous souhaitez sélectionner et stocker plusieurs choix, sans qu'il soit nécessaire de créer une structure de base de données plus complexe. Les champs à plusieurs valeurs sont importants également pour l'intégration avec Windows SharePoint Services, car les listes SharePoint les prennent aussi en charge.

Vous vous demandez peut-être pour quelle raison Office Access 2007 vous permet de stocker plusieurs valeurs dans un champ, alors que c'est impossible dans la plupart des systèmes de gestion de base de données relationnelle. C'est parce que le moteur de base de données de Office Access 2007 ne stocke pas réellement les valeurs dans un seul champ. Même si vous ne voyez et n'utilisez qu'un seul champ, les valeurs sont en réalité stockées séparément et gérées dans des tables système cachées. Le moteur de base de données Access prend en charge tous ces aspects en séparant automatiquement les données pour les restituer ensuite dans le même champ.

Techniquement parlant, un champ Access à plusieurs valeurs fonctionne comme une relation de plusieurs à plusieurs. Prenons par exemple une table d'événements où vous attribuez la responsabilité de chaque événement à un ou plusieurs employés. Supposons que vous avez créé à cet effet un champ à plusieurs valeurs nommé « AffectéÀ ». Nous sommes bien dans le contexte d'une relation de plusieurs à plusieurs entre les événements et les employés. En effet, plusieurs employés peuvent être affectés à un événement quelconque et un employé peut aussi être affecté à plusieurs événements.

Haut de la Page

Présentation des requêtes

L'objectif principal d'une base de données est de fournir des informations : « Quel est le produit que nous vendons le mieux ? Quel est notre meilleur client ? Dans quel domaine nos objectifs commerciaux ne sont-ils pas atteints ? ». Si votre base de données Access est bien conçue, vous trouverez facilement la réponse à toutes les questions que vous vous posez. Pour cela, créez une requête et saisissez les critères nécessaires. Les données d'une requête peuvent provenir d'une ou plusieurs tables. Une fois qu'Access a extrait les données répondant à votre question, vous pouvez les consulter et les analyser. Après avoir créé une requête, vous pouvez l'utiliser comme base d'un formulaire, d'un état, d'un graphique, voire d'une autre requête.

Dans Office Access 2007, vous pouvez utiliser des champs à plusieurs valeurs dans certaines requêtes et de différentes manières. Vous pouvez afficher un champ à plusieurs valeurs dans une requête, afficher les différentes valeurs d'un champ à plusieurs valeurs dans une requête et exécuter certaines fonctions d'agrégation et requêtes d'action à l'aide de champs à plusieurs valeurs.

Haut de la Page

Affichage d'un champ à plusieurs valeurs dans une requête

Lorsque vous affichez un champ à plusieurs valeurs dans une requête, vous devez déterminer si vous allez afficher la totalité du champ avec toutes les valeurs séparées par des virgules ou une ligne distincte pour chaque valeur. Supposons, par exemple, que vous avez une table Problèmes qui contient un champ AffectéÀ permettant d'attribuer des événements à des personnes. Vous pouvez élaborer une requête qui contient le champ AffectéÀ en suivant la procédure ci-dessous.

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

    Ruban d'images Access

  4. Dans la boîte de dialogue Afficher la table, cliquez sur la table (« Problèmes » dans cet exemple) qui contient le champ à plusieurs valeurs, puis cliquez sur Ajouter.

  5. Cliquez sur Fermer.

  6. Faites glisser les champs à utiliser dans la grille de création de la requête. Dans cet exemple, faites glisser le champ Titre et le champ à plusieurs valeurs « AffectéÀ » dans la grille de la requête.

  7. Sous l'onglet Créer, cliquez sur Exécuter dans le groupe Résultats.

Le résultat de cette requête se présentera comme dans la figure ci-dessous, avec une colonne affichant le titre du problème et une autre colonne affichant le champ à plusieurs valeurs :

Résultat de la requête affichant les champs Titre et AffectéÀ

Lors de la création d'une requête en mode Création, Access génère automatiquement l'instruction SQL (Structured Query Language) correspondante. SQL est le langage de requête utilisé par Access. Pour passer en mode SQL afin d'afficher l'instruction SQL, suivez la procédure ci-dessous.

  1. Sous l'onglet Créer, dans le groupe Résultats, cliquez sur la flèche sous Affichage pour afficher le menu Affichage.

  2. Cliquez sur Mode SQL.

L'instruction SQL se présente comme suit :

SELECT Issues.Title, 
Issues.AssignedTo
FROM Issues;

Haut de la Page

Affichage des différentes valeurs d'un champ à plusieurs valeurs

Supposons que vous souhaitez développer (ou agrandir) le champ à plusieurs valeurs AffectéÀ, de façon à ce que chaque nom ou valeur AffectéÀ s'affiche sur une ligne distincte. Pour cela, vous devez spécifier la propriété Valeur en ajoutant la chaîne « .Valeur » à « AffectéÀ » dans la ligne Champ, comme vous le voyez ici dans la grille de la requête :

Grille de la requête affichant le Titre et AffectéÀ.Valeur

Lorsque vous spécifiez AffectéÀ dans la ligne Champ, Access affiche toutes les valeurs du champ à plusieurs valeurs sur une seule ligne lorsque vous exécutez la requête. Mais si vous utilisez la propriété Valeur, comme dans AffectéÀ.Valeur, Access affiche le champ à plusieurs valeurs en le développant, de façon à ce que chaque valeur figure dans sa propre ligne. Pour créer une requête destinée à afficher les différentes valeurs, suivez la procédure ci-dessous.

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

    Ruban d'images Access

  4. Dans la boîte de dialogue Afficher la table, cliquez sur la table (« Problèmes » dans cet exemple) qui contient le champ à plusieurs valeurs, puis cliquez sur Ajouter.

  5. Cliquez sur Fermer.

  6. Faites glisser les champs que vous souhaitez utiliser (le champ à plusieurs valeurs appelé « AffectéÀ.Valeur » dans notre exemple) dans la grille de la requête.

  7. Dans l'onglet Créer, cliquez sur Résultats dans le groupe Outils.

Résultat de la requête indiquant le Titre et les valeurs AffectéÀ individuelles

Lors de la création d'une requête en mode Création, Access génère automatiquement l'instruction SQL (Structured Query Language) correspondante. SQL est le langage de requête utilisé par Access. Pour passer en mode SQL afin d'afficher l'instruction SQL, suivez la procédure ci-dessous.

  1. Sous l'onglet Créer, dans le groupe Résultats, cliquez sur la flèche sous Affichage pour afficher le menu Affichage.

  2. Cliquez sur Mode SQL.

L'instruction SQL se présente comme suit :

SELECT Issues.Title, 
Issues.AssignedTo.Value
FROM Issues;

Haut de la Page

Valeur liée et valeur d'affichage d'un champ Liste de choix

Un champ à plusieurs valeurs est un champ de type Liste de choix, c'est-à-dire un champ d'une table dont la valeur provient d'une autre table ou requête ou d'une liste de valeurs. Dans les versions antérieures, Access prenait en charge les champs Liste de choix à une seule valeur. Les champs Liste de choix à plusieurs valeurs constituent une nouveauté de Office Access 2007. L'objectif d'un champ Liste de choix est de remplacer l'affichage d'un nombre tel qu'un identificateur (ou toute autre valeur de clé étrangère) par un élément plus évocateur, comme un nom. Par exemple, au lieu d'afficher un numéro de contact, Access peut afficher un nom de contact. Dans ce cas, le numéro de contact correspond à la valeur liée. Il est automatiquement recherché dans une table ou une requête source et remplacé par le nom de contact, qui correspond à la valeur d'affichage.

Un champ Liste de choix à une seule valeur contient une valeur d'affichage et une valeur liée. De même, un champ Liste de choix à plusieurs valeurs contient des valeurs d'affichage qui apparaissent dans l'interface utilisateur, ainsi que des valeurs liées stockées dans la table. Pour chaque entrée du champ à plusieurs valeurs, une valeur d'affichage est « recherchée » d'après la valeur liée.

Par conséquent, Access affiche souvent une valeur d'affichage recherchée différente de la valeur liée stockée dans le champ. Par exemple, dans l'exemple précédent reposant sur le champ AffectéÀ, des valeurs de numéro d'employé de la requête Contacts (étendu) sont stockées dans le champ AffectéÀ. La requête Contacts (étendu) est sélectionnée comme contenu lors de la création du champ à plusieurs valeurs.

Ces numéros d'employé constituent les valeurs liées. Toutefois, comme le champ AffectéÀ est un champ Liste de choix, Access affiche l'ensemble de valeurs recherchées dans les résultats de la requête (dans ce cas, il s'agit des noms de contacts). Les noms de contacts correspondent aux valeurs d'affichage.

Feuille de données contenant des valeurs d'affichage et feuille de données contenant des valeurs liées

1. Les valeurs d'affichage.

2. Valeurs liées.

Il est possible de consulter les propriétés de liste de choix relatives à un champ à plusieurs valeurs en mode Création. Voici la procédure à suivre :

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez et ouvrez la base de données.

  3. Dans le volet de navigation, cliquez avec le bouton droit sur la table qui contient le champ à plusieurs valeurs.

  4. Cliquez sur Mode Création.

  5. Cliquez sur le champ à plusieurs valeurs (par exemple, cliquez sur AffectéÀ).

  6. Sous Propriétés du champ, cliquez sur l'onglet Liste de choix.

Propriétés de champ de recherche multiple

Il est important de bien comprendre la distinction entre la valeur d'affichage et la valeur liée d'un champ Liste de choix. Par défaut, la valeur d'affichage apparaît automatiquement en mode Feuille de données. Par opposition, la valeur liée est le contenu stocké, l'élément utilisé dans les critères de requête et utilisé par défaut par Access pour les liaisons avec d'autres tables.

Haut de la Page

Comment afficher la valeur liée dans une requête

Par défaut, la valeur d'affichage apparaît automatiquement en mode Feuille de données. Lors de la création d'une requête, vous pouvez toutefois remplacer ce comportement afin d'afficher la valeur liée en lieu et place. Voici la procédure à suivre :

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

    Ruban d'images Access

  4. Dans la boîte de dialogue Afficher la table, cliquez sur la table (« Problèmes » dans cet exemple) qui contient le champ à plusieurs valeurs, puis cliquez sur Ajouter.

  5. Cliquez sur Fermer.

  6. Faites glisser les champs à utiliser dans la grille de création de la requête. Dans cet exemple, faites glisser le champ Titre et le champ à plusieurs valeurs « AffectéÀ.Valeur » dans la grille de la requête.

  7. Cliquez sur le champ AffectéÀ.Valeur dans la grille de la requête afin de le mettre en évidence.

  8. Sous l'onglet Créer, dans le groupe Afficher/Masquer, cliquez sur Feuille des propriétés.

  9. Dans la feuille des propriétés, sous l'onglet Liste de choix, propriété Afficher le contrôle, sélectionnez Zone de texte.

Propriété Afficher le contrôle en mode Création de requête

Lorsque vous définissez la propriété Afficher le contrôle sur Zone de texte, vous désactivez le comportement normal de la colonne de liste de choix afin que la valeur liée remplace la valeur d'affichage.

Valeur liée affichée dans les résultats d'une requête

Haut de la Page

Saisie de critères de requête simples pour un champ à plusieurs valeurs

Supposons que vous souhaitez consulter les problèmes affectés à « Barbara Mayer ». Vous pouvez entrer des critères de requête dans la ligne Critères de la grille de requête. Toutefois, lorsque vous entrez des critères pour un champ Liste de choix, vous devez entrer la valeur liée au lieu de la valeur d'affichage. Dans ce cas, vous déterminez que la valeur liée correspondant à Barbara Mayer est 6. Il s'agit de la valeur de clé primaire correspondante dans la requête Contacts (étendu) portant sur Barbara.

Pour créer une requête affichant les problèmes affectés à Barbara :

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

    Ruban d'images Access

  4. Dans la boîte de dialogue Afficher la table, cliquez sur la table (« Problèmes » dans cet exemple) qui contient le champ à plusieurs valeurs, puis cliquez sur Ajouter.

  5. Cliquez sur Fermer.

  6. Faites glisser les champs à utiliser dans la grille de la requête. Dans cet exemple, faites d'abord glisser Titre dans la première colonne de la grille. Ensuite, faites glisser AffectéÀ dans la deuxième colonne.

  7. Dans l'onglet de la grille de requête, sous AffectéÀ, dans la ligne Critères, entrez 6. Notez qu'il s'agit de la valeur liée et non de la valeur d'affichage.

    Grille de requête contenant des critères dans un champ à plusieurs valeurs

  8. Sous l'onglet Créer, cliquez sur Exécuter dans le groupe Résultats pour exécuter la requête.

Lorsque vous exécutez la requête, les résultats s'affichent en mode Feuille de données. Cette requête ne renvoie que des lignes contenant le nom « Barbara Mayer ».

Résultats de la requête où la valeur AffectéÀ contient 6

Lors de la création d'une requête en mode Création, Access génère automatiquement l'instruction SQL (Structured Query Language) correspondante. SQL est le langage de requête utilisé par Access. Pour passer en mode SQL afin d'afficher l'instruction SQL, suivez la procédure ci-dessous.

  1. Sous l'onglet Créer, dans le groupe Résultats, cliquez sur la flèche sous Affichage pour afficher le menu Affichage.

  2. Cliquez sur Mode SQL.

L'instruction SQL se présente comme suit :

SELECT Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

Recherche de texte au lieu d'un numéro d'identification

Supposons que l'entrée des numéros d'identification vous paraît mal organisée et que vous préférez entrer le nom « Barbara Mayer » comme valeur à rechercher. Dans ce cas, les résultats de la requête doivent comporter un champ contenant le nom textuel, pour que vous puissiez rechercher « Barbara Mayer ».

Vous ne pouvez pas utiliser le champ AffectéÀ.Valeur car sa valeur liée est un ID. Par conséquent, vous devez entrer un ID pour filtrer ce champ.

Dans cet exemple le champ Nom du contact ne réside pas dans une table. En lieu et place, il est situé dans la requête source qui fournit les données au champ à plusieurs valeurs AffectéÀ. Vous pouvez lier la table ou la requête source du champ à plusieurs valeurs à la table qui contient ce champ à plusieurs valeurs afin d'inclure un champ (Nom du contact, dans cet exemple) provenant de la table ou de la requête source dans les résultats de la requête. Vous pouvez ensuite rechercher le champ au lieu du champ à plusieurs valeurs.

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

    Ruban d'images Access

  4. Dans la boîte de dialogue Afficher la table, cliquez sur la table (« Problèmes » dans cet exemple) qui contient le champ à plusieurs valeurs, puis cliquez sur Ajouter.

  5. Dans la boîte de dialogue Afficher la table, cliquez sur l'onglet Requêtes, puis cliquez sur la requête (dans cet exemple, « Contacts (étendu) ») correspondant à la source du champ à plusieurs valeurs. Cliquez ensuite sur Ajouter.

  6. Cliquez sur Fermer.

  7. Faites glisser les champs à utiliser dans la grille de la requête. Dans cet exemple, faites d'abord glisser Titre de la table Problèmes dans la première colonne de la grille. Ensuite, faites glisser Nom du contact de la requête Contacts (étendu) dans la deuxième colonne et désactivez la case à cocher Afficher. Enfin, faites glisser AffectéÀ dans la troisième colonne.

  8. Si une ligne de jointure n'est pas visible entre le champ N° de la requête Contacts (étendu) et le champ AffectéÀ.Valeur comme indiqué ci-dessous, cliquez et faites glisser le champ N° de la requête Contacts (étendu) vers le champ AffectéÀ.Valeur de la table Problèmes.

    Une ligne de jointure apparaît.

    Si d'autres lignes de jointure sont visibles, supprimez-les. Pour supprimer une ligne de jointure, cliquez dessus pour la mettre en évidence, puis appuyez sur Suppr.

  9. Dans la grille de requête, sous Nom du contact dans la ligne Critères, entrez « Barbara Mayer ».

    Grille de requête avec critères AffectéÀ contenant « Barbara Mayer »

  10. Sous l'onglet Créer, cliquez sur Exécuter dans le groupe Résultats pour exécuter la requête.

Lorsque vous exécutez la requête, les résultats s'affichent en mode Feuille de données. Notez que ces résultats n'affichent que les lignes contenant « Barbara Mayer ». Cette technique fonctionne car la jointure entre le numéro de la table ou requête source et le champ AffectéÀ.Valeur renvoie une ligne distincte pour chaque valeur du champ à plusieurs valeurs, chaque ligne contenant également un champ Nom du contact avec le nom complet. Le nom du contact correspondant à un champ calculé et non à un champ de recherche, il n'existe aucune valeur liée ou d'affichage. Il n'existe dès lors qu'une seule valeur : le nom du contact. Par conséquent, vous pouvez fournir le texte à rechercher, à savoir « Barbara Mayer » dans cet exemple.

Résultats de la requête avec AffectéÀ contenant « Barbara Mayer »

Lors de la création d'une requête en mode Création, Access génère automatiquement l'instruction SQL (Structured Query Language) correspondante. SQL est le langage de requête utilisé par Access. Pour passer en mode SQL afin d'afficher l'instruction SQL, suivez la procédure ci-dessous.

  1. Sous l'onglet Créer, dans le groupe Résultats, cliquez sur la flèche sous Affichage pour afficher le menu Affichage.

  2. Cliquez sur Mode SQL.

L'instruction SQL se présente comme suit :

SELECT Issues.Title, Issues.AssignedTo 
FROM [Contacts Extended] INNER JOIN Issues ON
[Contacts Extended].ID = Issues.AssignedTo.Value
WHERE ((([Contacts Extended].[Contact Name])=
"Kelly Rollin"));

Haut de la Page

Recherche de plusieurs valeurs dans un champ à plusieurs valeurs

Vous devrez parfois rechercher un élément correspondant à plusieurs valeurs. Supposons que vous souhaitez afficher les problèmes dont le champ AffectéÀ contient les valeurs « Barbara Mayer» et « Isabelle Leroy" entre les valeurs du champ AffectéÀ. La valeur liée pour Barbara Mayer est 6 et la valeur liée pour Isabelle Leroy est 10. Pour spécifier plusieurs critères pour un champ à plusieurs valeurs, vous pouvez utiliser les opérateurs AND et OR.

Pour créer la requête, suivez la procédure ci-dessous.

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

  4. Dans la boîte de dialogue Afficher la table, cliquez sur la table (« Problèmes » dans cet exemple) qui contient le champ à plusieurs valeurs, puis cliquez sur Ajouter.

  5. Cliquez sur Fermer.

  6. Faites glisser les champs à utiliser dans la grille de la requête. Dans cet exemple, faites d'abord glisser Titre dans la première colonne de la grille. Ensuite, faites glisser AffectéÀ dans la deuxième colonne.

  7. Dans la grille de requête, sous AffectéÀ, dans la ligne critères, tapez 6 à 10.

    Requête utilisant l'opérateur AND dans un champ à plusieurs valeurs

  8. Sous l'onglet Créer, cliquez sur Exécuter dans le groupe Résultats pour exécuter la requête.

Lorsque vous exécutez la requête, les résultats s'affichent en mode Feuille de données.

Résultats de la requête affichant l'utilisation de l'opérateur AND dans un champ à plusieurs valeurs

Les résultats n'affichent que les problèmes affectés à Barbara Mayer et Isabelle Leroy. Lors de la création d'une requête en mode Création, Access génère automatiquement l'instruction SQL (Structured Query Language) correspondante. SQL est le langage de requête utilisé par Access. Pour passer en mode SQL afin d'afficher l'instruction SQL, suivez la procédure ci-dessous.

  1. Sous l'onglet Créer, dans le groupe Résultats, cliquez sur la flèche sous Affichage pour afficher le menu Affichage.

  2. Cliquez sur Mode SQL.

L'instruction SQL se présente comme suit :

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
And (Issues.AssignedTo.Value)=10));

Utilisation de l'opérateur OR au lieu de l'opérateur AND

Supposons que vous souhaitez modifier la requête pour répertorier les lignes contenant « Barbara Mayer » ou « Isabelle Leroy ». Vous pouvez modifier l'instruction SQL afin d'utiliser l'opérateur OR au lieu de l'opérateur AND. L'instruction doit alors se présenter comme suit :

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
Or (Issues.AssignedTo.Value)=10));

Lorsque vous exécutez la requête, les résultats s'affichent en mode Feuille de données.

Requête utilisant l'opérateur OR dans un champ à plusieurs valeurs

Les résultats n'affichent que les problèmes affectés à Barbara Mayer ou Isabelle Leroy.

Haut de la Page

Conséquences de l'intégration d'un champ .Valeur dans la liste de champs

Il est important de comprendre l'impact de l'intégration d'un champ .Valeur dans la liste de colonnes de sortie (liste SELECT) dans la requête. En effet, lors du traitement de la requête, la première étape consiste à générer un jeu de résultats sans appliquer de filtre ou de clause WHERE. Le filtre est ensuite appliqué à ce jeu initial. Par conséquent, il peut être utile d'envisager ce jeu de résultats comme étant d'abord généré, puis restreint par le filtre de la clause WHERE. Prenons l'exemple suivant :

SELECT Issues.Title, AssignedTo
FROM Issues
WHERE NOT AssignedTo.Value = 3;

Avant le filtrage, le jeu de résultats initial peut se présenter comme suit :

Titre

AffectéÀ

Problème 1

Gregor Chappell, Nathalie Dubois

Problème 2

Marie-Laure Dupont, Barbara Mayer, Christine Chang, Isabelle Leroy

Problème 3

Alain Dubois, Barbara Mayer, Nathalie Dubois, Thomas Durand

Problème 4

Michel Martin, Isabelle Leroy

Problème 5

Gregor Chappell, Marie-Laure Dupont

Problème 6

Jean Dubois, Barbara Mayer

Problème 7

Alain Dubois, Christine Chang

Problème 8

Gregor Chappell

Problème 9

Barbara Mayer, Isabelle Leroy

Problème 10

Nathalie Dubois, Thomas Durand

Le filtrage est ensuite appliqué au jeu de résultats initial et sélectionne les lignes qui ne contiennent pas Gregor Chappell, qui porte le numéro 3 :

Titre

AffectéÀ

Problème 2

Marie-Laure Dupont, Barbara Mayer, Christine Chang, Isabelle Leroy

Problème 3

Alain Dubois, Barbara Mayer, Nathalie Dubois, Thomas Durand

Problème 4

Michel Martin, Isabelle Leroy

Problème 6

Jean Dubois, Barbara Mayer

Problème 7

Alain Dubois, Christine Chang

Problème 9

Barbara Mayer, Isabelle Leroy

Problème 10

Nathalie Dubois, Thomas Durand

Prenons à présent un autre exemple, qui inclut le champ .Valeur dans la liste des champs. Notez tout d'abord l'impact du champ .Valeur sur le jeu de résultats initial avant le filtrage :

SELECT Issues.Title, AssignedTo.Value
FROM Issues
WHERE NOT AssignedTo.Value = 3;

Avant le filtrage, le jeu de résultats initial se présente comme suit :

Titre

AffectéÀ.Valeur

Problème 1

Gregor Chappell

Problème 1

Nathalie Dubois

Problème 2

Marie-Laure Dupont

Problème 2

Barbara Mayer

Problème 2

Isabelle Leroy

Problème 2

Christine Chang

Problème 3

Nathalie Dubois

Problème 3

Alain Dubois

Problème 3

Barbara Mayer

Problème 3

Thomas Durand

Problème 4

Isabelle Leroy

Problème 4

Michel Martin

Problème 5

Gregor Chappell

Problème 5

Marie-Laure Dupont

Problème 6

Barbara Mayer

Problème 6

Jean Dubois

Problème 7

Alain Dubois

Problème 7

Christine Chang

Problème 8

Gregor Chappell

Problème 9

Barbara Mayer

Problème 9

Isabelle Leroy

Problème 10

Thomas Durand

Problème 10

Nathalie Dubois

Le filtrage est à présent appliqué au jeu de résultats initial et sélectionne uniquement les lignes qui ne contiennent pas Gregor Chappell, qui porte le numéro 3 :

Titre

AffectéÀ.Valeur

Problème 1

Nathalie Dubois

Problème 2

Marie-Laure Dupont

Problème 2

Barbara Mayer

Problème 2

Isabelle Leroy

Problème 2

Christine Chang

Problème 3

Nathalie Dubois

Problème 3

Alain Dubois

Problème 3

Barbara Mayer

Problème 3

Thomas Durand

Problème 4

Isabelle Leroy

Problème 4

Michel Martin

Problème 5

Marie-Laure Dupont

Problème 6

Barbara Mayer

Problème 6

Jean Dubois

Problème 7

Alain Dubois

Problème 7

Christine Chang

Problème 9

Barbara Mayer

Problème 9

Isabelle Leroy

Problème 10

Thomas Durand

Problème 10

Nathalie Dubois

Il est recommandé de consulter le jeu de résultats avant et après l'application du filtre afin d'anticiper les résultats de la requête en toute simplicité.

Haut de la Page

Comptage, regroupement et utilisation d'autres fonctions d'agrégation

Il est possible d'effectuer des calculs sur des groupes de valeurs stockées dans un champ à plusieurs valeurs. Cela peut s'avérer utile, par exemple, pour connaître le nombre de problèmes affectés à chaque personne ou le nombre de personnes affectées à chaque problème. Vous pouvez effectuer ce type de calcul à l'aide d'une fonction d'agrégation dans une requête Totaux.

Une fonction d'agrégation effectue un calcul sur un ensemble de valeurs avant de renvoyer une valeur unique. Par exemple, Somme, Compte et Moyenne constituent trois fonctions d'agrégation servant à calculer des totaux. Vous pouvez effectuer cette opération pour tous les enregistrements ou pour des groupes d'enregistrements. Pour obtenir une synthèse par groupe, vous devez sélectionner les champs à regrouper dans la grille de la requête.

La procédure ci-dessous explique comment créer une requête permettant de dénombrer les problèmes affectés à chaque personne.

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

    Ruban d'images Access

  4. Dans la boîte de dialogue Afficher la table, cliquez sur la table (« Problèmes » dans cet exemple) qui contient le champ à plusieurs valeurs, puis cliquez sur Ajouter.

  5. Cliquez sur Fermer.

  6. Faites glisser les champs à utiliser dans la grille de la requête. Dans cet exemple, faites d'abord glisser AffectéÀ.Valeur dans la première colonne de la grille. Ensuite, faites glisser Titre dans la deuxième colonne.

  7. Sous l'onglet Créer, dans le groupe Afficher/Masquer, cliquez sur Totaux.

    La ligne Opération apparaît dans la grille de la requête. Par défaut, Regroupement s'affiche dans la cellule Opération de chaque champ de la requête.

  8. Dans la grille de la requête, sous Titre, dans la ligne Opération, cliquez sur Compte.

  9. Sous l'onglet Créer, cliquez sur Exécuter dans le groupe Résultats pour exécuter la requête.

Lorsque vous créez une requête, vous spécifiez les champs à utiliser pour le regroupement et ceux à utiliser pour les totaux (calculs). Dans cet exemple, AffectéÀ.Valeur était le champ utilisé pour le regroupement, tandis que Titre était le champ utilisé pour un calcul du total. Pour les champs à utiliser pour le regroupement, sélectionnez Regroupement dans la ligne Opération. En ce qui concerne les champs à utiliser pour un calcul du total, sélectionnez un type de calcul (Somme ou Moyenne, par exemple). Notez que si vous utilisez un champ à plusieurs valeurs pour le regroupement, vous devez utiliser le champ .Valeur. Ainsi, dans cet exemple, vous devez utiliser le champ AffectéÀ.Valeur en lieu et place du champ AffectéÀ pour le regroupement. Par ailleurs, vous devez utiliser le champ AffectéÀ.Valeur lorsque vous utilisez un champ à plusieurs valeurs à des fins de tri.

Remarque : Lorsque vous utilisez un champ à plusieurs valeurs à des fins de regroupement ou de tri, vous devez utiliser le champ .Valeur.

Lorsque vous exécutez la requête, les résultats s'affichent en mode Feuille de données.

Requête dénombrant les problèmes affectés à chaque personne

Pour afficher l'instruction SQL correspondant à cette requête, passez en mode SQL en suivant la procédure ci-dessous.

  1. Sous l'onglet Créer, dans le groupe Résultats, cliquez sur la flèche sous Affichage pour afficher le menu Affichage.

  2. Cliquez sur Mode SQL.

L'instruction SQL se présente comme suit :

SELECT Issues.AssignedTo.Value, 
Count(Issues.Title) AS CountOfTitle
FROM Issues
GROUP BY Issues.AssignedTo.Value;

Supposons que vous souhaitez savoir combien de personnes sont affectées à chaque problème. Vous pouvez effectuer un regroupement par titre et sélectionner Compte comme type de calcul pour le champ à plusieurs valeurs. Pour créer la requête, suivez la procédure ci-dessous.

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

    Ruban d'images Access

  4. Dans la boîte de dialogue Afficher la table, cliquez sur la table (« Problèmes » dans cet exemple) qui contient le champ à plusieurs valeurs, puis cliquez sur Ajouter.

  5. Cliquez sur Fermer.

  6. Faites glisser les champs à utiliser dans la grille de la requête. Dans cet exemple, faites d'abord glisser Titre dans la première colonne de la grille. Ensuite, faites glisser AffectéÀ dans la deuxième colonne.

  7. Sous l'onglet Créer, dans le groupe Afficher/Masquer, cliquez sur Totaux.

    La ligne Opération apparaît dans la grille de la requête. Par défaut, Regroupement s'affiche dans la cellule Opération du champ Titre de la requête. En outre, Expression s'affiche par défaut dans la cellule Opération du champ AffectéÀ. En effet, vous ne pouvez pas effectuer d'opération de regroupement sur un champ à plusieurs valeurs (uniquement sur un champ à plusieurs valeurs .Valeur.

  8. Dans la grille de la requête, sous AffectéÀ, dans la ligne Opération, cliquez sur Compte.

  9. Sous l'onglet Créer, cliquez sur Exécuter dans le groupe Résultats pour exécuter la requête.

Lorsque vous exécutez la requête, les résultats s'affichent en mode Feuille de données.

Résultats de la requête indiquant le nombre de personnes par problème

Pour afficher l'instruction SQL correspondant à cette requête, passez en mode SQL en suivant la procédure ci-dessous.

  1. Sous l'onglet Créer, dans le groupe Résultats, cliquez sur la flèche sous Affichage pour afficher le menu Affichage.

  2. Cliquez sur Mode SQL.

L'instruction SQL se présente comme suit :

SELECT Issues.Title, 
Count(Issues.AssignedTo) AS CountOfAssignedTo
FROM Issues
GROUP BY Issues.Title;

Remarque : Dans l'instruction SQL SELECT ci-dessus, vous pouvez utiliser indifféremment Compte(Problèmes.AffectéÀ) ou Compte(Problèmes.AffectéÀ.Valeur). En effet, vous obtenez le même résultat.

Haut de la Page

Utilisation d'une requête Ajout avec un champ à plusieurs valeurs

Vous pouvez insérer une seule valeur dans un champ à plusieurs valeurs à l'aide d'une requête Ajout. Par exemple, vous souhaitez ajouter « Barbara Mayer » au champ à plusieurs valeurs AffectéÀ pour un problème. Vous devez d'abord déterminer la valeur de clé primaire du problème et du contact pour Barbara. Supposons que les valeurs sont 10 pour le problème et 6 pour Barbara.

Suivez la procédure ci-dessous pour créer la requête.

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

    Ruban d'images Access

  4. Dans la boîte de dialogue Afficher la table, cliquez sur Fermer.

  5. Sous l'onglet Créer, dans le groupe Résultats, cliquez sur la flèche sous Affichage pour afficher le menu Affichage.

  6. Cliquez sur Mode SQL.

  7. En mode SQL, tapez l'instruction SQL suivante :

    INSERT INTO Issues ( AssignedTo.[Value] )
    VALUES (6)
    WHERE ID = 10;
  8. Sous l'onglet Créer, cliquez sur Exécuter dans le groupe Résultats pour exécuter la requête.

    Accès peut vous demander de confirmer l'ajout de la ligne sélectionnée. Cliquez sur Oui pour insérer la ligne ou sur Non pour annuler l'opération.

Barbara est à présent répertoriée dans le champ AffectéÀ pour ce problème. Il s'agit du seul formulaire de la requête Ajout compatible avec un champ à plusieurs valeurs.

Remarque : Une requête Ajout est une requête permettant d'ajouter des enregistrements d'une table dans une autre. Dans Office Access 2007, vous ne pouvez pas utiliser de requête Ajout faisant référence à une table qui contient un champ à plusieurs valeurs. Par exemple, la requête suivante n'est pas valide :

INSERT INTO [NewIssues] ( ID, Title, AssignedTo ) SELECT Issues.ID, Issues.Title, Issues.AssignedTo FROM Issues;

Haut de la Page

Utilisation d'une requête Mise à jour avec un champ à plusieurs valeurs

Vous pouvez utiliser une requête Mise à jour pour modifier les valeurs d'enregistrements. Lorsque vous utilisez une requête Mise à jour pour mettre à jour une table qui contient des champs à plusieurs valeurs, vous pouvez remplacer une valeur d'un champ à plusieurs valeurs par une autre. Ainsi, vous pouvez mettre à jour le champ à plusieurs valeurs AffectéÀ correspondant à un problème donné (par exemple, pour remplacer « Barbara Mayer » par « Isabelle Leroy »). Dans ce cas, vous déterminez d'abord la valeur de clé primaire du problème et des contacts pour Barbara et Isabelle. Supposons que la valeur du problème est 8, celle de Barbara est 6 et celle d'Isabelle est 10.

Suivez la procédure ci-dessous pour créer la requête.

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

  4. Dans la boîte de dialogue Afficher la table, cliquez sur Fermer.

  5. Sous l'onglet Créer, dans le groupe Résultats, cliquez sur la flèche sous Affichage pour afficher le menu Affichage.

  6. Cliquez sur Mode SQL.

  7. En mode SQL, tapez l'instruction SQL suivante :

    UPDATE Issues 
    SET Issues.AssignedTo.Value = 10
    WHERE (((Issues.AssignedTo.Value)=6)
    AND ((Issues.ID)=8));

    Remarques : 

    • Vous devez toujours intégrer une clause WHERE qui identifie uniquement les enregistrements à mettre à jour. À défaut, vous mettrez à jour des enregistrements que vous n'aviez pas l'intention de modifier. En effet, une requête Mise à jour qui ne contient pas de clause WHERE modifie chaque ligne de la table.

    • Vous pouvez spécifier une valeur à modifier.

  8. Sous l'onglet Créer, cliquez sur Exécuter dans le groupe Résultats pour exécuter la requête.

    Accès peut vous demander de confirmer la mise à jour de l'enregistrement. Cliquez sur Oui pour mettre à jour la ligne ou sur Non pour annuler l'opération.

Isabelle Leroy est à présent répertoriée au lieu de Barbara Mayer dans le champ AffectéÀ pour ce problème.

Haut de la Page

Utilisation d'une requête Suppression avec un champ à plusieurs valeurs

Une requête Suppression vous permet de supprimer des enregistrements d'une table. Lorsque vous utilisez une table qui contient un champ à plusieurs valeurs, vous pouvez utiliser une requête Suppression pour supprimer des enregistrements qui contiennent une valeur donnée dans un champ à plusieurs valeurs ou pour supprimer une valeur donnée d'un champ à plusieurs valeurs dans tous les enregistrements de la table.

Supposons que vous souhaitez supprimer « Barbara Mayer » du champ AffectéÀ dans toute la table. Suivez la procédure ci-dessous pour créer la requête correspondante.

  1. Cliquez sur le bouton Microsoft Office Image du bouton Office , puis sur Ouvrir.

  2. Dans la boîte de dialogue Ouvrir, sélectionnez la base de données et ouvrez-la.

  3. Dans l'onglet Créer, cliquez sur Création de requête dans le groupe Autre.

  4. Dans la boîte de dialogue Afficher la table, cliquez sur Fermer.

  5. Sous l'onglet Créer, dans le groupe Résultats, cliquez sur la flèche sous Affichage pour afficher le menu Affichage.

  6. Cliquez sur Mode SQL.

  7. En mode SQL, tapez l'instruction SQL suivante :

    DELETE Issues.AssignedTo.Value
    FROM Issues
    WHERE (((Issues.AssignedTo.Value)=6));
  8. Sous l'onglet Créer, cliquez sur Exécuter dans le groupe Résultats pour exécuter la requête.

    Accès peut vous demander de confirmer la suppression des enregistrements. Cliquez sur Oui pour supprimer les enregistrements ou sur Non pour annuler l'opération.

Dans l'exemple de requête ci-dessous, aucun enregistrement n'est supprimé de la table Problèmes. En effet, cette requête supprime une valeur du champ à plusieurs valeurs AffectéÀ dans chaque enregistrement contenant la valeur. Si vous souhaitez supprimer des enregistrements de la table Problèmes, ne spécifiez pas de champ après la clause DELETE dans l'instruction SQL. Par exemple, pour supprimer tous les problèmes affectés à « Barbara Mayer », entrez l'instruction SQL ci-dessous :

DELETE 
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

Remarque : Faites preuve de prudence lors de la suppression d'enregistrements à l'aide d'une requête Suppression, car il est impossible de récupérer les enregistrements supprimés.

Haut de la Page

Remarque : Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×