OVH Cloud OVH Cloud

Difficile à résoudre

7 réponses
Avatar
Jérôme
Bonsoir à tous,

voila mon souci :

J'ai une base de données qui gère les formations du personnel, soit trois
tables liées, Empoyé, EmployéFormation et Formation avec les liaisons qui
vont bien.

La table formation contient.

RefFormation (N° Auto)
Domaine
Libélé
Date
Avis du formateur
Date de validité


Je voudrai pour chaque personne qui me sorte la derniere formation en date
dans chaque domaine car mon chef déteste access et veut que j'utilise le bon
fichier nationnale excel.

Exemple de la requete :
Moi Electricité B2V 02/02/2001 Favorable 02/02/2004
Moi Electricité B2V, BR 02/05/2003 Favorable 02/05/2006
Moi Vapeur !!!! 06/04/2003 Favorable 06/04/2006
Moi Turbine Makila 22/06/2003 - -
Paul ....................................
Jacques ............

Je voudrais dans ce cas qu'il me sorte que la deuxieme lignes pour le
domaine Electricité vu que c'est la dernière que j'ai effectué.

Je vois pas vraiment comment faire et je suis sur que c'est du déjà fait.
J'avais qu'en meme pensé d'utilisé 2 recordset qui pointe sur 1
enregistrement de décalage et de vérifier s'il concorde et dans ce cas
prendre le moins ancien.
Attention pour certaine personne, elles ont plus de deux formations dans le
même domaine.


Merci d'avance de m'éclairer.
Bonne nuit, Jérôme.

7 réponses

Avatar
Michel Gesnot
Bonjour Jerôme,

Vous avez besoin de 3 tables :
Employes (E)
Formation Sessions (FS)
Formation Catalogue (F)

Dans chacune, un NumAuto comme cle primaire.
Dans FS, 2 pointeurs (entiers longs) sur les tables E et
F, et les relations 1 (E / F) ==> + (FS).

La table FS ne doit pas reprendre le libelle qui existe
dans F.
La date de validite de la formation peut probablement etre
calculee a partir de la date de la session de formation et
d'une duree de validite enregistree dans la table F.
Avantage : si les contraintes de valadite changent, les la
nouvelle date de validite est reclaculee de maniere
transparente. Et surtout, pas de redondance des
informations.

Pour repondre a votre souci specifique : une requete
selection avec un regroupement et pour la date de
formation, le critere Dernier.
Si vous triez les dates par ordre decroissant, vous aurez
pour chaque individu la derniere formation effectuee
toutes formations confondues.

Vous pouvez raffiner en ajoutant un fichier "catalogue des
sessions de formation" pour reprendre plus specifiquement
le nom du formateur, la matiere, la date (qui ne devrait
alors plus etre reprise dans FS), le local etc.

Bon travail.
M. Gesnot




Michel Gesnot

-----Message d'origine-----
Bonsoir à tous,

voila mon souci :

J'ai une base de données qui gère les formations du
personnel, soit trois

tables liées, Empoyé, EmployéFormation et Formation avec
les liaisons qui

vont bien.

La table formation contient.

RefFormation (N° Auto)
Domaine
Libélé
Date
Avis du formateur
Date de validité


Je voudrai pour chaque personne qui me sorte la derniere
formation en date

dans chaque domaine car mon chef déteste access et veut
que j'utilise le bon

fichier nationnale excel.

Exemple de la requete :
Moi Electricité B2V 02/02/2001
Favorable 02/02/2004

Moi Electricité B2V, BR 02/05/2003 Favorable
02/05/2006

Moi Vapeur !!!! 06/04/2003
Favorable 06/04/2006

Moi Turbine Makila 22/06/2003 -
-

Paul ....................................
Jacques ............

Je voudrais dans ce cas qu'il me sorte que la deuxieme
lignes pour le

domaine Electricité vu que c'est la dernière que j'ai
effectué.


Je vois pas vraiment comment faire et je suis sur que
c'est du déjà fait.

J'avais qu'en meme pensé d'utilisé 2 recordset qui pointe
sur 1

