Benythefrog
Messages postés39Date d'inscriptionlundi 12 janvier 2009StatutMembreDernière intervention12 février 2009
-
21 janv. 2009 à 14:21
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
21 janv. 2009 à 20:36
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
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 21 janv. 2009 à 15:15
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)
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 21 janv. 2009 à 15:19
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")
Benythefrog
Messages postés39Date d'inscriptionlundi 12 janvier 2009StatutMembreDernière intervention12 février 2009 21 janv. 2009 à 15:22
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Benythefrog
Messages postés39Date d'inscriptionlundi 12 janvier 2009StatutMembreDernière intervention12 février 2009 21 janv. 2009 à 15:44
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...
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 21 janv. 2009 à 20:36
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)