[Access] Requêtes : absence d'enregistrement

Résolu/Fermé
Stagy - 30 juin 2008 à 12:15
 Stagy - 30 juin 2008 à 17:10
Bonjour à tous,

je dispose d'une table recensant, pour chaque employé, un nombre de jours de congés accordés par année.
J'ai donc quatre champs dans cette table : N° employé, année, type de congés (5 semaines, maladie...), et nombre de jours de ce congé sur cette année.

Aussi, pour connaitre le nombre de congés total d'un employé, il s'agit de faire la somme de l'ensemble de ses congés sur une année, cela peut donc correspondre à plusieurs enregistrements s'il ya plusieurs types de congés pris par cet employé au cours de cette année.

Dans ma requête finale, je fais tout d'abord une relation avec une autre table recensant les employés exhaustivement, puis je cherche à obtenir, pour une année particulière, la liste de tous les employés ainsi et la somme du nombre de jours de congés qu'ils ont pour cette année.

S'il n'ya pas d'enregistrements dans la table des congés pour l'employé n°23 et l'année 2007, je veux en déduire que l'employé 23 a 0 jours de congé sur cette année.
Le problème est que dans ma requête, en faisant une sélection sur l'année 2007, il ne me reste plus à la fin que les enregistrements contenant dans le champ année, le nombre 2007. L'employé 23, lui, n'a pas d'enregistrements pour 2007 et n'apparait pas, ce qui est dommage : j'aurais en effet voulu qu'il apparaisse comme enregistrement (23,2007,0), pour zéro jours de congé.

J'ai pensé à la fonction nz, mais elle ne marche que si un champ particulier est null, pas si l'enregistrement n'existe pas dans la table.

Que faire pour traiter une absence d'enregistrement dans une table ?

merci d'avance,
A voir également:

1 réponse

LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
30 juin 2008 à 14:34
Tu conserves ton Nz(JoursCongé;0) mais tu dois modifier la jointure entre les tables (Double clic sur le trait figurant cette relation), et choisir l'option "Afficher tous les enregistrements de la table Employés..."

Normalement ça marche tout seul.
1
Coucou Latelygeek,

encore une fois je bénéficie de ton aide, t'es vraiment sympa ;)

En effet, j'y ai pas mal réfléchi cet après-midi à ce problème en bidouillant un peu dans les requêtes...une solution est de faire une requête sur la table générale des congés pour une seule année (par exemple 2007), puis de modifier la nature de la relation liant la table des emloyés à cette table afin d'inclure tous les employés, même ceux n'ayant pas de congés et qui ne sont donc pas recensés dans la table des congés (comme l'employé 23)...

Ensuite, un petit appel à nz pour remplacer les champs "nombre de jours de congés" qui sont à null, par 0, et enfin, une petite somme sur ce champ censé désormais ne contenir que des nombres.

Ca me parait toujours un peu tordu à vue d'oeil comme solution (on passe par trois requetes tout de même) mais ça marche et ça m'apporte la flexibilité attendue lors de l'enregistrement de données.

Je vois donc qu'on a pensé à la même idée LatelyGeek...en tout cas merci de t'être intéressé à mon post !

Décidément, dès que ce stage est fini, j'abandonne le travail sur des outils microsoft, ça me prend trop la tête Access 2003...et toutes les erreurs de conception de l'outil que l'on peut y trouver.
0