IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Comment exécuter une requête en VBA ?


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 114
    Points : 60
    Points
    60
    Par défaut Comment exécuter une requête en VBA ?
    Bonjour,
    j'ai une question toute bête à poser. Je ne me rappelle plu comment faire pour exécuter une requête SQL en VBA.

    Merci de votre aide.

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Salut,

    si j'ai compris c'est ca: RunSQL, non?
    avec le DoCmd et puis le F1 de VBA ca devrait passer!

  3. #3
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    c'est bon sauf pour une requête Sélection ..
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  4. #4
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 114
    Points : 60
    Points
    60
    Par défaut
    justement j'ai besoin des requêtes de sélection. est-ce que ça c'est bon ?

    CurrentDb.execute "requete"

  5. #5
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 114
    Points : 60
    Points
    60
    Par défaut
    J'ai trouvé une façon de faire mais quelqu'un peut-il me dire pourquoi je ne visualise aucun résultat ?


    Private Sub theme1CP_Change()
    Dim rs As DAO.Recordset

    sql = "SELECT "
    Set rs = CurrentDb.OpenRecordset(sql)
    theme1CP.Text = rs.Fields
    End Sub

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Citation Envoyé par rob2-9
    J'ai trouvé une façon de faire mais quelqu'un peut-il me dire pourquoi je ne visualise aucun résultat ?


    Private Sub theme1CP_Change()
    Dim rs As DAO.Recordset

    sql = "SELECT "
    Set rs = CurrentDb.OpenRecordset(sql)
    theme1CP.Text = rs.Fields
    End Sub
    Primo, merci d'utiliser les balises CODE (bouton #)

    Secundo, Fields est la collection des champs et non pas une valeur ...

    Tercio, très étrange de mettre ce code sur l'événement Change du contrôle dont tu veux modifier la valeur ... ça fait un peu serpent qui se mord la queue ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub theme1CP_Change()
    Dim rs As DAO.Recordset
    
    sql = "SELECT MonChampQueJeVeux FROM MaTable WHERE MonCritereNumerique = 12 And MonCritereTexte = 'toto'"
    Set rs = CurrentDb.OpenRecordset(sql)
    theme1CP.Text = rs.Fields("MonChampQueJeVeux").Value
    rs.Close
    
    Set rs = Nothing
    End Sub
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  7. #7
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 114
    Points : 60
    Points
    60
    Par défaut
    merci beaucoup pour cette réponse. Effectivement en recopiant j'ai oublié de mettre que l'action était au load du form.

    J'ai encore un souci dans mon code : j'ai un message d'erreur qui apparaît quand j'exécute mon code (Sub ou fonction non définie sur le sum).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Load()
    Dim rs As DAO.Recordset
     
    sql = "SELECT Sum([Dossier].[MontantSubventionnable]) AS Montant_subventionnable FROM dossier, CP WHERE (((Dossier.NatureTravaux1ASST)='Réhabilitation de réseau') AND ((CP.DateCommission) Is Null));"
    Set rs = CurrentDb.OpenRecordset(sql)
    theme1CP.Text = rs.Fields(Sum([dossier].[MontantSubventionnable])).Value
    rs.Close
     
    Set rs = Nothing
    End Sub

  8. #8
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 114
    Points : 60
    Points
    60
    Par défaut
    Aidez-moi svp? Je suis totalement perdu. Je ne trouve pas la façon correcte pour pouvoir obtenir le résultat que je veux dans ma case.

    J'ai essayé de mettre rs.Fields(0) comme en Vb mais sans succès.
    j'ai vraiment besoin d'aide.

    Merci

  9. #9
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Mon conseil : ton SQL n'est pas valide ... repasse par le QBE (mode interfacé) pour refaire ta requête ...

    . pas de lien entre tes deux tables CP et Dossier
    . SUM sans clause GROUP BY (étrange quand même ...)

    et pour cette ligne aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    theme1CP.Text = rs.Fields(Sum([dossier].[MontantSubventionnable])).Value
    N'utilise pas .Text mais .Value
    Utilise plutôt le nom de ton champ plutôt que sa formule ...
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  10. #10
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 114
    Points : 60
    Points
    60
    Par défaut
    Merci beaucoup tu m'as bien aidé en me disant cela. Le problème principal était le .value.

    Il me reste encore un souci, c'est que le total que j'obtiens dans mon formulaire n'est pas le même que lorque j'exécute ma requête dans l'exécuteur de requêtes.

    Si je mets un group by je n'arrive pas à avoir un seul résultat j'en ai plusieurs donc où placer le group by ?

    merci

  11. #11
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Citation Envoyé par rob2-9
    Merci beaucoup tu m'as bien aidé en me disant cela. Le problème principal était le .value.

    Il me reste encore un souci, c'est que le total que j'obtiens dans mon formulaire n'est pas le même que lorque j'exécute ma requête dans l'exécuteur de requêtes.

    Si je mets un group by je n'arrive pas à avoir un seul résultat j'en ai plusieurs donc où placer le group by ?

    merci
    bis : refais ta requête en mode QBE (interface graphique) ! ça reste un des meilleurs moyen pour déboguer
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  12. #12
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 114
    Points : 60
    Points
    60
    Par défaut
    Merci pour l'aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/12/2009, 15h17
  2. comment exprimer une requête en vba
    Par FRIGAUX dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/03/2007, 18h40
  3. Réponses: 5
    Dernier message: 08/01/2007, 21h03
  4. [ADO.Net][C#/Mysql] Comment exécuter une requête paramétrée?
    Par wremacle dans le forum Accès aux données
    Réponses: 6
    Dernier message: 07/02/2006, 16h55
  5. Comment exécuter une requête rapidement
    Par kardevlop dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/10/2005, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo