Recordset dynamique et doublon

Résolu
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009 - 7 avril 2008 à 08:48
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009 - 7 avril 2008 à 13:13
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

lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
7 avril 2008 à 13:13
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
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 avril 2008 à 11:12
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
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 avril 2008 à 12:30
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
JPGVB Messages postés 96 Date d'inscription mardi 29 mars 2005 Statut Membre Dernière intervention 10 mars 2011 2
7 avril 2008 à 12:47
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. 
Rejoignez-nous