enregistrement de décalage et de vérifier s'il concorde
et dans ce cas

prendre le moins ancien.
Attention pour certaine personne, elles ont plus de deux
formations dans le

même domaine.


Merci d'avance de m'éclairer.
Bonne nuit, Jérôme.



.



Avatar
Jérôme
Bonjour Michel,

Je ne comprend pas pourquoi : "La table FS ne doit pas reprendre le libelle
qui existe
dans F"

Table E Table EF Table F

RefE 1-----Inf RefE ----1 RefF
Nom RefF Inf--/ Domaine
Prénom Date
..... .....

Voila mes tables avec les liaison et je ne vois pas pourquoi?
Dans tous les livres que j'ai (euh 5 sur access) ils disent de faire comme
cela.

Pour la requete avec le regroupement DERNIER cela ne fonctionne pas, j'avais
déjà essayé et j'ai retenté mes sans succès.

Pour la date de validité, il n'y a pas de problème, elle ne se calcule pas
encore toute seule mais cela ne serait tarder.

Merci pour votre réponse. J'y réflechis toujours mais je n'ai pas encore eu
de lumière.

Bonne nuit

Cordialement Jérôme.




"Michel Gesnot" a écrit dans le
message de news:12aaa01c44304$c7d93e90$
Bonjour Jerôme,

Vous avez besoin de 3 tables :
Employes (E)
Formation Sessions (FS)
Formation Catalogue (F)

Dans chacune, un NumAuto comme cle primaire.
Dans FS, 2 pointeurs (entiers longs) sur les tables E et
F, et les relations 1 (E / F) ==> + (FS).

La table FS ne doit pas reprendre le libelle qui existe
dans F.
La date de validite de la formation peut probablement etre
calculee a partir de la date de la session de formation et
d'une duree de validite enregistree dans la table F.
Avantage : si les contraintes de valadite changent, les la
nouvelle date de validite est reclaculee de maniere
transparente. Et surtout, pas de redondance des
informations.

Pour repondre a votre souci specifique : une requete
selection avec un regroupement et pour la date de
formation, le critere Dernier.
Si vous triez les dates par ordre decroissant, vous aurez
pour chaque individu la derniere formation effectuee
toutes formations confondues.

Vous pouvez raffiner en ajoutant un fichier "catalogue des
sessions de formation" pour reprendre plus specifiquement
le nom du formateur, la matiere, la date (qui ne devrait
alors plus etre reprise dans FS), le local etc.

Bon travail.
M. Gesnot




Michel Gesnot

-----Message d'origine-----
Bonsoir à tous,

voila mon souci :

J'ai une base de données qui gère les formations du
personnel, soit trois

tables liées, Empoyé, EmployéFormation et Formation avec
les liaisons qui

vont bien.

La table formation contient.

RefFormation (N° Auto)
Domaine
Libélé
Date
Avis du formateur
Date de validité


Je voudrai pour chaque personne qui me sorte la derniere
formation en date

dans chaque domaine car mon chef déteste access et veut
que j'utilise le bon

fichier nationnale excel.

Exemple de la requete :
Moi Electricité B2V 02/02/2001
Favorable 02/02/2004

Moi Electricité B2V, BR 02/05/2003 Favorable
02/05/2006

Moi Vapeur !!!! 06/04/2003
Favorable 06/04/2006

Moi Turbine Makila 22/06/2003 -
-

Paul ....................................
Jacques ............

Je voudrais dans ce cas qu'il me sorte que la deuxieme
lignes pour le

domaine Electricité vu que c'est la dernière que j'ai
effectué.


Je vois pas vraiment comment faire et je suis sur que
c'est du déjà fait.

J'avais qu'en meme pensé d'utilisé 2 recordset qui pointe
sur 1

enregistrement de décalage et de vérifier s'il concorde
et dans ce cas

prendre le moins ancien.
Attention pour certaine personne, elles ont plus de deux
formations dans le

même domaine.


Merci d'avance de m'éclairer.
Bonne nuit, Jérôme.



.



