Problème de tri des données d'un listbox [Résolu]

Signaler
Messages postés
21
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 mai 2011
-
Messages postés
21
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 mai 2011
-
bonjour,
SVP j'ai besoin de votre aide : je suis en train de développer une application sous VB.NEt 2005 express , et je suis bloqué sur un traitement depuis pas mal de temps: j'ai besoin de remplir un listbox avec des données ( cette tache est réalisé sans aucun problème) puis je veux trier ces résultats dans un sens décroissant( je l'ai effectué avec sucés) puis les affecter à nouveau au même listbox! le problème que j'ai c 'est que mon ListBox reçoit les données avant tri..puis il ajoute les données triées! alors que je ne veux afficher que les données triés seulement!!!
voici mon code :
Dim ee As New connexion
        Dim myQuery3, myQuery, myQuery1, myQuery2 As String
        ee.oConn.Open()
        Dim compteur As Integer
        myQuery = "select duree_panne from historique  where code_machine='" & ComboBox9.Text & "';"
        myQuery1 = "select distinct code_panne from historique  where code_machine='" & ComboBox9.Text & "';"

        myQuery3 = "select sum(duree_panne) from historique  where code_machine='" & ComboBox9.Text & "';"

        Dim MaCommande1 As New MySqlCommand(myQuery3, ee.oConn)
        Dim MaCommande2 As New MySqlCommand(myQuery, ee.oConn)
        Dim MaCommande3 As New MySqlCommand(myQuery1, ee.oConn)
        compteur = MaCommande1.ExecuteScalar
        Dim i, j As Integer
        Dim var As Double

        MaCommande3.ExecuteNonQuery()
        Dim dr, dr2 As MySqlDataReader
        dr = MaCommande3.ExecuteReader()
        While (dr.Read())

            ListBox1.Items.Add(dr.GetValue(i))

        End While
        dr.Close()

        For i = 0 To ListBox1.Items.Count - 1

            myQuery2 = "select sum(duree_panne) from historique  where code_machine='" & ComboBox9.Text & "' and code_panne='" & ListBox1.Items.Item(i) & "';"

            Dim MaCommande4 As New MySqlCommand(myQuery2, ee.oConn)
            dr2 = MaCommande4.ExecuteReader

            While dr2.Read

                ListBox2.Items.Add(dr2.GetValue(0))
            End While
            dr2.Close()
        Next
        Dim tab(ListBox2.Items.Count - 1) As Double
        Dim cara(ListBox2.Items.Count - 1), c As String

        'stockage des données du listbox dans un tableau 
        For i = 0 To ListBox2.Items.Count - 1
            tab(i) = ListBox2.Items.Item(i)
            'ListBox2.Items.Remove(ListBox2.Items.Item(i))

            cara(i) = ListBox1.Items.Item(i)
            'ListBox1.Items.Remove(ListBox1.Items.Item(i))
        Next


        'tri du tableau 
        For i = 0 To ListBox2.Items.Count - 1
            For j = i + 1 To ListBox2.Items.Count - 1
                If tab(i) < tab(j) Then
                    var = tab(j)
                    tab(j) = tab(i)
                    tab(i) = var

                    c = cara(j)
                    cara(j) = cara(i)
                    cara(i) = c
                End If
            Next j
        Next i

        'For i = 0 To ListBox1.Items.Count - 1
        '    MsgBox(cara(i))
        'Next

        'remplissage du listbox avec les données triées à partir du tableau 

        For i = 0 To ListBox1.Items.Count - 1

            ListBox2.Items.Add(tab(i))

            ListBox1.Items.Add(cara(i))
        Next

2 réponses

Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
bonjour
au lieu de remplir le listbox la premiere fois mets tes données dans un array puis fais un array.sort et seulement ensuite tu fais un listbox.clear et tu copy l'array dans la listbox


si c'est la solution, penser : REPONSE ACCEPTEE
Messages postés
21
Date d'inscription
vendredi 15 août 2008
Statut
Membre
Dernière intervention
29 mai 2011

merci beaucoup :)