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 :

Utiliser du code SQL dans VBA [Débutant(e)]


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Par défaut Utiliser du code SQL dans VBA
    Bonjour,
    Je travaille actuellement sous Access et je réalise des formulaires dans lequel
    j'ai créé des listes déroulantes permettant de choisir une date de début et
    une date de fin.
    Grâce à ces dates, je réalise en VBA, une requête sql sur une table. Je ne
    conserve alors que les enregistrements de cette période.
    A partir de la table obtenue, je souhaite refaire une autre requête qui elle devra s'afficher.
    Mon problème est que je ne sais pas comment faire pour que ma deuxième requête
    tienne compte des enregistrements de la première.
    Voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       sql = "SELECT LPP.Code, LPP.Qté, LPP.date
              FROM LPP           
              WHERE (([LPP].[date]) <= date_fin And ([LPP].date]) >= (date_dbt))
              ORDER BY LPP.Code; "
       sql = "SELECT req1.Code, T_LPP.[Libellé LPP], Sum(req1.Qté) AS SommeQté 
              FROM req1
              INNER JOIN T_LPP ON req1.Code =T_LPP.Code 
              GROUP BY req1.Code, T_LPP.[Libellé LPP], T_LPP.HS06 
              HAVING (((T_LPP.HS06) = 0)) ORDER BY Sum( req1.Qté) DESC;"
     
     
    Me.results_dmi.RowSource = sql
    Me.results_dmi.Requery
    En fait je ne sais pas comment dire que "req1" correspond à la table obtenue dans la 1ère requête.
    Merci d'avance pour votre aide.

    P.S. : Je m'adresse à vous car j'ai déjà posé cette question au forum VBA où on m'a conseillé d'aller dans le forum sql qui dit qu'il est préférable de
    s'adresser au forum access...!!!

  2. #2
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    Tu pourrais par exemple creer une requete temporaire avec CreateQueryDef (me semble-t-il) et baser ta seconde requete sur cette premiere requete.

    Ou sinon peux-etre pourrais-tu essayer quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     req1 = "SELECT LPP.Code, LPP.Qté, LPP.date
              FROM LPP           
              WHERE (([LPP].[date]) <= date_fin And ([LPP].date]) >= (date_dbt))
              ORDER BY LPP.Code; "
       sql = "SELECT req1.Code, T_LPP.[Libellé LPP], Sum(req1.Qté) AS SommeQté 
              FROM ("& req1 &") req1
              INNER JOIN T_LPP ON req1.Code =T_LPP.Code 
              GROUP BY req1.Code, T_LPP.[Libellé LPP], T_LPP.HS06 
              HAVING (((T_LPP.HS06) = 0)) ORDER BY Sum( req1.Qté) DESC;"
    Je ne me souviens plus si c'est possible en Access et je n'ai pas le logiciel sous la main pour tester.

    Bon courage a toi.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Par défaut
    Bonjour,

    je te conseil de passer par une sous requête

    Exemple:
    Rqt1 = select * from table
    Rqt2 = Select * from Rqt1

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Par défaut
    J'ai déjà essayé cette solution là mais il me semble que ça ne fonctionnait pas.
    Je vais réesssayer et voir pour les requêtes temporaires.
    Merci, je vous tiens au courant.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Par défaut
    En fait, je viens de me rendre compte d'un autre soucis : la requête que j'ai
    nommé "sql" ne fonctionne pas. Je ne comprend pas car j'ai copié le code sql de la requête QBE.

    Comment est ce possible que ce sql ne fonctionne pas quand j'utilise VBA?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sql = "SELECT req1.Code, T_LPP.[Libellé LPP], Sum(req1.Qté) AS SommeQté 
           FROM ("& req1 &") req1
           INNER JOIN T_LPP ON req1.Code =T_LPP.Code 
           GROUP BY req1.Code, T_LPP.[Libellé LPP], T_LPP.HS06 
           HAVING (((T_LPP.HS06) = 0)) ORDER BY Sum( req1.Qté) DESC;"

  6. #6
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    Je t'ai dit que je n'etais pas sur que ceci fonctionne, c'est peut etre donc le cas :
    Apres ta ligne mets un Et teste la requete dans le QBE.

    En esperant t'aider.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Par défaut
    ça ne fait rien du tout!
    A quoi sert le :
    ?

  8. #8
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    A afficher quelque chose dans la fenetre d'execution, quasiment indispensable pour faire des testes au long du developpement

    Quelques info dans la FAQ.

    Bonne continuation.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/05/2008, 18h43
  2. 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
  3. Projet VB v6 : utilisation de requête SQL dans mon code
    Par MITCH31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/10/2005, 15h02
  4. [PL/SQL] Utilisation table PL/SQL dans clause IN
    Par Yorglaa dans le forum PL/SQL
    Réponses: 13
    Dernier message: 05/10/2004, 10h36
  5. [CR] Utilisation de codes à barres dans crystal
    Par franck.cvitrans dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 29/06/2004, 08h48

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