Supression doublon table

cs_jojo68 Messages postés 11 Date d'inscription lundi 16 février 2004 Statut Membre Dernière intervention 13 décembre 2005 - 24 juin 2005 à 10:37
cs_jojo68 Messages postés 11 Date d'inscription lundi 16 février 2004 Statut Membre Dernière intervention 13 décembre 2005 - 29 juin 2005 à 15:54
Salut à tous,

J'ai une table (jusque'ici tout va bien!) de ce type:


Champ1 Champ2 Champ3
097D043017 000100 05/03/05
097D043017 000200 05/03/05
097D043017 000300 06/04/05
082S254531 000101 05/06/05
082S254531 000200 05/06/05
-----


Comme on peut le voir, il ya des doublons et je voudrais les supprimer. Mais je voudrais supprimer les doublons selon le Champ3 (garder la date la plus ancienne), ce qui donnerait:


Resultat dans une autre table:
097D043017 000100 05/03/05
082S254531 000200 05/06/05
------
J'ai un peu de mal à me lancer dans vb, toutes les idées sont les bienvenues.
Voilà, j'éspère que je me suis bien fait comprendre.

Merci d'avance et bon vb,

Jojo

8 réponses

omsylv Messages postés 69 Date d'inscription lundi 3 janvier 2005 Statut Membre Dernière intervention 15 septembre 2005
24 juin 2005 à 11:09
Salut,



Est ce que tu veux les supprimer physiquement (enregistrement
définitivement détruits) ou qu'ils ne s'affichent (requête pour
afficher les résultats sans doublons) ??
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
24 juin 2005 à 11:16
Salut,



Juste une idée ;)



- A supposer que ta table s'appelle Table1

- Créer une table temporaire Table2 avec les mêmes champs que Table1 avec comme clé primaire Champ1



Dans le code :



1 étape : Vider Table2 (Delete * From Table2)

2 étape : insert into table2 (champ1,champ2,champ3) select
champ1,champ2,champ3
from Table1 order by Champ3

3 étape : Vider Table1 (Delete * From Table1)

4 étape : insert into table1 (
champ1,champ2,champ3
) select * from Table2



NB: Pour les messages d'erreur de type doublons dans l'étape 2, utilise On Error Resume Next !
0
cs_jojo68 Messages postés 11 Date d'inscription lundi 16 février 2004 Statut Membre Dernière intervention 13 décembre 2005
24 juin 2005 à 11:26
J'aimerais garder tous les enregistrements avec doublons et créer une autre table sans doublons.

En tous cas merci pour ta réponse
Jojo
0
omsylv Messages postés 69 Date d'inscription lundi 3 janvier 2005 Statut Membre Dernière intervention 15 septembre 2005
24 juin 2005 à 12:52
Dans ce cas là si tu n'as pas besoin de modifier les données, tu crées
une requête (du type Select DISTINCT champ3 from table) et c'est bon.



PS : Si tu ne connais pas trop le SQL : http://www.1keydata.com/sql/sql.html
0

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

Posez votre question
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
24 juin 2005 à 14:30
c'est pas faisable avec distinct vu la dépendance de la requete au champ3 !



Tu n'aura qu'à suivre l'étape 1 et 2 seulement
0
cs_jojo68 Messages postés 11 Date d'inscription lundi 16 février 2004 Statut Membre Dernière intervention 13 décembre 2005
28 juin 2005 à 11:41
Salut et surtout merci pour vos réponses,

Je viens seulement d'essayer les étapes 1 et 2 mais ça ne marche pas, il ne me fait pas le tri sur le champ date, en fait il trie les enregistrements par le champ 1 (clé primaire), voici mon bout de code:
Champ 1= Lordno
Champ3=NtryDt

Merci d'avance si vous avez une idée,

Jojo
_________________________
'Destruction de table qp2
DoCmd.DeleteObject acTable, "qp2"


Set bd1 = CurrentDb
'Création de Table
bd1.Execute "CREATE TABLE [qp2]" _
& "(Lordno TEXT,ItemNo TEXT,Lorditem TEXT,Clas TEXT,Fact TEXT,PARTNo TEXT,NtryDt DATE,WorkTo DATE,WupRel DATE,RevNo TEXT,OS TEXT,Hold TEXT,ProdFam TEXT,SizeFam INTEGER,Epmc TEXT);"
' Clé primaire
bd1.Execute "CREATE UNIQUE INDEX Lordno ON qp2 (Lordno)WITH PRIMARY "

'Remplissage table Qp2
m = "INSERT INTO QP2 (Lordno,ItemNo,Lorditem,NtryDt) SELECT Lordno,ItemNo,Lorditem,NtryDt FROM FASTD09A_copy ORDER BY Ntrydt"


bd1.Execute (m)
______________________________
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
28 juin 2005 à 14:53
Essai

Order by NtryDt,Lordno,ItemNo,Lorditem

Sinon

par ordre décroissant:

Order by NtryDt,Lordno,ItemNo,Lorditem DESC
0
cs_jojo68 Messages postés 11 Date d'inscription lundi 16 février 2004 Statut Membre Dernière intervention 13 décembre 2005
29 juin 2005 à 15:54
Merci mais ca ne marche toujours pas, il fait toujours le tri sur Le champ1.

Avez vous une autre idée.
Merci d'avance.
Jojo
0
Rejoignez-nous