IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Problème de doublons


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut Problème de doublons
    Bonjour à tous,
    Je souhaite afficher dans une combobox l'intégralité d'une colonne d'un fichier csv pour cela j'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            reqCodeV = "select distinct * from prises.csv"
            Dim dt As DataTable
            dt = F_Menu.ReqSelection(reqCodeV, "CodesVehicules")
            Dim strVal() As String = Nothing
            For i = 0 To dt.Rows.Count - 1
                strVal = dt.Rows(i).Item(0).ToString.Split(";".ToCharArray)
                CB_CodeV.Items.Add(strVal(11))
            Next
            CB_CodeV.SelectedIndex = 0
    J'ai ajouté le distinct pour supprimer les doublons cependant ceux-ci ne sont pas supprimés, quelqu'un a t'il une solution ?
    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    C'est plus un probléme SQL qu'autre chose.

    Je suppose que "prises" dispose de plusieurs colonnes. Quand tu fais "distinct *" cela signifie que tu veux dédoublonner les lignes sur l'intégralité des colonnes de la tables.

    Exemple :
    Si tu as une table avec 2 colonnes Col1 et Col2 qui contient :
    A 1
    A 2
    B 3
    B 3
    B 4

    Ton "distinct *" donnera :
    A 1
    A 2
    B 3
    B 4

    Il faut préciser le nom de la colonne à dédoublonner.
    Si tu fais "distinct Col1", tu obtiendras :
    A
    B

    Et je pense que c'est ce que tu veux.

    Cdt
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Merci en effet tu as bien cerné mon problème,
    cependant pour faire un distinct nom de colonne d'un fichier csv, j'utilise quoi ? Le nom d'en-tête associé à ma colonne ?

  4. #4
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Re.

    J'aurai tendance à te dire "oui", même si je n'ai jamais utilisé de requête sur un fichier csv (mais ça ne reste qu'une source de donnée comme une autre donc ...).

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Ok merci, je teste ça et je te tiens au courant.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    J'ai testé et j'ai l'avertissement suivant
    Aucune valeur donnée pour un ou plusieurs des paramètres requis.
    Donc ce n'est pas ça :s.

  7. #7
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Désolé, ça ne peut pas marcher, je n'avais pas vu dans le premier poste que tu splittais la ligne récupéré pour chargé le combo ...

    Donc tu vas devoir dédoublonner lors du chargement du combo.

    Il suffit pour ce faire de tester avant le .add que la chaîne n'existe pas déjà dans la collection des items du combobox (avec ComboBox.items.Contains(valeur à charger)).

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Merci j'ai rajouté le contains de cette façon mais toujours les doublons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Dim strVal() As String = Nothing
            For i = 0 To dt.Rows.Count - 1
                strVal = dt.Rows(i).Item(0).ToString.Split(";".ToCharArray)
                CB_CodeV.Items.Contains(strVal(11))
                CB_CodeV.Items.Add(strVal(11))
            Next
            CB_CodeV.SelectedIndex = 0

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    J'avais pas vu testé donc j'ai rajouté ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                If CB_CodeV.Items.Contains(strVal(11)) Then
                    i = i + 1
                Else
                    CB_CodeV.Items.Add(strVal(11))
                End If
    et ça fonctionne parfaitement !
    Enorme merci à toi ça fait longtemps que je suis avec ce soucis
    Bon après-midi

  10. #10
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Sinon il y a possibilité de se servir des méthodes d'extension fournies par Linq pour éviter de tester à chaque fois, voir exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
            Const exemple As String = "test1;test2;test3;test1;test2;test3"
            'On sépare les éléments de la chaine
            Dim decoupage() As String = exemple.Split(";".ToCharArray())
     
            'On laisse Linq s'occuper de "faire le tri" :D
            Dim distinct As IEnumerable(Of String) = decoupage.Distinct()
            'Si jamais on voulait récupérer un tableau de String
            'plutôt qu'un IEnumarable(Of String) on aurait écrit
            'Dim distinct() As String = decoupage.Distinct().ToArray()
     
            'Affichage pour vérification
            Dim sb As New System.Text.StringBuilder()
            For Each chaine As String In distinct
                sb.AppendLine(chaine)
            Next
            MessageBox.Show(sb.ToString())
    En espérant avoir été utile!
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  11. #11
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Citation Envoyé par Sehnsucht Voir le message
    Sinon il y a possibilité de se servir des méthodes d'extension fournies par Linq pour éviter de tester à chaque fois
    Je ne connaissais pas, merci pour l'info !

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/08/2006, 23h35
  2. [WD10] Problème de doublons
    Par routmout dans le forum WinDev
    Réponses: 5
    Dernier message: 07/06/2006, 18h36
  3. Problème de doublons
    Par RapidJul dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/05/2006, 16h08
  4. Réponses: 7
    Dernier message: 30/01/2006, 21h36
  5. [access] Problème de doublons
    Par nesbla dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2005, 09h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo