Recordset dynamique et doublon [Résolu]

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

Merci lillith212 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

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