Récupérer sur l'enregistrement n, la donnée de l'enregistrement n-
2 réponses
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 ???
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
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
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: 54ECB44F-1871-41FE-B9EF-040AB6DC01D4@microsoft.com...
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 ???
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
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
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: 54ECB44F-1871-41FE-B9EF-040AB6DC01D4@microsoft.com...
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 ???
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 ???