J'ai une table Planning dans laquelle chaque enregistrement (un
enregistrement par stagiaire et par matière suivie) a une valeur en fonction
des présences des stagiaires:
Lundi matin 1
Lundi après-midi 2
Mardi matin 4
Mardi après-midi 8
....
Vendredi après-midi 512
Par exemple : une personne fait des maths les lundi matin, mardi après-midi
et jeudi matin la valeur sera de 1+8+64=73 et du français les lundi am et
jeudi am : 2+128=130
Je veux faire une requête qui me donne un tableau avec les matières en
entête de ligne, les scéances en entête de colonnes et les noms des
stagiaires dans le tableau.
Je n'arrive pas à faire une requête qui me fasse ça directement.
Si j'utilise la fonction SWITCH dans le PIVOT, un même nom n'apparait qu'une
fois dans mon tableau. Dans l'exemple ci-dessus, la personne est dans la
colonne lundi matin, mais pas dans mardi après-midi, ni jeudi matin.
J'ai essayé de faire une requête pour chaque scéance :
TRANSFORM First(Tbl_Identite.NomIdentite) AS PremierDeNomIdentite
SELECT Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule,
Tbl_Planning.ValPlanning
FROM Tbl_Site_Formation INNER JOIN (Tbl_Matieres INNER JOIN ((Tbl_Identite
INNER JOIN Tbl_Infos_Formation ON Tbl_Identite.NumID =
Tbl_Infos_Formation.NumIdentite) INNER JOIN Tbl_Planning ON
Tbl_Infos_Formation.NumID = Tbl_Planning.IdFormation) ON Tbl_Matieres.NumID
= Tbl_Planning.IdMatiere) ON (Tbl_Site_Formation.NumID =
Tbl_Planning.IdSite) AND (Tbl_Site_Formation.NumID =
Tbl_Infos_Formation.SiteFormation)
WHERE (((fctTestPlanning([valplanning],512))=True))
GROUP BY Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule,
Tbl_Planning.ValPlanning, Tbl_Infos_Formation.NumID
PIVOT (((fctTestPlanning([valplanning],512))));
mais c'est un peu lourd et surtout, je n'arrive pas ensuite à tout
regrouper.
Si quelqu'un a une idée, je l'en remercie d'avance
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel Walsh
Salut,
Si je comprend bien, d'un seul enregistrement ayant, disons, la valuer 73, il faut faire "comme si" il y avait trois enregistrements, avec les valeurs 1, 8 et 64. Cette "explosion" ( passer de 1 enrengistrement à trois) variable ( pas toujours 3, mais dépendant des valeurs) indique qu'il faut une jointure.
J'imagine qu'on possède une table "codes":
Codes section valeur lundi matin 1 lundi PM 2 mardi AM 4 mardi PM 8 mercredi AM 16 mercredi PM 32 jeudi AM 64 jeudi PM 128 vendredi AM 256 vendredi PM 512
Et ta table "x1"
X1 qui code 103 16 101 73 102 130
Alors:
TRANSFORM LAST(Qui) SELECT Qui FROM x1 INNER JOIN codes ON MyAND(x1.code, codes.valeur) GROUP BY Qui PIVOT section
fournit:
Query11 qui jeudi AM jeudi PM lundi matin lundi PM mardi PM mercredi AM 101 101 101 101
102 102 102
103
103
On pourrait avoir toutes les sessions en ajoutant une liste IN après le pivot.
J'utilise: -------------- Public Function MyAnd(A As Long, B As Long) As Boolean MyAnd = CBool(A And B) End Function ---------------
En principe, Jet 4.0 BAND (binary and) ferait l'affaire, et le fait, mais il faut utiliser ADO. Le designer de requête utilise DAO et n'aime pas du tout BAND. Donc'j'ai passé par une fonction VBA en lieu et place.
Je ne vois pas les regroupements (GROUP) désirés, mais j'imagine que ce qui précède peut éventuellement fournir des idées pour progresser...
Vanderghast, Access MVP
"Gilbert" wrote in message news:
Bonjour,
J'ai une table Planning dans laquelle chaque enregistrement (un enregistrement par stagiaire et par matière suivie) a une valeur en fonction des présences des stagiaires: Lundi matin 1 Lundi après-midi 2 Mardi matin 4 Mardi après-midi 8 .... Vendredi après-midi 512 Par exemple : une personne fait des maths les lundi matin, mardi après-midi et jeudi matin la valeur sera de 1+8+64s et du français les lundi am et jeudi am : 2+1280
Je veux faire une requête qui me donne un tableau avec les matières en entête de ligne, les scéances en entête de colonnes et les noms des stagiaires dans le tableau.
Je n'arrive pas à faire une requête qui me fasse ça directement. Si j'utilise la fonction SWITCH dans le PIVOT, un même nom n'apparait qu'une fois dans mon tableau. Dans l'exemple ci-dessus, la personne est dans la colonne lundi matin, mais pas dans mardi après-midi, ni jeudi matin.
J'ai essayé de faire une requête pour chaque scéance : TRANSFORM First(Tbl_Identite.NomIdentite) AS PremierDeNomIdentite SELECT Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule, Tbl_Planning.ValPlanning FROM Tbl_Site_Formation INNER JOIN (Tbl_Matieres INNER JOIN ((Tbl_Identite INNER JOIN Tbl_Infos_Formation ON Tbl_Identite.NumID > Tbl_Infos_Formation.NumIdentite) INNER JOIN Tbl_Planning ON Tbl_Infos_Formation.NumID = Tbl_Planning.IdFormation) ON Tbl_Matieres.NumID = Tbl_Planning.IdMatiere) ON (Tbl_Site_Formation.NumID > Tbl_Planning.IdSite) AND (Tbl_Site_Formation.NumID > Tbl_Infos_Formation.SiteFormation) WHERE (((fctTestPlanning([valplanning],512))=True)) GROUP BY Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule, Tbl_Planning.ValPlanning, Tbl_Infos_Formation.NumID PIVOT (((fctTestPlanning([valplanning],512)))); mais c'est un peu lourd et surtout, je n'arrive pas ensuite à tout regrouper.
Si quelqu'un a une idée, je l'en remercie d'avance
Gilbert
Salut,
Si je comprend bien, d'un seul enregistrement ayant, disons, la valuer
73, il faut faire "comme si" il y avait trois enregistrements, avec les
valeurs 1, 8 et 64. Cette "explosion" ( passer de 1 enrengistrement à trois)
variable ( pas toujours 3, mais dépendant des valeurs) indique qu'il faut
une jointure.
J'imagine qu'on possède une table "codes":
Codes
section valeur
lundi matin 1
lundi PM 2
mardi AM 4
mardi PM 8
mercredi AM 16
mercredi PM 32
jeudi AM 64
jeudi PM 128
vendredi AM 256
vendredi PM 512
Et ta table "x1"
X1
qui code
103 16
101 73
102 130
Alors:
TRANSFORM LAST(Qui)
SELECT Qui
FROM x1 INNER JOIN codes
ON MyAND(x1.code, codes.valeur)
GROUP BY Qui
PIVOT section
fournit:
Query11
qui jeudi AM jeudi PM lundi matin lundi PM mardi PM mercredi AM
101 101
101
101
102
102
102
103
103
On pourrait avoir toutes les sessions en ajoutant une liste IN après le
pivot.
J'utilise:
--------------
Public Function MyAnd(A As Long, B As Long) As Boolean
MyAnd = CBool(A And B)
End Function
---------------
En principe, Jet 4.0 BAND (binary and) ferait l'affaire, et le fait,
mais il faut utiliser ADO. Le designer de requête utilise DAO et n'aime pas
du tout BAND. Donc'j'ai passé par une fonction VBA en lieu et place.
Je ne vois pas les regroupements (GROUP) désirés, mais j'imagine que ce qui
précède peut éventuellement fournir des idées pour progresser...
Vanderghast, Access MVP
"Gilbert" <ZZZZgilbertvie@tiscali.fr> wrote in message
news:eJ9gaydrEHA.3728@TK2MSFTNGP09.phx.gbl...
Bonjour,
J'ai une table Planning dans laquelle chaque enregistrement (un
enregistrement par stagiaire et par matière suivie) a une valeur en
fonction
des présences des stagiaires:
Lundi matin 1
Lundi après-midi 2
Mardi matin 4
Mardi après-midi 8
....
Vendredi après-midi 512
Par exemple : une personne fait des maths les lundi matin, mardi
après-midi
et jeudi matin la valeur sera de 1+8+64s et du français les lundi am et
jeudi am : 2+1280
Je veux faire une requête qui me donne un tableau avec les matières en
entête de ligne, les scéances en entête de colonnes et les noms des
stagiaires dans le tableau.
Je n'arrive pas à faire une requête qui me fasse ça directement.
Si j'utilise la fonction SWITCH dans le PIVOT, un même nom n'apparait
qu'une
fois dans mon tableau. Dans l'exemple ci-dessus, la personne est dans la
colonne lundi matin, mais pas dans mardi après-midi, ni jeudi matin.
J'ai essayé de faire une requête pour chaque scéance :
TRANSFORM First(Tbl_Identite.NomIdentite) AS PremierDeNomIdentite
SELECT Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule,
Tbl_Planning.ValPlanning
FROM Tbl_Site_Formation INNER JOIN (Tbl_Matieres INNER JOIN ((Tbl_Identite
INNER JOIN Tbl_Infos_Formation ON Tbl_Identite.NumID > Tbl_Infos_Formation.NumIdentite) INNER JOIN Tbl_Planning ON
Tbl_Infos_Formation.NumID = Tbl_Planning.IdFormation) ON
Tbl_Matieres.NumID
= Tbl_Planning.IdMatiere) ON (Tbl_Site_Formation.NumID > Tbl_Planning.IdSite) AND (Tbl_Site_Formation.NumID > Tbl_Infos_Formation.SiteFormation)
WHERE (((fctTestPlanning([valplanning],512))=True))
GROUP BY Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule,
Tbl_Planning.ValPlanning, Tbl_Infos_Formation.NumID
PIVOT (((fctTestPlanning([valplanning],512))));
mais c'est un peu lourd et surtout, je n'arrive pas ensuite à tout
regrouper.
Si quelqu'un a une idée, je l'en remercie d'avance
Si je comprend bien, d'un seul enregistrement ayant, disons, la valuer 73, il faut faire "comme si" il y avait trois enregistrements, avec les valeurs 1, 8 et 64. Cette "explosion" ( passer de 1 enrengistrement à trois) variable ( pas toujours 3, mais dépendant des valeurs) indique qu'il faut une jointure.
J'imagine qu'on possède une table "codes":
Codes section valeur lundi matin 1 lundi PM 2 mardi AM 4 mardi PM 8 mercredi AM 16 mercredi PM 32 jeudi AM 64 jeudi PM 128 vendredi AM 256 vendredi PM 512
Et ta table "x1"
X1 qui code 103 16 101 73 102 130
Alors:
TRANSFORM LAST(Qui) SELECT Qui FROM x1 INNER JOIN codes ON MyAND(x1.code, codes.valeur) GROUP BY Qui PIVOT section
fournit:
Query11 qui jeudi AM jeudi PM lundi matin lundi PM mardi PM mercredi AM 101 101 101 101
102 102 102
103
103
On pourrait avoir toutes les sessions en ajoutant une liste IN après le pivot.
J'utilise: -------------- Public Function MyAnd(A As Long, B As Long) As Boolean MyAnd = CBool(A And B) End Function ---------------
En principe, Jet 4.0 BAND (binary and) ferait l'affaire, et le fait, mais il faut utiliser ADO. Le designer de requête utilise DAO et n'aime pas du tout BAND. Donc'j'ai passé par une fonction VBA en lieu et place.
Je ne vois pas les regroupements (GROUP) désirés, mais j'imagine que ce qui précède peut éventuellement fournir des idées pour progresser...
Vanderghast, Access MVP
"Gilbert" wrote in message news:
Bonjour,
J'ai une table Planning dans laquelle chaque enregistrement (un enregistrement par stagiaire et par matière suivie) a une valeur en fonction des présences des stagiaires: Lundi matin 1 Lundi après-midi 2 Mardi matin 4 Mardi après-midi 8 .... Vendredi après-midi 512 Par exemple : une personne fait des maths les lundi matin, mardi après-midi et jeudi matin la valeur sera de 1+8+64s et du français les lundi am et jeudi am : 2+1280
Je veux faire une requête qui me donne un tableau avec les matières en entête de ligne, les scéances en entête de colonnes et les noms des stagiaires dans le tableau.
Je n'arrive pas à faire une requête qui me fasse ça directement. Si j'utilise la fonction SWITCH dans le PIVOT, un même nom n'apparait qu'une fois dans mon tableau. Dans l'exemple ci-dessus, la personne est dans la colonne lundi matin, mais pas dans mardi après-midi, ni jeudi matin.
J'ai essayé de faire une requête pour chaque scéance : TRANSFORM First(Tbl_Identite.NomIdentite) AS PremierDeNomIdentite SELECT Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule, Tbl_Planning.ValPlanning FROM Tbl_Site_Formation INNER JOIN (Tbl_Matieres INNER JOIN ((Tbl_Identite INNER JOIN Tbl_Infos_Formation ON Tbl_Identite.NumID > Tbl_Infos_Formation.NumIdentite) INNER JOIN Tbl_Planning ON Tbl_Infos_Formation.NumID = Tbl_Planning.IdFormation) ON Tbl_Matieres.NumID = Tbl_Planning.IdMatiere) ON (Tbl_Site_Formation.NumID > Tbl_Planning.IdSite) AND (Tbl_Site_Formation.NumID > Tbl_Infos_Formation.SiteFormation) WHERE (((fctTestPlanning([valplanning],512))=True)) GROUP BY Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule, Tbl_Planning.ValPlanning, Tbl_Infos_Formation.NumID PIVOT (((fctTestPlanning([valplanning],512)))); mais c'est un peu lourd et surtout, je n'arrive pas ensuite à tout regrouper.
Si quelqu'un a une idée, je l'en remercie d'avance
Gilbert
Gilbert
Merci beaucoup, je vais tester dès que possible.
-- Gilbert
"Michel Walsh" a écrit dans le message de news:
Salut,
Si je comprend bien, d'un seul enregistrement ayant, disons, la valuer 73, il faut faire "comme si" il y avait trois enregistrements, avec les valeurs 1, 8 et 64. Cette "explosion" ( passer de 1 enrengistrement à trois) variable ( pas toujours 3, mais dépendant des valeurs) indique qu'il faut une jointure.
J'imagine qu'on possède une table "codes":
Codes section valeur lundi matin 1 lundi PM 2 mardi AM 4 mardi PM 8 mercredi AM 16 mercredi PM 32 jeudi AM 64 jeudi PM 128 vendredi AM 256 vendredi PM 512
Et ta table "x1"
X1 qui code 103 16 101 73 102 130
Alors:
TRANSFORM LAST(Qui) SELECT Qui FROM x1 INNER JOIN codes ON MyAND(x1.code, codes.valeur) GROUP BY Qui PIVOT section
fournit:
Query11 qui jeudi AM jeudi PM lundi matin lundi PM mardi PM mercredi AM 101 101 101 101
102 102 102
103
103
On pourrait avoir toutes les sessions en ajoutant une liste IN après le pivot.
J'utilise: -------------- Public Function MyAnd(A As Long, B As Long) As Boolean MyAnd = CBool(A And B) End Function ---------------
En principe, Jet 4.0 BAND (binary and) ferait l'affaire, et le fait, mais il faut utiliser ADO. Le designer de requête utilise DAO et n'aime pas du tout BAND. Donc'j'ai passé par une fonction VBA en lieu et place.
Je ne vois pas les regroupements (GROUP) désirés, mais j'imagine que ce qui précède peut éventuellement fournir des idées pour progresser...
Vanderghast, Access MVP
"Gilbert" wrote in message news:
Bonjour,
J'ai une table Planning dans laquelle chaque enregistrement (un enregistrement par stagiaire et par matière suivie) a une valeur en fonction des présences des stagiaires: Lundi matin 1 Lundi après-midi 2 Mardi matin 4 Mardi après-midi 8 .... Vendredi après-midi 512 Par exemple : une personne fait des maths les lundi matin, mardi après-midi et jeudi matin la valeur sera de 1+8+64s et du français les lundi am et jeudi am : 2+1280
Je veux faire une requête qui me donne un tableau avec les matières en entête de ligne, les scéances en entête de colonnes et les noms des stagiaires dans le tableau.
Je n'arrive pas à faire une requête qui me fasse ça directement. Si j'utilise la fonction SWITCH dans le PIVOT, un même nom n'apparait qu'une fois dans mon tableau. Dans l'exemple ci-dessus, la personne est dans la colonne lundi matin, mais pas dans mardi après-midi, ni jeudi matin.
J'ai essayé de faire une requête pour chaque scéance : TRANSFORM First(Tbl_Identite.NomIdentite) AS PremierDeNomIdentite SELECT Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule, Tbl_Planning.ValPlanning FROM Tbl_Site_Formation INNER JOIN (Tbl_Matieres INNER JOIN ((Tbl_Identite INNER JOIN Tbl_Infos_Formation ON Tbl_Identite.NumID >> Tbl_Infos_Formation.NumIdentite) INNER JOIN Tbl_Planning ON Tbl_Infos_Formation.NumID = Tbl_Planning.IdFormation) ON Tbl_Matieres.NumID = Tbl_Planning.IdMatiere) ON (Tbl_Site_Formation.NumID >> Tbl_Planning.IdSite) AND (Tbl_Site_Formation.NumID >> Tbl_Infos_Formation.SiteFormation) WHERE (((fctTestPlanning([valplanning],512))=True)) GROUP BY Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule, Tbl_Planning.ValPlanning, Tbl_Infos_Formation.NumID PIVOT (((fctTestPlanning([valplanning],512)))); mais c'est un peu lourd et surtout, je n'arrive pas ensuite à tout regrouper.
Si quelqu'un a une idée, je l'en remercie d'avance
Gilbert
Merci beaucoup, je vais tester dès que possible.
--
Gilbert
"Michel Walsh" <vanderghast@VirusAreFunnierThanSpam> a écrit dans le message
de news: Oegd5J1uEHA.1288@TK2MSFTNGP11.phx.gbl...
Salut,
Si je comprend bien, d'un seul enregistrement ayant, disons, la valuer
73, il faut faire "comme si" il y avait trois enregistrements, avec les
valeurs 1, 8 et 64. Cette "explosion" ( passer de 1 enrengistrement à
trois) variable ( pas toujours 3, mais dépendant des valeurs) indique
qu'il faut une jointure.
J'imagine qu'on possède une table "codes":
Codes
section valeur
lundi matin 1
lundi PM 2
mardi AM 4
mardi PM 8
mercredi AM 16
mercredi PM 32
jeudi AM 64
jeudi PM 128
vendredi AM 256
vendredi PM 512
Et ta table "x1"
X1
qui code
103 16
101 73
102 130
Alors:
TRANSFORM LAST(Qui)
SELECT Qui
FROM x1 INNER JOIN codes
ON MyAND(x1.code, codes.valeur)
GROUP BY Qui
PIVOT section
fournit:
Query11
qui jeudi AM jeudi PM lundi matin lundi PM mardi PM mercredi AM
101 101
101
101
102
102
102
103
103
On pourrait avoir toutes les sessions en ajoutant une liste IN après le
pivot.
J'utilise:
--------------
Public Function MyAnd(A As Long, B As Long) As Boolean
MyAnd = CBool(A And B)
End Function
---------------
En principe, Jet 4.0 BAND (binary and) ferait l'affaire, et le fait,
mais il faut utiliser ADO. Le designer de requête utilise DAO et n'aime
pas du tout BAND. Donc'j'ai passé par une fonction VBA en lieu et place.
Je ne vois pas les regroupements (GROUP) désirés, mais j'imagine que ce
qui précède peut éventuellement fournir des idées pour progresser...
Vanderghast, Access MVP
"Gilbert" <ZZZZgilbertvie@tiscali.fr> wrote in message
news:eJ9gaydrEHA.3728@TK2MSFTNGP09.phx.gbl...
Bonjour,
J'ai une table Planning dans laquelle chaque enregistrement (un
enregistrement par stagiaire et par matière suivie) a une valeur en
fonction
des présences des stagiaires:
Lundi matin 1
Lundi après-midi 2
Mardi matin 4
Mardi après-midi 8
....
Vendredi après-midi 512
Par exemple : une personne fait des maths les lundi matin, mardi
après-midi
et jeudi matin la valeur sera de 1+8+64s et du français les lundi am et
jeudi am : 2+1280
Je veux faire une requête qui me donne un tableau avec les matières en
entête de ligne, les scéances en entête de colonnes et les noms des
stagiaires dans le tableau.
Je n'arrive pas à faire une requête qui me fasse ça directement.
Si j'utilise la fonction SWITCH dans le PIVOT, un même nom n'apparait
qu'une
fois dans mon tableau. Dans l'exemple ci-dessus, la personne est dans la
colonne lundi matin, mais pas dans mardi après-midi, ni jeudi matin.
J'ai essayé de faire une requête pour chaque scéance :
TRANSFORM First(Tbl_Identite.NomIdentite) AS PremierDeNomIdentite
SELECT Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule,
Tbl_Planning.ValPlanning
FROM Tbl_Site_Formation INNER JOIN (Tbl_Matieres INNER JOIN
((Tbl_Identite
INNER JOIN Tbl_Infos_Formation ON Tbl_Identite.NumID >> Tbl_Infos_Formation.NumIdentite) INNER JOIN Tbl_Planning ON
Tbl_Infos_Formation.NumID = Tbl_Planning.IdFormation) ON
Tbl_Matieres.NumID
= Tbl_Planning.IdMatiere) ON (Tbl_Site_Formation.NumID >> Tbl_Planning.IdSite) AND (Tbl_Site_Formation.NumID >> Tbl_Infos_Formation.SiteFormation)
WHERE (((fctTestPlanning([valplanning],512))=True))
GROUP BY Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule,
Tbl_Planning.ValPlanning, Tbl_Infos_Formation.NumID
PIVOT (((fctTestPlanning([valplanning],512))));
mais c'est un peu lourd et surtout, je n'arrive pas ensuite à tout
regrouper.
Si quelqu'un a une idée, je l'en remercie d'avance
Si je comprend bien, d'un seul enregistrement ayant, disons, la valuer 73, il faut faire "comme si" il y avait trois enregistrements, avec les valeurs 1, 8 et 64. Cette "explosion" ( passer de 1 enrengistrement à trois) variable ( pas toujours 3, mais dépendant des valeurs) indique qu'il faut une jointure.
J'imagine qu'on possède une table "codes":
Codes section valeur lundi matin 1 lundi PM 2 mardi AM 4 mardi PM 8 mercredi AM 16 mercredi PM 32 jeudi AM 64 jeudi PM 128 vendredi AM 256 vendredi PM 512
Et ta table "x1"
X1 qui code 103 16 101 73 102 130
Alors:
TRANSFORM LAST(Qui) SELECT Qui FROM x1 INNER JOIN codes ON MyAND(x1.code, codes.valeur) GROUP BY Qui PIVOT section
fournit:
Query11 qui jeudi AM jeudi PM lundi matin lundi PM mardi PM mercredi AM 101 101 101 101
102 102 102
103
103
On pourrait avoir toutes les sessions en ajoutant une liste IN après le pivot.
J'utilise: -------------- Public Function MyAnd(A As Long, B As Long) As Boolean MyAnd = CBool(A And B) End Function ---------------
En principe, Jet 4.0 BAND (binary and) ferait l'affaire, et le fait, mais il faut utiliser ADO. Le designer de requête utilise DAO et n'aime pas du tout BAND. Donc'j'ai passé par une fonction VBA en lieu et place.
Je ne vois pas les regroupements (GROUP) désirés, mais j'imagine que ce qui précède peut éventuellement fournir des idées pour progresser...
Vanderghast, Access MVP
"Gilbert" wrote in message news:
Bonjour,
J'ai une table Planning dans laquelle chaque enregistrement (un enregistrement par stagiaire et par matière suivie) a une valeur en fonction des présences des stagiaires: Lundi matin 1 Lundi après-midi 2 Mardi matin 4 Mardi après-midi 8 .... Vendredi après-midi 512 Par exemple : une personne fait des maths les lundi matin, mardi après-midi et jeudi matin la valeur sera de 1+8+64s et du français les lundi am et jeudi am : 2+1280
Je veux faire une requête qui me donne un tableau avec les matières en entête de ligne, les scéances en entête de colonnes et les noms des stagiaires dans le tableau.
Je n'arrive pas à faire une requête qui me fasse ça directement. Si j'utilise la fonction SWITCH dans le PIVOT, un même nom n'apparait qu'une fois dans mon tableau. Dans l'exemple ci-dessus, la personne est dans la colonne lundi matin, mais pas dans mardi après-midi, ni jeudi matin.
J'ai essayé de faire une requête pour chaque scéance : TRANSFORM First(Tbl_Identite.NomIdentite) AS PremierDeNomIdentite SELECT Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule, Tbl_Planning.ValPlanning FROM Tbl_Site_Formation INNER JOIN (Tbl_Matieres INNER JOIN ((Tbl_Identite INNER JOIN Tbl_Infos_Formation ON Tbl_Identite.NumID >> Tbl_Infos_Formation.NumIdentite) INNER JOIN Tbl_Planning ON Tbl_Infos_Formation.NumID = Tbl_Planning.IdFormation) ON Tbl_Matieres.NumID = Tbl_Planning.IdMatiere) ON (Tbl_Site_Formation.NumID >> Tbl_Planning.IdSite) AND (Tbl_Site_Formation.NumID >> Tbl_Infos_Formation.SiteFormation) WHERE (((fctTestPlanning([valplanning],512))=True)) GROUP BY Tbl_Site_Formation.Intitule, Tbl_Matieres.Intitule, Tbl_Planning.ValPlanning, Tbl_Infos_Formation.NumID PIVOT (((fctTestPlanning([valplanning],512)))); mais c'est un peu lourd et surtout, je n'arrive pas ensuite à tout regrouper.
Si quelqu'un a une idée, je l'en remercie d'avance