Bonjour.
Access ne peut pas deviner de l'information qui n'est pas là ... donc il faut qu'elle y soit.
Pour illustrer cela je vais supposer que tu as une source de données du type :
- clefPersonne
- ClefFormation
- TempsFormation
La 1ère solution est la plus "brutale", elle consiste à créer un produit croisé entre la table des personnes et la table des formations.
select tblPersonn.Clef as ClefPersonne, tblFormation.Clef as ClefFormation, 0 as TempsFormation form tblPersonne, tblFormation
une fois cela fait tu peux ajouter le résultat de ta requête à ta source de données (par ajout dans une table temporaire ou requête Union).
On peut limiter le nombre d'enregistrement généré en n'ajoutant que ceux qui sont manquants dans la source actuelle.
Une méthode légèrement plus subtile si avoir une ligne et colonne Vide n'est pas un problème est de faire 2 requêtes
select tblPersonn.Clef as ClefPersonne, null as ClefFormation, 0 as TempsFormation form tblPersonne, tblFormation
select null as ClefPersonne, tblFormation.Clef as ClefFormation, 0 as TempsFormation form tblPersonne, tblFormation
une fois cela fait tu peux ajouter le résultat de tes requêtes à ta source de données (par ajout dans une table temporaire ou requête Union).
Cela permet de diminuer le nombre d'enregistrements générés artificiellement.
Enfin une troisième méthode est d'utiliser le produit croisé comme requête maitresse et d'aller pécher l'information voulue dans la source de données.
rPesronneFormation :
select tblPersonn.Clef as ClefPersonne, tblFormation.Clef as ClefFormation form tblPersonne, tblFormation
puis de faire un requête qui va relier rPersonneFormation à tes données avec une jointure du type tout ceux de la 1ère table et seulement ceux de la 2nde table.
Quand on fait un produit croisé, il faut faire attention à taille de ta BD. Une BD Access ne peut pas dépasser 2 Go et Access fait des choses étranges quand tu t'approches de cette limite.
A+
Partager