Requete Sql sous access

Signaler
Messages postés
39
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
12 février 2009
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

Benoit PIECQ

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
39
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
12 février 2009

je te remerci
je test et je vous di quoi..
(que le courier est bien arrivée... dixit kad benvenu chey les ch'ti)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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")
Messages postés
39
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
12 février 2009

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
Messages postés
39
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
12 février 2009

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...
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)