OVH Cloud OVH Cloud

Récupérer sur l'enregistrement n, la donnée de l'enregistrement n-

2 réponses
Avatar
SANDRINE
Bonjour,

J'ai une table avec un n° de matricule, un niveau de fonction et une date
d'effet. Je voudrais pour chacun des enregistrements, pour un même n° de
matricule, récupérer la donnée niveau de fonction de l'enregistrement
précédent. Ainsi, mon nouveau champs "fonction antérieure" ne commencerait
pour chaque n° de matricule qu'au deuxième évenement.

J'ai pensé à un compteDom regroupé sur n° matricule et qui afficherait un
compteur croisssant par date d'effet mais, n'est ce pas trop long à générer
(bdd de 500000 enregistrements). En plus, il me dit erreur de compilation.

Mettez moi sur la piste, je ne connais pas du tout le vba Access ....
Recordset ???

Par avance merci

2 réponses

Avatar
Maxence HUBICHE [MVP Access]
Salut,

Euh, je vais essayer un truc ...
Partant du principe que ta table s'appelle 'LaTable' et que les champs sont
:
LeMatricule, LaDate et LeNiveau

Copie ce qui suit dans le mode SQL d'une nouvelle requête (pense à mettre à
jour les noms avant de tester ;) )

SELECT * ,
(SELECT TOP 1 LeNiveau
FROM LaTable as T2
WHERE T2.LeMatricule = T1.LeMatricule
AND T2.LaDate < T1.LaDate
ORDER BY T2.LaDate Desc) As LeNiveauPrec
FROM LaTable;


Bon courage :)
--
-=-=-=- Maxence HUBICHE -=-=-=-
Formateur et Developpeur Indépendant
Microsoft MVP Office Systems - Access
Où me retrouver ?
--------------------------------------------------------------------------------------------
http://access.developpez.com/faq (LA FAQ Access francophone la plus
importante du Web : 384 Q/R)
http://www.developpez.com (Communauté partenaire de Microsoft)
http://www.developpez.net/forums/viewforum.php?f8 (LE Forum Access)
http://www.access-maxence.com (mon site web perso)
http://www.casestudio.fr (logiciel de modélisation de base de données)




"SANDRINE" <SANDRINE @discussions.microsoft.com> a écrit dans le message de
news:
Bonjour,

J'ai une table avec un n° de matricule, un niveau de fonction et une date
d'effet. Je voudrais pour chacun des enregistrements, pour un même n° de
matricule, récupérer la donnée niveau de fonction de l'enregistrement
précédent. Ainsi, mon nouveau champs "fonction antérieure" ne commencerait
pour chaque n° de matricule qu'au deuxième évenement.

J'ai pensé à un compteDom regroupé sur n° matricule et qui afficherait un
compteur croisssant par date d'effet mais, n'est ce pas trop long à
générer
(bdd de 500000 enregistrements). En plus, il me dit erreur de compilation.

Mettez moi sur la piste, je ne connais pas du tout le vba Access ....
Recordset ???

Par avance merci


Avatar
SANDRINE
Bonjour,

Alors, sur ma base TEST celà fonctionne et je t'en remercie. Le problème
réside dans le fait que dans ma base de donnée j'ai également un numéro
d'ordre associé à Ladate. En cas d'évenement à date identique, ils sont
classés par ordre (Null pour le 1er, puis 1, 2)

Ce qui me donne :

Pour la table classement2 j'ai les champs Matricule, Fonction, Date_effet et
NUMORD

SELECT *,(SELECT TOP 1 Fonction
FROM CLASSEMENT2 as T2
WHERE T2.Matricule = CLASSEMENT2.Matricule
AND T2.Date_effet < CLASSEMENT2.Date_effet
ORDER BY T2.Date_effet Desc, T2.NUMORD Desc) AS LeNiveauPrec
FROM CLASSEMENT2
ORDER BY CLASSEMENT2.Matricule, CLASSEMENT2.Date_effet, CLASSEMENT2.NUMORD;

Or, lorsque j'ai des évenements multiples pour un même agent à une même
date, la requête ne me renvoie aucune valeur dans les enregistrements
concernés.
Comment indiquer qu'en cas de dates identiques pour un même agent, se
référer en plus au n° ordre ????

Sandrine



Salut,

Euh, je vais essayer un truc ...
Partant du principe que ta table s'appelle 'LaTable' et que les champs sont
:
LeMatricule, LaDate et LeNiveau

Copie ce qui suit dans le mode SQL d'une nouvelle requête (pense à mettre à
jour les noms avant de tester ;) )

SELECT * ,
(SELECT TOP 1 LeNiveau
FROM LaTable as T2
WHERE T2.LeMatricule = T1.LeMatricule
AND T2.LaDate < T1.LaDate
ORDER BY T2.LaDate Desc) As LeNiveauPrec
FROM LaTable;


Bon courage :)
--
-=-=-=- Maxence HUBICHE -=-=-=-
Formateur et Developpeur Indépendant
Microsoft MVP Office Systems - Access
Où me retrouver ?
--------------------------------------------------------------------------------------------
http://access.developpez.com/faq (LA FAQ Access francophone la plus
importante du Web : 384 Q/R)
http://www.developpez.com (Communauté partenaire de Microsoft)
http://www.developpez.net/forums/viewforum.php?f8 (LE Forum Access)
http://www.access-maxence.com (mon site web perso)
http://www.casestudio.fr (logiciel de modélisation de base de données)




"SANDRINE" <SANDRINE @discussions.microsoft.com> a écrit dans le message de
news:
Bonjour,

J'ai une table avec un n° de matricule, un niveau de fonction et une date
d'effet. Je voudrais pour chacun des enregistrements, pour un même n° de
matricule, récupérer la donnée niveau de fonction de l'enregistrement
précédent. Ainsi, mon nouveau champs "fonction antérieure" ne commencerait
pour chaque n° de matricule qu'au deuxième évenement.

J'ai pensé à un compteDom regroupé sur n° matricule et qui afficherait un
compteur croisssant par date d'effet mais, n'est ce pas trop long à
générer
(bdd de 500000 enregistrements). En plus, il me dit erreur de compilation.

Mettez moi sur la piste, je ne connais pas du tout le vba Access ....
Recordset ???

Par avance merci