Lancer une requete sur une requete de vb

jjmaster Messages postés 51 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 29 septembre 2010 - 30 juin 2004 à 12:11
cs_Pim Messages postés 26 Date d'inscription samedi 24 août 2002 Statut Membre Dernière intervention 6 septembre 2006 - 17 oct. 2004 à 21:36
Salut, voila mon pb:

j'execute la requete suivant
sql "SELECT Intituler.machine, Intituler.[date heure], Intituler.[valeur tps], Intituler.intitule From Intituler GROUP BY Intituler.machine, Intituler.[date heure], Intituler.[valeur tps], Intituler.intitule Having (((Intituler.machine) '" & MachineEnCours & "') And ((Intituler.[date heure]) >= #" & selectdate & "# And (Intituler.[date heure]) <= #" & selectdate2 & "#)) ORDER BY Intituler.[valeur tps] DESC;"

Set rs2 = DBdatabase.OpenRecordset(sql, dbOpenDynaset)

donc dans "rs2" j'ai le resultat de ma requete. Ensuite il faut que je fasse une requete sur cette requete rs2 (existant que dans le programme)

> probleme en executant la requete suivante, il me dis qu'il ne la connais pas, elle ne fait pas partie de la base ".mdb" sur laquel je travaille.

sql = "SELECT rs2 .machine, Sum(rs2.[valeur tps]) AS [SommeDevaleur tps], rs2.intitule From rrs2 GROUP BY rs2.machine, rs2.intitule ORDER BY Sum(rs2.[valeur tps]) DESC;"

Set rs = DBdatabase.OpenRecordset(sql, dbOpenDynaset)

Merci de m'aider. Si vous avez besoin de plus d'informations pour repondre n'hesitai pas à me le demander. Je reste a disposition 8-)

3 réponses

olanfr Messages postés 46 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 25 novembre 2006
30 juin 2004 à 14:21
Bonjour,
En effet r2 n'est pas reconnu dans la requête, il faut faire un truc du genre :
Sql="Select " &rs2("Machine") &" , Sum(" &rs2("Valeur") &" As..."
En fait, il faut concaténer ta chaîne en lui passant les valeurs contenues dans ton recordset.
@+
Olan
0
jjmaster Messages postés 51 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 29 septembre 2010 1
30 juin 2004 à 16:45
Ok merci je vais essayer voir si ca marche.
J'avais penser deja a ca mais je ne savais pas si il prenait en compte tout le recordset

:)
0
cs_Pim Messages postés 26 Date d'inscription samedi 24 août 2002 Statut Membre Dernière intervention 6 septembre 2006
17 oct. 2004 à 21:36
Procédure à suivre:
1/ Créer la première requête comme tu l'as fait, mais veiller à ce que ce soit une requête ENREGISTRÉE dans la base de données !

2/ Appeler cette requête enregistrée comme source d'une deuxième requête.

Voici un exemple émanant de l'une de mes applications.
Pour les détails, je n'ai pas vraiment le temps d'expliquer.
Lis le code et tente de l'appliquer à ton problème.
Salut.

Private Function Fonct_Rechercher()

' Déclaration des variables
Dim MyQuery As QueryDef
Dim dbs As Database
Set dbs = OpenDatabase(Var_CheminDatabase)

' La requête de départSQLText "SELECT * FROM EVOLUTIONS WHERE EVOLUTIONS.IDNUM " & IDNUM_GENERAL

' On l'enregistre dans la Db
Set MyQuery = dbs.CreateQueryDef("MyReq", SQLText)

' Recherche proprement dite basée sur la requête enregistrée

DataEvolutions.RecordSource = "SELECT DATECONS, EXAMEN, DIAG, SPECIFIC, " _
& " DETAILS_TXT, URL, ATTRIBUT, IDEVOL, IDNUM, DETAILS, FLAG, FLAGLABO, UID, FLAGCP" _
& " FROM MyReq WHERE DATECONS like '*" & Text1.Text & "*'" & _
" or EXAMEN like '*" & Text1.Text & "*'" & _
" or DIAG like '*" & Text1.Text & "*'" & _
" or SPECIFIC like '*" & Text1.Text & "*'" & _
" or DETAILS_TXT like '*" & Text1.Text & "*'" & _
" or URL like '*" & Text1.Text & "*'" & _
" ORDER BY DATECONS desc"
DataEvolutions.Refresh

' On supprime la requête de la base de données
dbs.QueryDefs.Delete MyQuery.Name

End Function
---------------
Pim
0