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.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 11
    Points
    11
    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 chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    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 du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 41
    Points
    41
    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 à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 11
    Points
    11
    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 à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 11
    Points
    11
    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 chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    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 à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    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.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 11
    Points
    11
    Par défaut
    oui je viens de le voir mais en fait ça m'a réécris 2 fois la ligne sql avec pour seule différence entre les 2 :

    FROM ( ) Dmi_date .......
    FROM Dmi_date .......

    Je ne comprend pas ce que ça veut dire

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Citation Envoyé par a2line
    Je ne comprend pas ce que ça veut dire
    Si tu ne donnes pas plus d'information, je te rassure, moi non plus je ne comprends rien
    Peux-tu montrer ton code?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 11
    Points
    11
    Par défaut
    Désolé oubliez le message d'avant : je m'embrouille...

    Voici le code de ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sql = "SELECT Dmi_date.Code_LPP1, T_LPP.[Libellé LPP], Sum(Dmi_date.Qté1) AS SommeDeQté1 
    FROM Dmi_date 
    INNER JOIN T_LPP ON Dmi_date.Code_LPP1 = T_LPP.Code_LPP1 
    GROUP BY Dmi_date.Code_LPP1, T_LPP.[Libellé LPP], T_LPP.GHS2006 
    HAVING (((T_LPP.GHS2006) = 0)) 
    ORDER BY Sum(Dmi_date.Qté1) DESC;"
    Debug.Print sql

    et j'obtiens la même chose dans la fenetre d'execution.

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Et lorsque tu l'execute dans le QBE tu obtiens .... ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 11
    Points
    11
    Par défaut
    Et bien j'obtiens un tableau avec un champ "code", un autre "libellé et un dernier "somme de qté".
    Elle fonctionne normalement.

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Citation Envoyé par a2line
    Et bien j'obtiens un tableau avec un champ "code", un autre "libellé et un dernier "somme de qté".
    Elle fonctionne normalement.
    Eh bien dans ce cas la requete est bonne tu peux continuer.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 11
    Points
    11
    Par défaut
    Et bien non justement, il y a un soucis. Rien ne s'affiche.
    j'ai crée une zone de liste qui est censé affiché la table obtenue. Tout
    fonctionne correctement avec l'autre requête que j'ai écrite mais pas avec celle ci. Je ne vois pas d'où vient le problème...
    Est ce possible que VBA ne connaisse pas certaines fonctions?

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Citation Envoyé par a2line
    Et bien non justement, il y a un soucis. Rien ne s'affiche.
    j'ai crée une zone de liste qui est censé affiché la table obtenue. Tout
    fonctionne correctement avec l'autre requête que j'ai écrite mais pas avec celle ci. Je ne vois pas d'où vient le problème...
    Est ce possible que VBA ne connaisse pas certaines fonctions?
    Est-ce que la zone de liste possede un nombre de ligne vide correspondant au nombre de reponses de la requete ?

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 11
    Points
    11
    Par défaut
    C'est à dire?
    Où puis-je le savoir?

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Citation Envoyé par a2line
    Tout
    fonctionne correctement avec l'autre requête que j'ai écrite mais pas avec celle ci. Je ne vois pas d'où vient le problème...
    Peux-tu montrer cet autre requete ? Possede-t-elle autant de champ que la nouvelle ?

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 37
    Points : 11
    Points
    11
    Par défaut
    Voici l'autre requête qui elle fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
         sql = "SELECT LPP1.Code_LPP1, LPP1.Qté1, LPP1.date 
                  FROM LPP1 
                  WHERE (([LPP1].[date]) <= date_fin And ([LPP1].[date]) >= (date_dbt))
                  ORDER BY LPP1.Code_LPP1; "
    Oui il y a le même nombre de champs.

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Je vois que la nouvelle requete possede des champs differents de la premieres. Peut-etre le probleme vient-il du nom des champs ou du fait qu'ils soient de types differents.
    Je n'ai helas pas Access sous la main pour tester, donc si quelqu'un d'autre pouvais prendre le relais ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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