Enlever doublon dans une requête mais avec 4 champs [Résolu]

Messages postés
23
Date d'inscription
jeudi 1 mars 2012
Dernière intervention
30 juillet 2012
- 1 mars 2012 à 15:56 - Dernière réponse :
Messages postés
23
Date d'inscription
jeudi 1 mars 2012
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!
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
1 mars 2012 à 16:19
3
Merci
Bonjour,

Avec Distinct, ca devrait fonctionner, peux tu nous montrer ta requête ? Et préciser ce que tu entends pas "ne fonctionne pas"

Merci cs_Julien39 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Meilleure réponse
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
1 mars 2012 à 20:16
3
Merci
Salut

 command.CommandText = "SELECT * FROM Archive WHERE DateNote IN (SELECT  MAX (DateNote) FROM Archive GROUP BY Matricule) ; "

Merci cs_ShayW 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_ShayW
Meilleure réponse
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
1 mars 2012 à 23:26
3
Merci
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.

Merci LIBRE_MAX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de LIBRE_MAX
Meilleure réponse
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
2 mars 2012 à 14:52
3
Merci
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é

Merci cs_ShayW 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_ShayW
Meilleure réponse
Messages postés
23
Date d'inscription
jeudi 1 mars 2012
Dernière intervention
30 juillet 2012
2 mars 2012 à 16:50
3
Merci
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.

Merci bigaccess 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de bigaccess
Meilleure réponse
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
2 mars 2012 à 17:29
3
Merci
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.

Merci LIBRE_MAX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de LIBRE_MAX
Meilleure réponse
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
2 mars 2012 à 17:39
3
Merci
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.

Merci LIBRE_MAX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de LIBRE_MAX
Meilleure réponse
Messages postés
23
Date d'inscription
jeudi 1 mars 2012
Dernière intervention
30 juillet 2012
2 mars 2012 à 18:24
3
Merci
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.

Merci bigaccess 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de bigaccess
Messages postés
23
Date d'inscription
jeudi 1 mars 2012
Dernière intervention
30 juillet 2012
2 mars 2012 à 14:15
0
Merci
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!
Commenter la réponse de bigaccess
Messages postés
23
Date d'inscription
jeudi 1 mars 2012
Dernière intervention
30 juillet 2012
2 mars 2012 à 14:24
0
Merci
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.
Commenter la réponse de bigaccess
Messages postés
23
Date d'inscription
jeudi 1 mars 2012
Dernière intervention
30 juillet 2012
2 mars 2012 à 18:26
0
Merci
Même avec des dates au lieu de 0 dans le champ j'ai le même problème.
Commenter la réponse de bigaccess

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.