Recordset dynamique et doublon [Résolu]

Messages postés
1231
Date d'inscription
vendredi 16 novembre 2007
Dernière intervention
16 juin 2009
- - Dernière réponse : lillith212
Messages postés
1231
Date d'inscription
vendredi 16 novembre 2007
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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
1231
Date d'inscription
vendredi 16 novembre 2007
Dernière intervention
16 juin 2009
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de lillith212
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
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
Commenter la réponse de cs_MPi
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
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
Commenter la réponse de PCPT
Messages postés
96
Date d'inscription
mardi 29 mars 2005
Dernière intervention
10 mars 2011
0
Merci
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. 
Commenter la réponse de JPGVB

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.