Bonjour a toutes et a tous les programeurs(ses),
Je suis en 2eme année de bts informatique de gestion
Je cherche a executer une requete sql sous access(dans le cpode VBA) etarecuperer le resultat de ma requete dans une variable Nommé HeureFin
voici la requete
ReqSql = "select Max(HeureArrivée) from TableTrajet"
Je voudrai recuperer le resultats de cette requete dans ma variable HeureFin declaré en chaine
J'ai essayer de faire
HeureFin=DoCmd.RunSQL (ReqSql)
mais ca ne fonctionne pas
merci d'avance
Salut
Je n'ai pas trop l'expérience de la programmation VBA sous Access, mais je pense que DoCmd renvoie un objet de type RecordSet.
Il te faut donc déclarer un RecordSet, puis parcourrir les enregistrements (si la réponse est multiple) et récupérer ta valeur.
Exemple classique :
Dim monRecordSet As Recordset
monRecordSet = DoCmd.RunSQL("Select * from maTable")
If monRecordSet.RecordCount > 0 Then
monRecordSet.MoveFirst
Do While Not monRecordSet.EOF
MsgBox monRecordSet.Fields(0).Value
monRecordSet.MoveNext
Loop
End If
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Oups, pardon, je t'ai mal aiguillé.
Il faut oublier le DoCmd pour les ordre pouvant renvoyer des infos.
A remplacer par
monRecordSet.OpenRecordset ("Select * from maTable")
apaprament ca ne fonctionne pas
Access ne pren pas en compte DoCMD.RunSQL
Impossible de réaliser l'execution
Ma requete me renvoi un champ unique
est ce que ca change la donne?
Merci
Benoit PIECQ
Bon apparament meme avec les modif' apportée le code ne s'execute toujours pas...
Je c'est que c'est fesable vu qu'en cours on le fait mais comment je ne me rappelle pu...
Merci de l'aide Jack...
Mais pour l'instant je desespere...
Que ta requète renvoie un champ unique ou plusieurs ne change rien. Il faut de toute façon passer par un objet de stockage = RecordSet.
Que se passe t-il quand tu dimensionnes Dim monRecordSet As RecordSet ?
(est-ce que VBA reconnait l'objet RecordSet)
Si oui, je ne voit pas pourquoi il refuserait de faire une requète
(... reflechissement Jean-Pierre ...)
L'exemple donné est du ADO qui est obsolète.
Mieux vaut passer par ADODB :
Dim monRecordSet As ADODB.Recordset
monRecordSet.Open maRequeteSQL, CurrentDb
devrait fonctionner
Si tu es sensé l'avoir vu en cours, questionne tes collègues ou remets le nez dans tes notes, sans oublier la touche F1 du VBA de Access.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)