Enlever doublon dans une requête mais avec 4 champs

Résolu
bigaccess Messages postés 23 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 30 juillet 2012 - 1 mars 2012 à 15:56
bigaccess Messages postés 23 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 30 juillet 2012 - 2 mars 2012 à 18:26
Bonjour,

J'ai un sérieux problème.

Je cherche a ne pas afficher des doublons dans une requête Access par le champ ou contient une date modifiable.

Voici ma table (Archive):
Numéro auto (NUM)
Le numéro de l'employé (Matricule)
La date de l'entrée (DateNote)
Une note (Note)

Il se peut qu'un employé ait plusieurs note à son dossier. Donc dans ma requête, je veux qu'il n'affiche qu'une fois l'employé mais avec la date la plus récente dans la colonne DateNote de la table Archive. La date peut par compte changer dans un enregistrement et c'est pour cela que je dois me fichier au champ DateNote. Donc une note (un enregistrement) par Matricule.

J'ai:
NUM Matricule DateNote Note
1 100 2011-10-01 note1
2 100 2011-12-19 note2
3 200 2012-01-05 note3
4 300 2011-11-01 note4
5 300 2011-10-20 note5

Et j'ai besoin qu'il m'affiche:
NUM Matricule DateNote Note
2 100 2011-12-19 note2
3 200 2012-01-05 note3
4 300 2011-11-01 note4

J'ai essayé les fonctions Premier, Dernier, DISTINCT, etc... et ça ne fonctionne pas.

Merci!

11 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
1 mars 2012 à 16:19
Bonjour,

Avec Distinct, ca devrait fonctionner, peux tu nous montrer ta requête ? Et préciser ce que tu entends pas "ne fonctionne pas"
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 mars 2012 à 20:16
Salut

 command.CommandText = "SELECT * FROM Archive WHERE DateNote IN (SELECT  MAX (DateNote) FROM Archive GROUP BY Matricule) ; "
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
1 mars 2012 à 23:26
Bonsoir,

ça devrait marcher avec:

SELECT Archive.Matricule, Max(Archive.DateNote) AS MaxDeDateNote, Last(Archive.Note) AS DernierDeNote
FROM Archive
GROUP BY Archive.Matricule;


[] Ce qui va sans dire. va mieux en le disant.
3
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
2 mars 2012 à 14:52
bigacess

j'ai répondu selon ton ex
ça fonctionne oui j'ai testé avant de poster
Si il n'y a pas de date dans DateNote


je veux qu'il n'affiche qu'une fois l'employé mais avec la date la plus récente


comment veux tu faire une requette si le champ
datenote ne contient pas de date
soit tu t'es mal expliqué
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigaccess Messages postés 23 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 30 juillet 2012
2 mars 2012 à 16:50
ShayW,

En fait il se peut qu'un employé ait une note à son dossier mais qu'il n'y ait pas de date pour cette note.

Donc on doit considérer que la note sans date est la plus vieille.

Je sais que c'est un peu bizarre mais ce sont des notes qui date de longtemps et il faut quand même les conserver, mais malgré tout dans cette requête je dois afficher la dernière note, par date, d'ou le DateNote.

Si l'employé qui n'a pas de date obtient une autre note avec une date, cette celle avec la date qui devrait s'afficher dans la requête et l'autre restera seulement dans la table et ainsi de suite...

Merci.
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
2 mars 2012 à 17:29
SELECT Archive.Matricule, Max(Archive.DateNote) AS MaxDeDateNote, Last(Archive.Note) AS DernierDeNote
FROM Archive
GROUP BY Archive.Matricule
HAVING (([Archive]![DateNote] Is Not Null And [Archive]![Note] Is Not Null));

[] Ce qui va sans dire. va mieux en le disant.
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
2 mars 2012 à 17:39
Cette fois, c' est la bonne..
Il ne te demandera rien !

SELECT Archive.Matricule, Max(IIf(IsNull([Archive]![DateNote]),0,[Archive]![DateNote])) AS DateNote, Last(IIf(IsNull([Archive]![Note]),0,[Archive]![Note])) AS [Note]
FROM Archive
GROUP BY Archive.Matricule;




[] Ce qui va sans dire. va mieux en le disant.
3
bigaccess Messages postés 23 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 30 juillet 2012
2 mars 2012 à 18:24
Salut LIBRE_MAX,

Ça ne fonctionne pas.

Il met bien la dernière date de DateNote mais la note ne suit pas.

Jai :
NUM Matricule DateNote Note
1 100 2011-10-01 note1
2 100 2011-12-19 note2
3 200 2012-01-05 note3
4 300 2011-11-01 note4
5 300 2011-10-20 note5

Et mettons pour le Matricule 300 il affiche 2011-11-01 note 5 alors que la note 5 fait partie de l'enregistrement du 2011-10-20. Donc pas la bonne note de la bonne date.
3
bigaccess Messages postés 23 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 30 juillet 2012
2 mars 2012 à 14:15
Salut LIBRE_MAX,

Ça ne fonctionne pas une fenêtre s'ouvre en exécutant la requête et me demande d'entrer une valeur mais elle doit s'exécuter dans demander de valeur. De plus, les dates ne s'affichent plus dans la colonne de date.

Et il n'affiche pas l'enregistrement de la plus grande date entrée dans le champ date.

Julien39 : Distinct déjà essayé et ça ne fonctionne pas.

ShayW Ça fonctionne mais comment afficher les enregistrements si il n'y pas pas de date dans le champs DateNote pour un employé. La requête n'affiche que les enregistrements qui ont une date.

Merci!
0
bigaccess Messages postés 23 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 30 juillet 2012
2 mars 2012 à 14:24
ShayW : Si il n'y a pas de date dans DateNote, la valeur de cette enregistrement est la plus vieille. C'est comme si on dit : Pas de date = date la plus vieilleé

Merci.
0
bigaccess Messages postés 23 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 30 juillet 2012
2 mars 2012 à 18:26
Même avec des dates au lieu de 0 dans le champ j'ai le même problème.
0
Rejoignez-nous