IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ access 2007

FAQ access 2007Consultez toutes les FAQ

Nombre d'auteurs : 1, nombre de questions : 75, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireChamps multi-valuésSQL

Soit la table suivante :

  • NumChauffeur : NuméroAuto
  • NomChauffeur : Texte(20)
  • PrenomChauffeur : Texte(20)
  • PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées

La requête permet de compter le nombreux de permis différents attribués

 
Sélectionnez
SELECT Count(PermisDistinct) AS NombreDePermis
FROM
  (SELECT  DISTINCT(PermisChauffeur.Value)  AS PermisDistinct
    FROM  tbl_chauffeur)
Créé le 27 juin 2006  par Christophe Warin

Soit la table suivante :

  • NumChauffeur : NuméroAuto
  • NomChauffeur : Texte(20)
  • PrenomChauffeur : Texte(20)
  • PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées

La requête suivante liste les chauffeurs ainsi que le nombre de permis qu'ils possèdent

 
Sélectionnez
SELECT NomChauffeur, PrenomChauffeur, (SELECT Count(PermisChauffeur.Value) 
FROM tbl_chauffeur WHERE NumChauffeur=T.NumChauffeur)
FROM tbl_chauffeur AS T;
Créé le 27 juin 2006  par Christophe Warin

Lien : Comment savoir si un champ multi-valué est vide en SQL ?
Lien : Comment compter le nombre de valeurs distinctes d'un champ multi-valué sur l'ensemble la table en SQL ?
Lien : Comment compter le nombre de valeurs d'un champ multi-valué en VBA ?

Soit la table suivante :

  • NumChauffeur : NuméroAuto
  • NomChauffeur : Texte(20)
  • PrenomChauffeur : Texte(20)
  • PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées

La requête suivante permet de lister les chauffeurs possédant le permis D

 
Sélectionnez
SELECT NomChauffeur,PrenomChauffeur
FROM tbl_chauffeur
WHERE PermisChauffeur.Value="D"

Cette deuxième requête retourne les chauffeurs possédant à la fois le permis D et le permis E

 
Sélectionnez
SELECT NomChauffeur, PrenomChauffeur
FROM tbl_chauffeur
WHERE PermisChauffeur.Value="D" AND PermisChauffeur.Value="E";

Enfin cette troisième permet de lister les chauffeurs titulaires des permis D ou E ou bien les deux

 
Sélectionnez
SELECT NomChauffeur, PrenomChauffeur
FROM tbl_chauffeur
WHERE PermisChauffeur.Value="D" OR  PermisChauffeur.Value="E";

Pour cette dernière requête il aurait été possible d'utiliser un critère avec IN

Créé le 27 juin 2006  par Christophe Warin

Soit la table suivante :

  • NumChauffeur : NuméroAuto
  • NomChauffeur : Texte(20)
  • PrenomChauffeur : Texte(20)
  • PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées

La requête permet de lister les permis attribués

 
Sélectionnez
SELECT  DISTINCT(PermisChauffeur.Value)
FROM  tbl_chauffeur
Créé le 27 juin 2006  par Christophe Warin

Lien : Comment savoir si un champ multi-valué est vide en SQL ?
Lien : Comment compter le nombre de valeur d'un champ multi-valué en SQL?

Soit la table suivante :

  • NumChauffeur : NuméroAuto
  • NomChauffeur : Texte(20)
  • PrenomChauffeur : Texte(20)
  • PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées

Il existe 3 méthodes pour lister les Chauffeurs ne possédant aucun permis :

 
Sélectionnez
SELECT NomChauffeur, PrenomChauffeur
FROM tbl_chauffeur
WHERE PermisChauffeur.Value IS NULL;

Ou

 
Sélectionnez
SELECT NomChauffeur, PrenomChauffeur
FROM tbl_chauffeur
WHERE IsNull(PermisChauffeur.Value);

Ou encore

 
Sélectionnez
SELECT NomChauffeur, PrenomChauffeur
FROM tbl_chauffeur AS T
WHERE (SELECT Count(PermisChauffeur.Value) FROM tbl_chauffeur WHERE NumChauffeur=T.NumChauffeur)=0;
Créé le 27 juin 2006  par Christophe Warin

Lien : Comment compter le nombre de valeurs distinctes d'un champ multi-valué sur l'ensemble la table en SQL ?
Lien : Comment compter le nombre de valeur d'un champ multi-valué en SQL?

Soit la table suivante :

  • NumChauffeur : NuméroAuto
  • NomChauffeur : Texte(20)
  • PrenomChauffeur : Texte(20)
  • PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées

Cette exemple va supprimer l'ensemble des permis du chauffeur n°2

 
Sélectionnez
DELETE PermisChauffeur.Value 
FROM  tbl_chauffeur
WHERE numChauffeur=2
Créé le 27 juin 2006  par Christophe Warin

Lien : Comment supprimer une valeur d'un champs multi-valué ?
Lien : Comment supprimer toutes les valeurs d'un champs multi-valué en VBA ?
Lien : Comment supprimer une valeur d'un champs multi-valué en VBA ?

Soit la table suivante :

  • NumChauffeur : NuméroAuto
  • NomChauffeur : Texte(20)
  • PrenomChauffeur : Texte(20)
  • PermisChauffeur : Texte(1) - Liste de choix de valeurs : A;B;C;D;E - Valeurs multiples autorisées

Cette exemple va supprimer le permis D du chauffeur n°1

 
Sélectionnez
DELETE PermisChauffeur.Value
FROM tbl_chauffeur
WHERE numChauffeur=1 AND PermisChauffeur.Value="D"
Créé le 27 juin 2006  par Christophe Warin

Lien : Comment supprimer toutes les valeurs d'un champs multi-valué ?
Lien : Comment supprimer une valeur d'un champs multi-valué en VBA ?
Lien : Comment supprimer toutes les valeurs d'un champs multi-valué en VBA ?

Non, il n'est pas possible de créer une requête INSERT INTO avec dans la liste des champs un champ de type multi-valué.

Par exemple, cette requête n'est pas valide

 
Sélectionnez
INSERT INTO tbl_chauffeur (NomChauffeur,PrenomChauffeur,PermisChauffeur)
VALUES ("HEUR","Marc",(SELECT PermisChauffeur FROM Chauffeur WHERE numChauffeur=2))

Elle aurait pourtant servi à dupliquer les permis du chauffeur n°2

La seule solution est de créer l'enregistrement sans le champ multi-valué.

Créé le 27 juin 2006  par Christophe Warin

Lien : Comment créer un champ à valeurs multiples de type "Table/requête" ?
Lien : Comment créer un champ à valeurs multiples de type "Table/requête" ?

Tout comme il est impossible de créer un enregistrement en fixant le champ multi-valué, il est impossible d'ajouter une valeur à ce champ. En effet les requêtes INSERT INTO refusent cette fonctionnalité.

Solution : passer par VBA

Créé le 27 juin 2006  par Christophe Warin

Lien : Comment ajouter une valeur d'un champs multi-valué en VBA ?

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.