Avatar
Michel Gesnot
Bon...jour puisqu'il est minuit largement passé !
(une petite insomnie de temps en temps, quand on est en
forme, pourquoi pas ?)

Dans ma structure, il faut renommer F en FC
FormationCatalogue, sinon on va confondre avec votre table
F. Si vous utilisez une table catalogue, le pointeur vers
FC suffit dans EF et c'est dans la requete que vous
reprendrez le champ Libelle sur base de la liaison
effectuee entre chaque formation d'un E et la formation en
question.

Je vous suggere de modifier la structure de votre
application apres lecture de mes explications.
J'ai controle et tout fonctionne parfaitement avec la
structure que je vous ai communiquee.


Table E Table FS Table FC
Eid autonumber FSid autonumber FCid autonumber
1 ==> + Eptr entier long
FCptr entier long + <== 1
Nom avis formateur Domaine
Prenom libelle
formateur
date
validite

requete :
nom, prenom ,... avis ... domaine, libelle, date, validite
calculee

regroupement
tri par nom, croissant
tri par date, ordre decroissant, Dernier au lieu de
regroupement

Vos tables EF et F font double emploi :
la table EF etablit le lien entre chaque E et les diverses
formations F qu'il suit ou a suivies.
Il y a donc autant de records EF que de records F.
Dès lors, vous pouvez reporter les champs de F dans EF et
vous simplifierez votre application : 2 tables au lieu de
3.

Il faut remarquer que vous perdez de l'espace en répétant
dans chaque enregistrement de votre table F les
informations relatives à la session de formation :
domaine, libelle et date, ainsi que date de validité (ou
suite a mon intervention, periode de validite).
Vu les capacites actuelles des PC, ce n'est pas un
probleme fondamental, surtout si vous ne traitez pas les
fichiers de General Electric World Wide :)
Mais vous etes probablement amene a resaisir le domaine,
le libelle et la date de la session pour chaque record de
E, a moins de passer par des zones de liste dont les
valeurs sont enregistrees manuellement et requierent une
intervention dans la forme si une nouvelle formation
apparait.

