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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    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 Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    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

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    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 Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    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.

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

    Informations professionnelles :
    Activité : Développeur informatique

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

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    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 Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    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.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    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 éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    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 Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    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!

  11. #11
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    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.

+ 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 Invité 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