Import de données SQL dans une listbox à plusieurs colonnes
Bonjour.
Je souhaiterais récupérer des enregistrements sur base de données SQL et les insérer dans une listbox de plusieurs colonnes.
Etant débutant en VBA, j'ai du mal a élaborer le code qui me conviendrait.
J'ai une table contenant 42 colonnes, et une listbox de 43 colonnes (pour compter le nombre d'enregistrement)
Mon code actuel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| Dim req1 As String, req2 As String
Dim nbreg As Integer
Dim i As Integer, j As Integer
Dim connect As Boolean
Dim rs1 As New ADODB.Recordset, rs2 As New ADODB.Recordset
Dim tab1(41) As String
Private Sub CommandButton1_Click()
UserForm4.ListBox1.ColumnCount = 43
req1 = "SELECT count(*) from [" & TL2 & "] ;"
With rs1
.CursorLocation = adUseServer 'curseur coté serveur
.CursorType = adOpenForwardOnly 'type de curseur
.LockType = adLockReadOnly 'option de curseur
.Open req1, cnx, adOpenStatic 'exécution de la requête SQL
nbreg = .Fields(0).Value 'récupération de l'enregistrement
.Close
End With
req2 = "select * from [" & TL2 & "]"
With rs2
.CursorLocation = adUseServer 'curseur coté serveur
.CursorType = adOpenForwardOnly 'type de curseur
.LockType = adLockReadOnly 'option de curseur
.Open req2, cnx, adOpenStatic 'exécution de la requête SQL
For i = 1 To (nbreg)
UserForm4.ListBox1.AddItem "N°" & i
For j = 0 To 41
tab1(j) = .Fields(j).Value 'récupération de l'enregistrement
UserForm4.ListBox1.List(i - 1, j + 1) = tab1(j)
Next j
Next i
.Close
End With
End Sub |
Mon problème se situe au niveau de la récupération des données.
Le premier hic est que j'ai pu constater avec l'aide d'une msgbox que tab1() n'enregistre que la première ligne de la table SQL.
=> Comment puis-je récupérer l'ensemble des données de la table? (j'ai pensé à un tableau à deux dimensions, mais je ne sais pas comment le mettre en oeuvre avec le recordset)
Ensuite, la ligne
Code:
UserForm4.ListBox1.List(i - 1, j + 1) = tab1(j)
me retourne l'erreur "Invalid property value", et je ne sais pas trop à quoi elle correspond :s
(je soupsonne également req2 de ne pas être la meilleure solution.)
Toute aide étant la bienvenue, merci d'avance :)