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 imbriquer des requêtes SQL en VBA [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut Comment imbriquer des requêtes SQL en VBA
    Bonjour,

    Bonjour,

    J’aimerai savoir s’il est possible d’imbriquer des requêtes SQl en VBA.
    Mon souci et de réduire le nombre de requêtes SQL de l’application. Actuellement j’en ai une cinquantaine et ce n’est pas fini. Je trouve que cela fait beaucoup.

    J’ai lu ce lien et je ne comprends pas comment l’appliquer.
    Ci-dessous les requête en question :
    1)Requête SQL : rqyMois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PARAMETERS [Forms]![frmStatsmois]![MoisD] Value, [Forms]![frmStatsmois]![AnneeD] Value, [Forms]![frmStatsmois]![MoisF] Value, [Forms]![frmStatsmois]![AnneeF] Value;
    SELECT tblAnnee.An, tblMois.Mois, Format([Mois] & "/" & [An],"yyyy/mm") AS M
    FROM tblMois, tblAnnee
    WHERE (((Format([Mois] & "/" & [An],"yyyy/mm")) Between Format([Forms]![frmStatsmois]![MoisD] & "/" & [Forms]![frmStatsmois]![AnneeD],"yyyy/mm") And Format([Forms]![frmStatsmois]![MoisF] & "/" & [Forms]![frmStatsmois]![AnneeF],"yyyy/mm")))
    ORDER BY tblAnnee.An, tblMois.Mois;
    2)Requête SQL: rqyQtéProdMois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PARAMETERS [Formulaires]![frmStatsmois]![idCompteProd] Short;
    SELECT Format([tblProduction]![DateProduction],"yyyy/mm") AS M, tblMachine.NomMachine, Sum(tblProductionQte.Qté) AS Qté
    FROM ((tblMachine INNER JOIN tblProduction ON tblMachine.Idmachine = tblProduction.idMachine) INNER JOIN (tblCompteProduction INNER JOIN tblProduit ON tblCompteProduction.IdCompteProd = tblProduit.idCompteProd) ON tblMachine.Idmachine = tblProduit.Idmachine) INNER JOIN tblProductionQte ON (tblProduit.IdProduit = tblProductionQte.Idproduit) AND (tblProduction.Idproduction = tblProductionQte.Idproduction)
    WHERE (((tblCompteProduction.IdCompteProd)=[Formulaires]![frmStatsmois]![idCompteProd]))
    GROUP BY Format([tblProduction]![DateProduction],"yyyy/mm"), tblMachine.NomMachine
    ORDER BY Format([tblProduction]![DateProduction],"yyyy/mm"), tblMachine.NomMachine;
    3)Requête SQL: rqyQtéProdGraphMois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT rqyMois.M AS Mois, rqyQtéProdMois.NomMachine, rqyQtéProdMois.Qté AS Qté
    FROM rqyMois LEFT JOIN rqyQtéProdMois ON rqyMois.M = rqyQtéProdMois.M;
    4)Requête VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sql = "TRANSFORM NZ(Sum(rqyQtéProdGraphMois.Qté),0) AS SommeDeQté SELECT rqyQtéProdGraphMois.Mois,"
     sql = sql & " Sum(rqyQtéProdGraphMois.[Qté]) AS [Total A + AL], Sum(IIf([NomMachine]<> '" & "Hercule" & "',[Qté])) AS [Total A]"
     sql = sql & " FROM rqyQtéProdGraphMois GROUP BY rqyQtéProdGraphMois.Mois PIVOT rqyQtéProdGraphMois.NomMachine;"
    Merci d'avance de votre aide

    Christian

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 391
    Points : 19 816
    Points
    19 816
    Billets dans le blog
    66
    Par défaut
    Bonjour Christian,

    Comme cela a déjà été dit sur le forum, les requêtes enregistrées ont plusieurs avantages :

    Niveau lisibilité du code elles permettent de nettement simplifier le code final, et donc de faciliter sa réalisation, sa relecture et sa modification ...

    Autre avantage, normalement une requête enregistrée une fois le projet compilé est plus rapide qu'une requête qui ne l'est pas :
    http://access.developpez.com/faq/?page=SQL#PerfReq

    A+

  3. #3
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut
    Bonjour Denis,

    Merci pour l'info.
    C'est vrais qu'une requête enregistrer est plus lisible, mais je pensais pas qu'elle était plus rapide après compilation. J'ai mal lu les Tutos.......

    Je viens de terminer tous les graphiques que l'on m'a demandé (168 différents graphiques). J'ai utilisé une trentaine de requête et 6 types de formulaire et un seul état.

    Voilà, grâce à ton aide j'ai pu m'en sortir. Si tu désires voir l'application, n'hésites pas.

    Milles fois merci.

    @ bientôt

    Christian

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 759
    Points : 57 830
    Points
    57 830
    Billets dans le blog
    42
    Par défaut
    bonjour Christian, User,

    comme tu utilises Access2007, tu peux aussi organiser tes objets (tables, requêtes, formulaires, états,...) dans le volet de navigation en créant des catégories personnalisées.

    voir Afficher et gérer des objets à l'aide du volet de navigation

  5. #5
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut
    Bonsoir F-leb,

    Content de te lire....
    C'est vrais avec Access 2007.
    Mais l'application doit fonctionner sous Access 2007 et 2003, avec la même base dorsale et 2 bases frontales (2007 et 2003).

    Grâce à vous et au site, j'ai beaucoup avancé.
    Il y a 8 mois, j'étais dans les choux..........

    A bientôt

    Christian

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

Discussions similaires

  1. Comment enchaîner des requêtes SQL
    Par AODRENN dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/05/2007, 14h47
  2. Réponses: 6
    Dernier message: 15/02/2007, 13h46
  3. Réponses: 7
    Dernier message: 31/08/2006, 18h03
  4. Récupérer la valeur des champs calculés dans une requète SQL dans vba
    Par FrédéricCM dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/06/2006, 16h29
  5. [MFC] comment écrire des requêtes SQL
    Par kitsune dans le forum MFC
    Réponses: 9
    Dernier message: 27/09/2005, 15h23

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