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

VBA Access Discussion :

Requete qui utilise une autre requete


Sujet :

VBA Access

  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut Requete qui utilise une autre requete
    Bonjour à tous,

    Voici mon problème.

    J'ai une requete qui porte le nom requête1 dans ma deuxième requête qui porte le nom requête2 j'utilise le contenu les donnée de requête1.
    Tout cela fonctionne très bien lorsque je passe par les requête.

    Je voudrais faire exactement la même chose mais en vba, et c'est là que je ne sais pas comment donner un nom à ma requete mais pour qu'elle s'exécute quand même !!!

    Pourriez vous me donner un coups de mains.

    Voici ce que j'ai fais, mais évidement cela ne tourne pas car je ne lance pas la première requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    lst = "SELECT tbl_incidents.produit AS Nom, Count(tbl_incidents.id) AS
    Dossier, (round((Count(tbl_incidents.id)/(Formulaires!frm_stat!tot1)*100),2) 
    & ' %') AS Pourcentage FROM tbl_incidents WHERE (tbl_incidents.date 
    BETWEEN (#" & var1 & "#) AND (#" & var2 & "#)) GROUP BY 
    tbl_incidents.produit UNION SELECT tbl_archives.produit AS Nom, Count
    (tbl_archives.id) AS [Nb Dossier], (round((Count(tbl_archives.id)/(Formulaires!
    frm_stat!tot1)*100),2) & ' %') AS Pourcentage FROM tbl_archives WHERE 
    (tbl_archives.date BETWEEN (#" & var1 & "#) AND (#" & var2 & "#)) GROUP 
    BY tbl_archives.produit;"
     
    Me.lstResults.RowSource = "SELECT lst.Nom, sum(lst.Dossier) FROM lst 
    GROUP BY lst.Nom;"
    D'avance merci

    Benjisan

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 640
    Points : 34 358
    Points
    34 358
    Par défaut
    bonjour,
    tu as la main sur les requêtes en passant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QueryDef.SQL
    'et
    QueryDef.Name

  3. #3
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut Merci pour la réponse
    Merci beaucoup pour ta réponse, mais est ce que tu peux m'expliquer comment cela fonctionne ??

    Encore merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 640
    Points : 34 358
    Points
    34 358
    Par défaut
    bien sûr,
    pour créer des requetes dans la base via le code vba.

    tu as des exemples pour ca ici :http://access.developpez.com/faq/?page=SQL#ExistReqVBA

    l'idée est donc :
    - tu rajoutes la requête tempo 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'code de la syntaxe SQL et tout
    'terminée par
    CurrentDb.QueryDefs.Append
    -tu exécutes la requête 2 qui fait appelle à tempo 1
    -tu supprime la requête tempo 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.QueryDefs.Delete NomRequete

  5. #5
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut OK
    Ok, j'ai bien compris le principe.

    Mais est ce que je ne dois pas d'abord lui donner un nom avant d'utiliser la fonction SQL.

    Voici ce que j'ai simplement essayé mais je n'ai aucun résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    strsql = "SELECT tbl_incidents.produit AS Nom, Count(tbl_incidents.id)
     AS Dossier, (round((Count(tbl_incidents.id)/(Formulaires!frm_stat!tot1)*100),
    2) & ' %') AS Pourcentage FROM tbl_incidents WHERE (tbl_incidents.date 
    BETWEEN (#" & var1 & "#) AND (#" & var2 & "#)) GROUP BY 
    tbl_incidents.produit UNION SELECT tbl_archives.produit AS Nom, Count
    (tbl_archives.id) AS [Nb Dossier], (round((Count(tbl_archives.id)/(Formulaires!
    frm_stat!tot1)*100),2) & ' %') AS Pourcentage FROM tbl_archives WHERE 
    (tbl_archives.date BETWEEN (#" & var1 & "#) AND (#" & var2 & "#)) GROUP 
    BY tbl_archives.produit;"
     
    Set test = CurrentDb.CreateQueryDef()
    test.SQL = strsql
    test.Name = "lst"
    Me.lstResults.RowSource = lst
    Je n'ai ucun message d'erreur mais je n'ai aucun résultat non plus

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 640
    Points : 34 358
    Points
    34 358
    Par défaut
    le code est bon, il manque juste le .append

  7. #7
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut
    Voilà, j'ai essayé de rajouter le .append

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    strsql = "SELECT tbl_incidents.produit AS Nom, Count(tbl_incidents.id)
     AS Dossier, (round((Count(tbl_incidents.id)/(Formulaires!frm_stat!tot1)*100),
    2) & ' %') AS Pourcentage FROM tbl_incidents WHERE (tbl_incidents.date 
    BETWEEN (#" & var1 & "#) AND (#" & var2 & "#)) GROUP BY 
    tbl_incidents.produit UNION SELECT tbl_archives.produit AS Nom, Count
    (tbl_archives.id) AS [Nb Dossier], (round((Count(tbl_archives.id)/(Formulaires!
    frm_stat!tot1)*100),2) & ' %') AS Pourcentage FROM tbl_archives WHERE 
    (tbl_archives.date BETWEEN (#" & var1 & "#) AND (#" & var2 & "#)) GROUP 
    BY tbl_archives.produit;"
     
    Set test = CurrentDb.CreateQueryDef()
    test.SQL = strsql
    test.Name = "lst"
    CurrentDb.QueryDefs.Append
    Me.lstResults.RowSource = lst
    Mais il me dit que le .append est un argument non facultatif

    Où bien alors, il n'est pas placé au bon endroit, où bien j'ai mal orthographié la commande

    Encore merci à toi

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 640
    Points : 34 358
    Points
    34 358
    Par défaut
    essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.QueryDefs.Append lst

  9. #9
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut
    Je reçois un message Objet requis

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 640
    Points : 34 358
    Points
    34 358
    Par défaut
    oups, c'est moi,
    test à la place de lst bien sûr

  11. #11
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut Ca avance
    Alors, j'ai essayé en placant test à la plce de lst mais je reçoit qui me dis que lst existe déjà

    j'ai simplement lancé la ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.QueryDefs.Delete lst
    J'ai donc maintenant (Si on laisse tomber la requête SQL) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set test = CurrentDb.CreateQueryDef()
    test.Name = "lst"
    test.SQL = strsql
    CurrentDb.QueryDefs.Append test
    Me.lstResults.RowSource = lst
    CurrentDb.QueryDefs.Delete test
    Le message L'Objet 'lst' existe déjà

    J'ai pourtant bien lancé la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.QueryDefs.Delete lst

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 640
    Points : 34 358
    Points
    34 358
    Par défaut
    attention, ne confonds pas
    et
    lst renvoie la valeur de la variable, "lst" renvoie la chaine de caractère lst, soit le nomde la requête que tu as ajoutée.

  13. #13
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 258
    Points : 127
    Points
    127
    Par défaut Un grand merci
    Hello jpcheck,

    Je voulais simplement te remercier, car tout fonctionne à merveille grace à toi

    A très bientôt sur le Forum

    Benjisan

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

Discussions similaires

  1. Programmes/DLL qui utilisent une autre DLL
    Par B.ratak dans le forum Windows XP
    Réponses: 4
    Dernier message: 26/12/2007, 09h23
  2. Requete SQL sur une autre requete SQL
    Par skillipo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/12/2007, 17h58
  3. requete sql utilisant une autre requete sql
    Par arnogef dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/02/2007, 20h38
  4. Réponses: 23
    Dernier message: 19/09/2006, 11h33
  5. Réponses: 3
    Dernier message: 05/01/2006, 15h14

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