[Doublons dans table] : algorithme

Philippe -  
 Philippe -
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

  1. random Messages postés 1612 Statut Membre 155
     
    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
  2. Philippe
     
    ... 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