SQL, recordset... problème de variable

  • Initiateur de la discussion Razy
  • Date de début
R

Razy

Guest
Bonjour,

Je souhaite créer une procédure qui me lit tous les enregistrements d'une table en fonction d'une requete que je donne. Seulement, je ne sais pas comment transférer via ma variable 'champ' le champ de la table en question. Qq'un peut m'aider? Merci.
Voici la procédure

Public Sub SQLrequest(rec As Recordset, requete As String, combo As ComboBox, champ As String)

Dim chSQL As String
Dim n As Long
Dim v() As Variant

chSQL = requete

Set rec = db.OpenRecordset(chSQL, dbOpenDynaset)

If rec.RecordCount < 1 Then GoTo SQLrequest_Exit

rec.MoveFirst
n = 0
While Not rec.EOF
ReDim Preserve v(n)
v(n) = rec![champ]
combo.AddItem v(n)
n = n + 1
rec.MoveNext
Wend

SQLrequest_Exit:
On Error Resume Next
rec.Close
Set rec = Nothing

End Sub
 
L

Ludo-ly

Guest
Voici le code vba sous excel que j'utilise pour importer des données d'access en passant par une requête et en chosissant le champ que je désire importer :
' champ contiendra le nom du champ à importer (ex. : Libellé Fonction)
champ = "Libellé Fonction"
i = 3
With Rs
If Not .BOF Then .MoveFirst
End With

With Rs
While Not .EOF
' Boucle permettant d'importer chaque valeur du champ de tous les enregistrements dans chaque colonne de la ligne 15 (en partant de la colonne 3 (i)
Worksheets(Feuille_Maj).Cells(15, i).Value = .Fields(Champ)
.MoveNext
i = i + 1
Wend
End With

'Fermeture de l'objets Access Rs
Rs.Close

--------
A partir de là, je pense que tu peux t'inspirer de ce cas pour l'appliquer à ton cas comme par exemple faire :
v(n) = .Fields(Champ)
-------
Sinon, pour une listbox j'avais procédé ainsi :
i = 0
If Not Rs.EOF Then
Rs.MoveFirst
Do
Fonction(i, 0) = (Rs![Code Fonction])
Fonction(i, 1) = (Rs![Libellé Fonction])
Rs.MoveNext
i = i + 1
Loop Until Rs.EOF
End If


Voilà,
J'espère que cela t'aidera.
Ludovic.
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 049
Membres
104 012
dernier inscrit
baffyt2