Recordset dynamique et doublon

[Résolu]
Signaler
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
-
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
-
Bonjour,

Je cherche à supprimer les doublons dans un recordset dynamique. Voila mon idée :
Je trie le recordset ensuite je lis la ligne et je la compare avec la ligne suivante. si elle est identique alors je la supprime.

Algorithimiquement parlant je pense que c'est une solution. Cependant, quand j'écris mon code, il me supprime toutes mes lignes. Je ne trouve pas mon erreur, si quelqu'un peut m'aider ce serait tres gentil.

Voici mon code :
rsDyna.Sort = "Iden ASC"
rsDyna.MoveFirst
Do While Not rsDyna.EOF
   ligne = rsDyna!Iden.Value
   rsDyna.MoveNext
   If ligne = rsDyna!Iden.Value Then rsDyna.Delete adAffectCurrent
   rsDyna.MoveNext
loop
rsDyna.update

4 réponses

Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Merci pour toutes vos réponses.
J'ai trouvé la solution à mon probleme.
Face à vos réponses : Je ne gère pas une base de données via mon recordset mais je récupére les informations circulant sur un port com et je les stocke apres les avoir formalisées dans ce recordset.
J'ai tenté la commande avec le distinct mais j'avais des erreurs systématiquement.
Voici le bout de code avec ma solution :
       '-- Tri croissant des enregistrements   
        rsDyna.Sort = "Commande ASC"
        rsDyna.MoveFirst
        Do While Not rsDyna.EOF

            '-- Stockage de la valeur dans une variable locale
            ligne = rsDyna!Iden.Value
            rsDyna.MoveNext
            If rsDyna.EOF = True Then Exit Do

            '-- Comparaison de la variable avec la valeur du recordset
            If ligne = rsDyna!Iden.Value Then
                rsDyna.Delete adAffectCurrent
                rsDyna.Update
                rsDyna.MoveFirst
            End If
        Loop
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Si tu ne veux pas de doublons, tu pourrais, je pense, utiliser DISTINCT dans ta requête.
Select Distinct Iden, * From LaTable Where...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

en effet tu ne devrais pas trier la table APRèS pour supprimer les doublons mais les empêcher avant l'écriture....

Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
96
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
10 mars 2011
2
Bonjour, si tu étudie la structure de ta base, tu verras qu'en gérant correctement la clé primaire et en définissant pour tes champs s'ils peuvent contenir ou non des doublons, tu évite un balayage de ta table (ce qui peut etre long). Si besoin, tu peux définir une clé primaire formée par plusieurs champs.