Bonjour,
Je voudrais remplir un arraylist avec les données d'une table de spécialités (contenant simplement deux champs : id et nom), je le fais de cette manière :
Dim cnx As New SqlClient.SqlConnection()
cnx.ConnectionString = PouponniereClasses.My.Settings.Connexion
Dim spec As Specialite = New Specialite
Dim ligne As SqlClient.SqlDataReader
Dim listspe As New SqlClient.SqlCommand()
listspe = New SqlClient.SqlCommand("ListeSpecialites", cnx)
listspe.CommandType = CommandType.StoredProcedure
cnx.Open()
Lspe.Clear()
ligne = listspe.ExecuteReader
While ligne.Read
spec.Id = ligne(0)
spec.leNom = ligne(1)
Lspe.Add(spec)
End While
ligne.Close()
cnx.Close()
Ensuite on parcourt cet arraylist pour afficher les n éléments dans une listbox par exemple, en gros comme ça :
Dim i As Integer ' compteur
Dim spec As New Specialite 'classe des éléments de la liste
For i = 0 To (liste.nbElements - 1)
spec = liste.renvoieElement(i)
lb_specialite.Items.Add(spec.leNom)
Next i
avec le 'renvoieElement' suivant :
Public Function renvoieElement(ByVal index As Integer)
Dim spe As New Specialite
Try
spe = Lspe(index)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Erreur : ")
End Try
Return spe
End Function
Mon problème, c'est que dans la listbox en question j'affiche n fois le dernier élément de la liste au lieu d'avoir les n éléments différents!
Du coup, je ne sais pas si le problème est à l'enregistrement des données dans l'arraylist ou à la lecture... ou les 2...
J'ai déjà essayé de renvoyer uniquement les champs de l'élément et pas l'élément en entier, j'ai aussi essayé ByRef pour le paramètre 'index' dans renvoieElement, rien n'y fait. Pourtant, je sens qu'il y a une histoire de passage de paramètre par référence là-dessous mais ça me donne des sueurs froides !![]()
Quelqu'un aurait une piste?
Partager