FAQ access 2007
FAQ access 2007Consultez toutes les FAQ
Nombre d'auteurs : 1, nombre de questions : 75, dernière mise à jour : 15 juin 2021
- A quoi servent les champs multi-valués ?
- Combien de valeurs accepte un champ multi-valué ?
- Comment afficher les libellés à la place des valeurs dans un champ multi-valué ?
- Est-il possible d'utiliser les champs multi-valués avec un grand volume de données ?
- Où trouver des ressources sur les champs multi-valués
- 3.1. SQL (9)
- 3.2. VBA (9)
Les champs multi-valués permettent de stocker plusieurs valeurs dans un seul champ. Ils remplacent ainsi les tables utilisées lors des relations plusieurs à plusieurs.
Prenons l'exemple d'une table de chauffeur. Chacun d'eux possède un ou plusieurs permis de conduire.
Avant nous aurions eu cette structure :
Chauffeur(NumChauffeur,NomChauffeur,PrenomChauffeur)
Detenir(NumChauffeur,Permis)
Avec la table Detenir qui contenait :
1,C
1,B
2,C
2,E
3,B
Maintenant nous avons :
Chauffeur(NumChauffeur,NomChauffeur,PrenomChauffeur,Permis)
Avec la table Chauffeur qui contient
1,NORD,Paul,C;B
2,FERT,Lucy,C;E
Lien : Où trouver des ressources sur les champs multi-valués
Les champs multi-valués étant représentés comme des sous-recordset, le nombre de valeurs ne semble donc pas limité. En tout cas, je suis parvenu à y insérer plus de 100000 valeurs sans erreurs. Attention toutefois, il est évident qu'un grand nombre de valeurs fera chuter rapidement les performances.
Dans une requête, un champ multi-valué affiche uniquement la valeur de la colonne liée de sa zone de liste.
Exemple :
tbl_eleve(IDEleve,Nom,Prenom)
tbl_classe(IDClasse,nomClasse,Eleves)
Où Eleves est un champ multi-valué dont la source de la zone de liste est :
SELECT
IDEleves, Nom,Prenom FROM
tbl_eleve
En toute logique, une requête basée sur la table tbl_classe affichera les numéros des élèves et non leur nom. Pour parer ce phénomène, il faut utiliser une jointure entre les deux tables.
SELECT
tbl_classe.NomClasse, tbl_eleve.Nom, tbl_eleve.Prenom, tbl_classe.Annee
FROM
tbl_classe
INNER
JOIN
tbl_eleve
ON
tbl_classe.Eleves.Value
=
tbl_eleve.ID;
Un test de performance présenté dans le tutoriel de Christophe Warin indique que lorsque le volume de données atteint les 100000 lignes, les performances sont médiocres. Le temps de traitement est environ 10 fois plus long qu'avec une relation 1-N.
Toutefois, impossible de se limiter à un tel test sur si peu d'enregistrements. Aussi, sur un jeu beaucoup plus vaste (200 classes pour 10000 élèves et en moyenne 10 élèves par classe), il s'avère que l'utilisation des champs multi-valués devient réellement pénalisante. Pour preuve, un seul appel de la requête R03 est exécuté en 0.8 seconde, alors que l'appel de R02 demande plus de 10 secondes.
www.developpez.com vous propose :
A la découverte d'Access 2007 : les champs multi-valués
Découvrez et jugez une nouveauté importante de la nouvelle version annoncée de Microsoft Access V12 (Access 2007). Cet article est aussi bien destiné au développeur débutant souhaitant se familiariser avec les possibilités d'Access qu'au développeur professionnel désirant se faire son propre opinon sur le nouveau moteur de base de données Access.
[Access 2007 - Nouveautés] Les champs multi-valués
Un débat sur les champs multi-valués. Venez-y vous exprimer et donner votre avis et vos conseils