Concatener des requetes

Asterix -  
ortys4 Messages postés 254 Statut Membre -
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

ortys4 Messages postés 254 Statut Membre 51
 
Salut, travail tu sur une base de donnée relationnel ? (avec es clef primaire, etc)
0
Asterix
 
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 ?
0
ortys4 Messages postés 254 Statut Membre 51
 
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.
0
Asterix
 
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
0
ortys4 Messages postés 254 Statut Membre 51
 
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.
0
Asterix
 
non, je voudrais afficher les 2 resultats :

           toto   tata
"REQ1"     3      3
"REQ2"     4      11
...
0
ortys4 Messages postés 254 Statut Membre 51 > Asterix
 
Je 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.
0
Asterix
 
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
0
ortys4 Messages postés 254 Statut Membre 51 > Asterix
 
J'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 !
0
Asterix > ortys4 Messages postés 254 Statut Membre
 
je 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.
0