OVH Cloud OVH Cloud

Resultat d'une requete dans une variable

5 réponses
Avatar
Machros
Bonjour,

Je cherche d=E9sesp=E9r=E9ment a r=E9cup=E9rer dans une variable le r=E9sul=
ta
d'une requ=EAte.
J'arrive a l'afficher dans une zone de liste (le r=E9sulta de ma
requ=EAte) mais pas a le r=E9cup=E9rer dans une variable. Je suis pourtant
sur le m=EAme formulaire.

Merci pour l'aide que vous pourriez m'apporter.
Machros

5 réponses

Avatar
Eric
Bonjour Machros,

En utilisant la méthode DAO GetRows qui permet de récupérer dans une
variable Variant (il s'agit d'un tableau) les enregistrements d'un
recordset. Il est possible de préciser le nb d'enregistrements à récupérer.

Exemple basé sur une requête sur un champ mais on peut faire la requête
sur plus d'un champ évidemment.

Pour plus d'infos, voir l'aide en ligne.

Sub zz()
Dim rst As DAO.Recordset, varArray As Variant, i as Long
Set rst = CurrentDb.OpenRecordset("select LeChamp from LaTable")
With rst
.MoveLast: .MoveFirst 'pour connaitre le .RecordCount
varArray = .GetRows(.RecordCount)
End With
For i = 0 To UBound(varArray, 2) + 1
Debug.Print varArray(0, i)
Next i
End Sub

PS : Ajouter aux références du Projet, la référence Microsoft DAO 3.x
Object Library

Bonjour,

Je cherche désespérément a récupérer dans une variable le résulta
d'une requête.
J'arrive a l'afficher dans une zone de liste (le résulta de ma
requête) mais pas a le récupérer dans une variable. Je suis pourtant
sur le même formulaire.

Merci pour l'aide que vous pourriez m'apporter.
Machros



--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
3stone
Salut,

"Machros"
Je cherche désespérément a récupérer dans une variable le résulta
d'une requête.
J'arrive a l'afficher dans une zone de liste (le résulta de ma
requête) mais pas a le récupérer dans une variable. Je suis pourtant
sur le même formulaire.



Si tu parle de récupérer dans une liste, j'en déduis que tu as plusieurs
champs et plusieurs enregistrements ?

Si non (tu as donc un seul champ et un enregistrement)

mavar = Dlookup("lechamp","larequête")


si oui (tu as plusieurs champs et enregistrements)

- être sûr que c'est le meilleur moyen de faire le traitement recherché ;-)
ensuite
- DIMmensionner un variable tableau
- ouvrir un recordset basé sur ta requête
- compter les champs (fields.count)
- compter le nombre de record (recordcount)
- REDIMmensionner ton tableau aux valeurs trouvées
- y pousser les valeurs par une double boucle imbriquée


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Eric
.../...

Erreur !!!
Remplacer :
For i = 0 To UBound(varArray, 2) + 1
par :

For i = 0 To UBound(varArray, 2)



--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
Bonsoir Pierre,

si oui (tu as plusieurs champs et enregistrements)

- être sûr que c'est le meilleur moyen de faire le traitement recherché ;-)
ensuite
- DIMmensionner un variable tableau
- ouvrir un recordset basé sur ta requête
- compter les champs (fields.count)
- compter le nombre de record (recordcount)
- REDIMmensionner ton tableau aux valeurs trouvées
- y pousser les valeurs par une double boucle imbriquée


Trop long ça, Pierre !!! GetRows fait le travail pour toi ;-)

--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Machros
Merci a vous deux.
J'ai utilisé la méthode de pierre (mavar =
Dlookup("lechamp","larequête")) pour mon probléme.
Mais celle d'Eric m'a servie sur un autre formulaire.
Merci, j'ai cherché pendant longtemps.

Vive les pro !