OVH Cloud OVH Cloud

Requête access : besoin d'aide !

3 réponses
Avatar
poivreblanc
Bonjour à tous,

Je me creuse la tête depuis une journée sur la rédaction d'une requête
access et j'espère qu'une âme charitable pourra m'aider. Voilà la
structure de la table (en prenant la métaphore des RH puisqu'elle
semble être répandue) en colonne :

Mois / Employé / Montant du bonus mensuel

Mois : de 1 à 12
Employé : nom
Montant : bonus versé chaque mois à l'employé
Attention : tous les employés n'ont pas droit à un bonus chaque mois.
Certaines lignes sont donc inexistantes certains mois.

Je souhaite avoir une requête qui m'affiche en colonne :

Employé / Bonus sur mois 1 / Bonus sur Mois 2 / Bonus sur Mois 3 / ...

Je parviens à écrire une rêquête qui me donne tout ca, mais uniquement
pour les employés qui ont un bonus chaque mois. Les autres
n'apparaissent pas alors que je voudrais des cases vides pour certains
mois si l'info n'existe pas en ligne dans la table. Meme en utilisant
une jointure 2 (relation 2 sur le nom de l'employé), ca ne marche pas
...

Quelqu'un aurait-il une idée pour me sauver ?

Merci d'avance !!
PoivreBlanc

3 réponses

Avatar
Fred
Peut-être cette solution :
Pas très élégant, mais fonctionnel: tu crées une table "Calendrier" avec une
date pour chaque jour, tu remplis une dizaine d'années d'avance et tu
utilises cette table par exemple dans une requête analyse croisée. Il ne
manquera donc aucune colonne si ces colonnes sont des dates ou des groupes
de dates (semaines, mois années).
Dans une requête sélection, pareil, toutes les lignes apparaissent même si
elles sont vides.

Hope this help

Fred


"Poivre Blanc" a écrit dans le message de
news:
Bonjour à tous,

Je me creuse la tête depuis une journée sur la rédaction d'une requête
access et j'espère qu'une âme charitable pourra m'aider. Voilà la
structure de la table (en prenant la métaphore des RH puisqu'elle
semble être répandue) en colonne :

Mois / Employé / Montant du bonus mensuel

Mois : de 1 à 12
Employé : nom
Montant : bonus versé chaque mois à l'employé
Attention : tous les employés n'ont pas droit à un bonus chaque mois.
Certaines lignes sont donc inexistantes certains mois.

Je souhaite avoir une requête qui m'affiche en colonne :

Employé / Bonus sur mois 1 / Bonus sur Mois 2 / Bonus sur Mois 3 / ...

Je parviens à écrire une rêquête qui me donne tout ca, mais uniquement
pour les employés qui ont un bonus chaque mois. Les autres
n'apparaissent pas alors que je voudrais des cases vides pour certains
mois si l'info n'existe pas en ligne dans la table. Meme en utilisant
une jointure 2 (relation 2 sur le nom de l'employé), ca ne marche pas
...

Quelqu'un aurait-il une idée pour me sauver ?

Merci d'avance !!
PoivreBlanc


Avatar
Fred
C'est plus élégant, je le concède !

Fred
"3stone" a écrit dans le message de
news:
Salut,

Poivre Blanc
Voilà la structure de la table (en prenant la métaphore des RH
puisqu'elle semble être répandue) en colonne :

Mois / Employé / Montant du bonus mensuel

Mois : de 1 à 12
Employé : nom
Montant : bonus versé chaque mois à l'employé
Attention : tous les employés n'ont pas droit à un bonus chaque mois.
Certaines lignes sont donc inexistantes certains mois.

Je souhaite avoir une requête qui m'affiche en colonne :
Employé / Bonus sur mois 1 / Bonus sur Mois 2 / Bonus sur Mois 3 / ...



Crée une requête d'analyse croisée basée sur ta table,
avec l'assistant "Assistant requête analyse croisée"... ;-)

Nom de la table = T_BonusMensuel
<CS> = clic sur suivant ;-)

- Choix de la table : "T_BonusMensuel" <CS>
- champ en-têtes de ligne : Employé <CS>
- champ en-têtes de colonne : Mois <CS>
- calcul à chaque intersection : Bonus
Fonction : Somme <CS>
- Terminer...

-Remettre la requête en mode édition, clique dans la zone
grise à coté de la table et demande les propriétés...
Dans la seconde ligne, "en-têtes de colonnes", tu mets:
1;2;3;4;5;6..... ;12 pour être sûr que tous les mois soient affichés.

En mode SQL cela donnera plus ou moins...

TRANSFORM Sum(T_BonusMensuel.Bonus) AS [La valeur]
SELECT T_BonusMensuel.Employé, Sum(T_BonusMensuel.Bonus) AS [Total de
Bonus]

FROM T_BonusMensuel
GROUP BY T_BonusMensuel.Employé
PIVOT T_BonusMensuel.Mois IN(1,2,3,4,5,6,7,8,9,10,11,12);



Ok ?

--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------














Avatar
littleteam
Regarde au niveau de la jointure entre la table employé et ta table bonus.

tu peux faire un " LEFT JOIN" :
SELECT
FROM EMPLOYE LEFT JOIN BONUS ON EMPLOYE.CODE_EMPLOYE= BONUS.CODE_EMPLOYE;

cela te donnera tous les employés même ceux qui n'ont pas eu de bonus.



"Poivre Blanc" a écrit dans le message de news:

Bonjour à tous,

Je me creuse la tête depuis une journée sur la rédaction d'une requête
access et j'espère qu'une âme charitable pourra m'aider. Voilà la
structure de la table (en prenant la métaphore des RH puisqu'elle
semble être répandue) en colonne :

Mois / Employé / Montant du bonus mensuel

Mois : de 1 à 12
Employé : nom
Montant : bonus versé chaque mois à l'employé
Attention : tous les employés n'ont pas droit à un bonus chaque mois.
Certaines lignes sont donc inexistantes certains mois.

Je souhaite avoir une requête qui m'affiche en colonne :

Employé / Bonus sur mois 1 / Bonus sur Mois 2 / Bonus sur Mois 3 / ...

Je parviens à écrire une rêquête qui me donne tout ca, mais uniquement
pour les employés qui ont un bonus chaque mois. Les autres
n'apparaissent pas alors que je voudrais des cases vides pour certains
mois si l'info n'existe pas en ligne dans la table. Meme en utilisant
une jointure 2 (relation 2 sur le nom de l'employé), ca ne marche pas
...

Quelqu'un aurait-il une idée pour me sauver ?

Merci d'avance !!
PoivreBlanc