Concatener des requetes

Bien le bonjour,

Je vous expose le probleme :
J'ai 2 requetes qui me sortent un truc comme ca toutes les 2:
REQ1 :
  Nom    Valeur
  toto   123
  tata   456

REQ2 :
  Nom    Valeur
  toto   1234
  tata   5678


et je voudrais les afficher toutes les 2 dans un meme formulaire ou etat, je ne sais pas encore, un truc qui ressemblerait a ca :
           toto   tata
REQ1       123    456
REQ2       1234   45678


Bref, pour faire ca il me semble que passer par une requete intermediaire qui me retournerait ca serait nickel :
  Nom    Valeur   Req
  toto   123      REQ1
  tata   456      REQ1
  toto   1234     REQ2
  tata   5678     REQ2


Mais je ne vois pas comment faire. Quelqu'un aurait une petite idee ?

PS : je precise qu'a terme ca ne sera pas 2 requetes, mais X requetes, et que faire ca en VBA ne me pose pas de probleme.

Un grand merci d'avance !

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut, travail tu sur une base de donnée relationnel ? (avec es clef primaire, etc)
    1. oui j'ai des cles primaires et des relations entre mes tables, mais la je travaille sur des requetes. Je ne vois pas bien ou tu veux en venir ?
  2. Les requêtes peuvent se liée très facilement. Il y à une relation entre clef primaire et clef étrangère. Si tu arrive à me faire parvenir une explication brève de ce qui relie tes 2 tables, je peux essayé de te faire ta requête.
    1. je n'ai qu'une seule table, les 2 requetes extraient certaines donnees de cette meme table avec differents criteres. Et je voudrais afficher les differents resultats dans un formulaire ou un etat.

      grossomodo :
      ta table est du genre
      critere  nom    valeur
      C1       toto   1
      C1       toto   2
      C1       tata   3
      C2       toto   4
      C2       tata   5
      C2       tata   6


      La premiere requete va sommer que les lignes avec critere = C1 :
        toto  3
        tata  3


      et la 2eme requete va sommer les lignes avec critere = C2 :
        toto  4
        tata  11
  3. Alors si j'ai bien compris, tu vaut afficher le selon critère1 et critère2

    Dans la clause where, tu met condition1 or condition2

    Sa devrai résoudre ton cas.
    1. non, je voudrais afficher les 2 resultats :

                 toto   tata
      "REQ1"     3      3
      "REQ2"     4      11
      ...
    2. @AsterixJe suis désolé mais je crois pas que ton cas puisse se résoudre avec une simple requette. C'est au niveau de l'affichage qu'il va falloir croisé les résultat.
    3. je precise que la liste des requetes que je vais devoir afficher est dans une table

      Si c'est possible de dessinner un formulaire par un script VBA ca peut etre une solution:
      for requete in list_requete
      executer requete
      dessinner une ligne dans le formulaire qui contient le nom de la requete et les resultats dans des zones de texte

      Mais je ne sais pas creer un nouveau controle et le placer dans un formulaire depuis un script VBA.
      J'espere que je suis clair.

      Sinon ma premiere solution de reussir a optenir une requete qui me sortirait ca me conviendrait tres bien aussi :

        Nom    Valeur   Req
        toto     3      REQ1
        tata     3      REQ1
        toto     4      REQ2
        tata     11     REQ2

      De la je peux creer un etat qui m'afficherait les resultats
    4. @AsterixJ'ai vite fait une macro pour ajouter un controle, elle me crée ce code
      ActiveDocument.ToggleFormsDesign
      Selection.InlineShapes.AddOLEControl ClassType:="Forms.CommandButton.1"


      Si sa peut t'aider !
    5. @ortys4je vais essaye ca, merci, sinon j'etait parti sur une autre idee : creer moi meme un recordset que je remplit avec les resultats de toutes mes requetes, et ensuite le mettre comme source de mon formulaire :

      Sub test()
          Dim recs As ADODB.Recordset
          Dim recs2 As Recordset
          Dim db As Database
          
          Set db = CurrentDb()
          Set recs2 = db.OpenRecordset("req1")
          Set recs = New ADODB.Recordset
          recs.Fields.Append "nom", adVarChar, 255
          recs.Fields.Append "valeur", adVarChar, 255
          recs.Fields.Append "req", adVarChar, 255
          recs.Open
          Do While Not recs2.EOF
              recs.AddNew Array("nom", "valeur", "req"), Array(recs2.Fields("nom"), recs2.Fields("valeur"), "REQ1")
              recs2.MoveNext
          Loop
          
          Set Forms("MonFormulaire").Recordset = recs
          recs.Close
      End Sub


      Mais dans mon formulaire je ne vois que des #error dans les cases. Par contre j'ai bien le bon nombre de lignes par rapport a ma requete.

      PS : si j'ai fais un ADODB.RecordSet c'est patce que apres j'veux y mettre le resultat de toutes mes requetes les un a la suite des autres. Parce que si je prends le recs2 et que j'essaye d'y rajouter les enregistrement d'une autre requete il veut pas parce que recs2 est en lecture seule.