Si vous creez une table FC (F dans mon post precedent),
FormationCatalogue, une petite forme vous permettra
d'ajouter et de modifier a loisir la description des
formations sans modifier les informations de detail du
suivi des formations (essentiellement des pointeurs et
l'avis du moniteur).

Faites le compte :
- encombrement : pour chaque formation, vous economisez
les champs textes domaine et libelle, ainsi que le champ
date autant de fois qu'il y a de formation (moins une
occurence, celle du catalogue)
- souplesse de l'application : plus besoin d'intervention
pour ajouter de nouvelles formations, ni pour geler des
formations suprimees, possibilite d'etablir un calendrier
des formations, de tirer des listes des inscrits par
formation, eventuellement par local etc..
Possibilite de savoir quel moniteur a donne la formation.
- facilite de suivi : vous pouvez corriger un intitule
(ex, faute d'orthographe ou intitule plus conforme) et
voir cette modif reprise dans tous les enregistrements en
une seule operation et je vous garantis qu'en cas de
saisie manuelle il y aura des orthographes variables dans
les zones, ce qui ne permet pas une correction en masse
via une requete et n'est pas "joli".

J'espere que ceci vous eclaire.
En tout cas, ma lampe elle m'eclaire efficacement !

Michel.

-----Message d'origine-----
Bonjour Michel,

Je ne comprend pas pourquoi : "La table FS ne doit pas
reprendre le libelle

qui existe
dans F"

Table E Table EF Table F

RefE 1-----Inf RefE ----1 RefF
Nom RefF Inf--/ Domaine
Prénom Date
......
.....


Voila mes tables avec les liaison et je ne vois pas
pourquoi?

Dans tous les livres que j'ai (euh 5 sur access) ils
disent de faire comme

cela.

Pour la requete avec le regroupement DERNIER cela ne
fonctionne pas, j'avais

déjà essayé et j'ai retenté mes sans succès.

Pour la date de validité, il n'y a pas de problème, elle
ne se calcule pas

encore toute seule mais cela ne serait tarder.

Merci pour votre réponse. J'y réflechis toujours mais je
n'ai pas encore eu

de lumière.

Bonne nuit

Cordialement Jérôme.






Avatar
Michel Gesnot
Bonjour Jerôme

J'ai oublie une chose :

Dans votre structure actuelle, la relation entre EF et F
n'est pas une relation de 1 a plusieurs mais une
relationde 1 a 1.
Pour autant que j'aie bien compris quand je dis qu'il y a
pour chaque formation d'un employe un record dans EF qui
pointe vers un record dans F et qu'aucun autre record de
EF ne pointe vers ce record F.

Reessayez (juste pour savoir) votre requete regroupement
avec Dernier sur la date apres correction de la relation.
Mais, meme si cela fonctionne, mofidiez votre base.

Bon travail.
Michel


-----Message d'origine-----
Bonjour Michel,

Je ne comprend pas pourquoi : "La table FS ne doit pas
reprendre le libelle

qui existe
dans F"

Table E Table EF Table F

RefE 1-----Inf RefE ----1 RefF
Nom RefF Inf--/ Domaine
Prénom Date
......
.....


Voila mes tables avec les liaison et je ne vois pas
pourquoi?

Dans tous les livres que j'ai (euh 5 sur access) ils
disent de faire comme

cela.

Pour la requete avec le regroupement DERNIER cela ne
fonctionne pas, j'avais

déjà essayé et j'ai retenté mes sans succès.

Pour la date de validité, il n'y a pas de problème, elle
ne se calcule pas

encore toute seule mais cela ne serait tarder.

Merci pour votre réponse. J'y réflechis toujours mais je
n'ai pas encore eu

de lumière.

Bonne nuit

Cordialement Jérôme.




Avatar
Jérôme
Bonjour Michel,

déjà un grand merci.

Euh pourrais tu m'envoyer le fichier par mail car la je comprend pas tout
bien.
Je pars du principe que 1 E fait + formation et que pour 1 formation j'ai
plusieur employé.
Je pense qu'en voyant la base de ton essai je comprendrai mieux tes
explications.

Mon email est le suivant :



Merci d'avance.

"Michel Gesnot" a écrit dans le
message de news:1334701c443cc$04f215a0$
Bonjour Jerôme

J'ai oublie une chose :

Dans votre structure actuelle, la relation entre EF et F
n'est pas une relation de 1 a plusieurs mais une
relationde 1 a 1.
Pour autant que j'aie bien compris quand je dis qu'il y a
pour chaque formation d'un employe un record dans EF qui
pointe vers un record dans F et qu'aucun autre record de
EF ne pointe vers ce record F.

Reessayez (juste pour savoir) votre requete regroupement
avec Dernier sur la date apres correction de la relation.
Mais, meme si cela fonctionne, mofidiez votre base.

Bon travail.
Michel


-----Message d'origine-----
Bonjour Michel,

Je ne comprend pas pourquoi : "La table FS ne doit pas
reprendre le libelle

qui existe
dans F"

Table E Table EF Table F

RefE 1-----Inf RefE ----1 RefF
Nom RefF Inf--/ Domaine
Prénom Date
......
.....


Voila mes tables avec les liaison et je ne vois pas
pourquoi?

Dans tous les livres que j'ai (euh 5 sur access) ils
disent de faire comme

cela.

Pour la requete avec le regroupement DERNIER cela ne
fonctionne pas, j'avais

déjà essayé et j'ai retenté mes sans succès.

Pour la date de validité, il n'y a pas de problème, elle
ne se calcule pas

encore toute seule mais cela ne serait tarder.

Merci pour votre réponse. J'y réflechis toujours mais je
n'ai pas encore eu

de lumière.

Bonne nuit

Cordialement Jérôme.




Avatar
Jérôme
Il y aurait moyen que je vous envoye mon fichier par mail?

Bonne après midi.

"Michel Gesnot" a écrit dans le
message de news:1334701c443cc$04f215a0$
Bonjour Jerôme

J'ai oublie une chose :

Dans votre structure actuelle, la relation entre EF et F
n'est pas une relation de 1 a plusieurs mais une
relationde 1 a 1.
Pour autant que j'aie bien compris quand je dis qu'il y a
pour chaque formation d'un employe un record dans EF qui
pointe vers un record dans F et qu'aucun autre record de
EF ne pointe vers ce record F.

Reessayez (juste pour savoir) votre requete regroupement
avec Dernier sur la date apres correction de la relation.
Mais, meme si cela fonctionne, mofidiez votre base.

Bon travail.
Michel


-----Message d'origine-----
Bonjour Michel,

Je ne comprend pas pourquoi : "La table FS ne doit pas
reprendre le libelle

qui existe
dans F"

Table E Table EF Table F

RefE 1-----Inf RefE ----1 RefF
Nom RefF Inf--/ Domaine
Prénom Date
......
.....


Voila mes tables avec les liaison et je ne vois pas
pourquoi?

Dans tous les livres que j'ai (euh 5 sur access) ils
disent de faire comme

cela.

Pour la requete avec le regroupement DERNIER cela ne
fonctionne pas, j'avais

déjà essayé et j'ai retenté mes sans succès.

Pour la date de validité, il n'y a pas de problème, elle
ne se calcule pas

encore toute seule mais cela ne serait tarder.

Merci pour votre réponse. J'y réflechis toujours mais je
n'ai pas encore eu

de lumière.

Bonne nuit

Cordialement Jérôme.




Avatar
Michel Gesnot
OK Jerôme

Je vous envoie la petite bd Test (sous Access 2000).

Vous pouvez m'envoyer votre bd. Vous aurez mon adresse
avec la bd test.


Si vous pouvez la scanner avec un anti-virus, ce sera
impeccable. Je suis de toute façon protégé, mais deux
précautions valent mieux qu'une.

chaque E peut suivre plusieurs formations et
les formations ne sont pas des formations individuelles.

Vous verrez, bientôt vous n'aurez plus de cheveux !
(non, je ne suis pas chauve)

Bonne nuit.
Michel





-----Message d'origine-----
Bonjour Michel,

déjà un grand merci.

Euh pourrais tu m'envoyer le fichier par mail car la je
comprend pas tout

bien.
Je pars du principe que 1 E fait + formation et que pour
1 formation j'ai

plusieur employé.
Je pense qu'en voyant la base de ton essai je comprendrai
mieux tes

explications.

Mon email est le suivant :



Merci d'avance.

"Michel Gesnot" a
écrit dans le

message de news:1334701c443cc$04f215a0$
Bonjour Jerôme

J'ai oublie une chose :

Dans votre structure actuelle, la relation entre EF et F
n'est pas une relation de 1 a plusieurs mais une
relationde 1 a 1.
Pour autant que j'aie bien compris quand je dis qu'il y a
pour chaque formation d'un employe un record dans EF qui
pointe vers un record dans F et qu'aucun autre record de
EF ne pointe vers ce record F.

Reessayez (juste pour savoir) votre requete regroupement
avec Dernier sur la date apres correction de la relation.
Mais, meme si cela fonctionne, mofidiez votre base.

Bon travail.
Michel


-----Message d'origine-----
Bonjour Michel,

Je ne comprend pas pourquoi : "La table FS ne doit pas
reprendre le libelle

qui existe
dans F"

Table E Table EF Table F

RefE 1-----Inf RefE ----1 RefF
Nom RefF Inf--/ Domaine
Prénom
Date


......
.....


Voila mes tables avec les liaison et je ne vois pas
pourquoi?

Dans tous les livres que j'ai (euh 5 sur access) ils
disent de faire comme

cela.

Pour la requete avec le regroupement DERNIER cela ne
fonctionne pas, j'avais

déjà essayé et j'ai retenté mes sans succès.

Pour la date de validité, il n'y a pas de problème, elle
ne se calcule pas

encore toute seule mais cela ne serait tarder.

Merci pour votre réponse. J'y réflechis toujours mais je
n'ai pas encore eu

de lumière.

Bonne nuit

Cordialement Jérôme.





.