none
Listbox RRS feed

  • Question

  • Bonsoir,

    j'ai crée une listebox et j'ai fait afficher différente date.

    je veux connaitre le nombre total de ligne qu'elle m'affiche afin de faire une boucle for

    et prendre la valeur d'une ligne afin de la comparée à une donnée que j'aurai saisi.

    je veux connaitre le nombre total de ligne

    et la valeur d'une ligne ?

    Cordialement

     

    lundi 7 juin 2010 15:15

Réponses

Toutes les réponses

  • Bonjour,

    Pour connaître le nombre total de lignes :

    msgbox (listbox1.Items.Count)

    Pour connaître le contenu d'un enregistrement :

    MsgBox (ListBox1.Items(i))

    Si mes réponses te sont utiles, tu peux cliquer dans le rectangle en haut à gauche de cette réponse, où il y a un triangle vert.

    Cordialement.


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Proposé comme réponse EhJoe lundi 7 juin 2010 18:11
    lundi 7 juin 2010 18:11
  • Bonjour,

     

    Merci Joe pour la réponse.

    Edson80, est-ce ces explications ont résolu votre problème ?

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    mardi 8 juin 2010 13:54
  • Bonsoir,

     Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Projet de mise a jour\Basededonnées\Edson80.mdb;") 'Définition de la connexion
            Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand() 'générer la connexion
            Mycommand.CommandText = "SELECT Fi_Bordereau.F_Dateb FROM Fi_Bordereau ;" 'Requête permettant de récupérer tous les champs de la table Fi_Client
            MyConnexion.Open()
            Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
            '----------------- Recherche de la donnée ----------------
            Do While myReader.Read()
                valeurindex = ListBoxAfficheDate.Items.Add(myReader.GetDateTime(0)) 'affiche la rubrique lue dans la zone liste
                If DateTimePickerCaissePD.Text = valeurindex Then
               MsgBox("bon")
                ElseIf DateTimePickerCaissePD.Text <> valeurindex Then
                    MsgBox("erreur")
                End If
            Loop

    Voici ce que je veux faire.

    Les differentes dates de mon fichier s'affiche dans la listeBox.

     je veux que la variable valeurindex me récupère au fur et à mesure la valeur de la date trouvé pour faire la comparaison.

    je veux parcourir cette listBox et à chaque fois je récupére une date et la compare à la date saisi.si la date saisi est egal à la date dans le fichier il m'affiche Bon. mais cela ne passe pas pouvez vous m'aidez ?

    Cordialement

    mardi 8 juin 2010 16:00
  • Bonjour,

    Il me semle qu'il y a une confusion, car tu compares l'index de ta liste (en création en plus), or ce n'est pas son index mai son contenu qu'il faut comparer, et pour ça il faut préalablement charger la liste avec les valeurs de comparaison, c'est à dire les dates à comparer. Car dans ce que tu fais, comparant ce que tu dis être un date (jj/mm/aaaa) à un index (i), ça ne peut qu'être faux pour la bonne raison que le format n'est pas le même.

    Pour la comparaison c'est comme je t'ai indiqué, mais si ta liste n'est pas chargée préalablement ça ne servira à rien (bien formater les dates, que la comparaison ne souffre pas de ça), voici :

      Dim i As Long
      For i = 0 To nombreDeDatesAcomparer ' charge liste
       ListBox1.Items.Add(UneDesDatesAcomparer)
      Next
      '
      Do While myReader.Read()
       For i = 0 To ListBox1.Items.Count - 1 ' lit liste
        If DateTimePickerCaissePD.Text = ListBox1.Items(i) Then
         MsgBox("Ok")
        Else
         MsgBox("Faux")
        End If
       Next i
      Loop

    J'ai un gros doute, j'ai l'impression que tu veux comparer les dates de ta base avec les dates de ta base préalablement chargées en liste ?

    Si mes réponses te sont utiles, tu peux cliquer dans le rectangle en haut à gauche de cette réponse, où il y a un triangle vert.

    Cordialement.


    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Proposé comme réponse EhJoe mardi 8 juin 2010 18:33
    mardi 8 juin 2010 18:33
  • Bonjour,

    En faite voici le code que j'ai tapé:

      Dim nbreligneListe As Integer
            Dim valeurindex As String
            Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Projet de mise a jour\Basededonnées\Edson80.mdb;") 'Définition de la connexion
            Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand() 'générer la connexion
            Mycommand.CommandText = "SELECT Fi_Bordereau.F_Dateb FROM Fi_Bordereau ;" 'Requête permettant de récupérer tous les champs de la table Fi_Client
            MyConnexion.Open()
            Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
            '----------------- Recherche de la donnée ----------------
            Do While myReader.Read()
                ListBoxAfficheDate.Items.Add(myReader.GetDateTime(0)) 'affiche la rubrique lue dans la zone liste
            Loop
            Dim i As Integer
            nbreligneListe = ListBoxAfficheDate.Items.Count 'Nombre de ligne du listBox
            On Error Resume Next
            For i = 1 To nbreligneListe
                valeurindex = ListBoxAfficheDate.Items(i) 'Valeur de l'index

                If DateTimePickerCaissePD.Text = valeurindex Then
                    strConn = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Projet de mise a jour\Basededonnées\Edson80.mdb;"
                    strSql = "SELECT Distinct Fi_Bordereau.F_numbord, Fi_Bordereau.F_numclib, " & _
                             "Fi_Bordereau.F_nomclib, Fi_Bordereau.F_prenclib, Fi_Bordereau.F_libelPb, " & _
                             "Fi_Bordereau.F_coutPb, Fi_Bordereau.F_numopb, Fi_Bordereau.F_nomopb, " & _
                             "Fi_Bordereau.F_prenopb, Fi_Bordereau.F_Dateb, Fi_Bordereau.F_partAPb, Fi_Bordereau.F_partAssrPb, " & _
                             "Fi_Bordereau.F_ModeRgltb, Fi_Bordereau.F_NomTierceb " & _
                             "FROM Fi_Bordereau ";
                    Connect = New OleDbConnection() 'Instanciation d'un Objet Connexion
                    Connect.ConnectionString = strConn 'Donner à la propriété ConnectionString les paramètres de connexion
                    Comd = New OleDbCommand(strSql) 'Instancier un objet Commande
                    DataAdap = New OleDbDataAdapter(Comd) 'Instancier un objet Adapter
                    Comd.Connection() = Connect 'initialiser l'objet Command
                    Comd = New OleDbCommand(strSql) 'Instancier un objet Commande
                    Connect.Open()
                    DataAdap.Fill(DatTable)
                    Fi_BordereauDataGridView_Assure.DataSource = DatTable
                    Connect.Close()

                End If

            Next

    je vous dit en faite ce que je veux faire.

    je saisi une date dans un dataTimePicker.il me récupère la date et il fait une comparaison avec les différentes date afficher dans le ListBox.Et lorsqu'il trouve une date qui correspond, il m'affiche les infos concernant cette date dans un datagridview;Uniqement que les infos concernant cette date. Mais mon code ne semble pas marcher car il m'affiche tous les champs de ma table. c'est là que se trouve mon problème !?

    N.B. J'éssai le code que tu m'as fait parvenir

    Cordialement

    mercredi 9 juin 2010 11:23
  • Bonjour,

     

    Vérifiez votre requête ‘select distinct’ dans la condition

    If DataTimePickerCaissePD.Text = valeurindex…

    car j’ai l’impression qu’elle vous retourne toutes les éléments de la table. Vous n’avez mis aucune condition dans cette requête, donc elle retourne tout, même si vous l’appelez une seule fois, quand l’égalité d’IF est vérifiée. Essayez de tester la requête directement dans la base de donnes Access.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    vendredi 11 juin 2010 10:02