L
Ludo-ly
Guest
Bonjour à tous,
J'essaye d'automatiser au maximum un formulaire dont les Listbox (9 au total) sont remplies grâce à des requêtes Access.
La méthode fonctionne :
' Déclarations
Dim Db As Database
Dim Rs1, Rs2, Rs3, Rs4, Rs5, Rs6, Rs7, Rs8, Rs9 As Recordset
Dim Produit(), Fournisseurs(),...,Paiement() As Variant
'Ouverture d'une BD
Set Db = DBEngine.OpenDatabase("BD des ventes")
Set Rs1 = Db3.OpenRecordset("Req_Liste_Produits")
Set Rs2 = Db3.OpenRecordset("Req_Liste_Fournisseurs")
...
Set Rs9 = Db3.OpenRecordset("Req_Liste_Type_Paiement")
' Calcul du nombre d'enregistrements retourné par la requête SQL/Access
' reproduit 9 fois de Rs1 à Rs9
nb_enr(0) = Rs1.RecordCount
...
nb_enr(8) = Rs9.RecordCount
' remplissage des Listbox reproduit 9 fois de Rs1 à Rs9
j = 0
ReDim Produits(nb_enr(1), 2)
If Not Rs1.EOF Then
Rs1.MoveFirst
Do
Produits(j, 0) = (Rs1![Code Produits])
Produits(j, 1) = (Rs1![Libellé Produits])
Rs1.MoveNext
j = j + 1
Loop Until Rs1.EOF
End If
...
Maintenant, afin de raccourcir et d'automatiser mon code au maximum, j'aimerais utiliser des variables tableaux à la place des Rs1 à Rs9 et des noms de Listbox Produits à Payment
J'ai essayé ceci mais cela ne fonctionne pas au niveau recordset :
' Déclarations
Dim TableRs() as RecordSet
' Calcul du nombre d'enregistrements retourné par la requête SQL/Access
ReDim nb_enr(9)
ReDim TableRs(9)
For i = 0 To 9
TableRs(i) = "Rs" & i
Next i
For j = 1 To 9
TableRs(j).MoveLast
nb_enr(j) = TableRs(j).RecordCount
Next j
Quelqu'un aurit-il une solution pour utiliser une variable incrémentable comme nom de recordset plutôt que d'avoir à réécrire autant de fois que de recordset toutes les lignes contenant "Rs..." ?
Ludovic,
Merci.
J'essaye d'automatiser au maximum un formulaire dont les Listbox (9 au total) sont remplies grâce à des requêtes Access.
La méthode fonctionne :
' Déclarations
Dim Db As Database
Dim Rs1, Rs2, Rs3, Rs4, Rs5, Rs6, Rs7, Rs8, Rs9 As Recordset
Dim Produit(), Fournisseurs(),...,Paiement() As Variant
'Ouverture d'une BD
Set Db = DBEngine.OpenDatabase("BD des ventes")
Set Rs1 = Db3.OpenRecordset("Req_Liste_Produits")
Set Rs2 = Db3.OpenRecordset("Req_Liste_Fournisseurs")
...
Set Rs9 = Db3.OpenRecordset("Req_Liste_Type_Paiement")
' Calcul du nombre d'enregistrements retourné par la requête SQL/Access
' reproduit 9 fois de Rs1 à Rs9
nb_enr(0) = Rs1.RecordCount
...
nb_enr(8) = Rs9.RecordCount
' remplissage des Listbox reproduit 9 fois de Rs1 à Rs9
j = 0
ReDim Produits(nb_enr(1), 2)
If Not Rs1.EOF Then
Rs1.MoveFirst
Do
Produits(j, 0) = (Rs1![Code Produits])
Produits(j, 1) = (Rs1![Libellé Produits])
Rs1.MoveNext
j = j + 1
Loop Until Rs1.EOF
End If
...
Maintenant, afin de raccourcir et d'automatiser mon code au maximum, j'aimerais utiliser des variables tableaux à la place des Rs1 à Rs9 et des noms de Listbox Produits à Payment
J'ai essayé ceci mais cela ne fonctionne pas au niveau recordset :
' Déclarations
Dim TableRs() as RecordSet
' Calcul du nombre d'enregistrements retourné par la requête SQL/Access
ReDim nb_enr(9)
ReDim TableRs(9)
For i = 0 To 9
TableRs(i) = "Rs" & i
Next i
For j = 1 To 9
TableRs(j).MoveLast
nb_enr(j) = TableRs(j).RecordCount
Next j
Quelqu'un aurit-il une solution pour utiliser une variable incrémentable comme nom de recordset plutôt que d'avoir à réécrire autant de fois que de recordset toutes les lignes contenant "Rs..." ?
Ludovic,
Merci.