[Doublons dans table] : algorithme

Philippe - 21 avril 2005 à 13:38
 Philippe - 21 avril 2005 à 15:49
Bonjour,

Le problème : une table T1 avec un champ Id et un champ Ref. Le champ Ref de T1 comporte des doublons.
Id Ref
1 ref_a
2 ref_b
3 ref_b

Je voudrais détecter mes doublons, les copier dans une table T2 et suprimmer le doublon en question de ma table T1 (ici, Id=2 ; Ref=Ref_b)
Je ne vois pas dans quel sens partir et je n'ai rien trouvé de concluant sur le oueb. Si quelqu'un avait un petit bout d'algorithme (ou un petit bout de VBA), je suis preneur...

Merci.

2 réponses

random Messages postés 1612 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 mars 2006 155
21 avril 2005 à 14:00
ben d'abord tu commences par faire une requete
avec des fonctions de regroupement bouton sigma
tu mets le champ avec doublons a regroupement
sur la ligne operation
et tu mets un autre champ avec la fonction de regroupement
compte et le where >1
ca te donne la liste des doublons
maintenant si tu veux crer une table sans doublon
tu fais une requete création de table avec regroupement des deux champs

0
... je suis passé par un petit bout de code. Il y a surement plus simple. Il faut tout d'abord dupliquer la table T1 => T2 (même champs)

Dim base As Database
Dim record_T1, record_T2 As Recordset
Dim temp_Id, temp_Ref As Variant
Dim SQL As String

Set base = DBEngine.Workspaces(0).Databases(0)
SQL = "Select * from T1 order by Ref"
Set record_T1= base.OpenRecordset(SQL, dbOpenDynaset)
Set record_T2= base.OpenRecordset("T2", dbOpenDynaset)

record_T1 .MoveFirst
temp_id = ""
temp_ref = ""

Do Until record_T1.EOF
record_T1.Edit
If record_T1![Ref] = temp_ref
With record_T2
record_T2.AddNew
record_T2![Id] = record_T1![Id]
record_T2![Ref]= record_T1![Ref]
record_T2.update
End With
record_T1.Delete
Else
temp_id = record_T1![Id]
temp_ref = record_T1![Ref]
End If
record_T1.MoveNext
Loop

record_T1.Close
record_T2.Close
base.close

C'est tout ...
0