OVH Cloud OVH Cloud

référence à un querydef temporaire

3 réponses
Avatar
Michel
Bonjour

Par définition, un querydef temporaire n'a pas de nom. Le recordet qui
résultera de son exécution n'a à priori pas besoin d'être sauvé et donc
d'être nommé, ce qui simplifie la gestion de la base en cas de réutilisation
de ce query et de ce recordset.

Comment faire référence à ce premier recordet (ou querydef) temporaire dans
la définition de l'instruction SQL (strSQL de CreateQueryDef) d'un nouveau
querydef dont le premier serait la source, avec l'obstacle que la source doit
avoir un nom ?
Pour simplifier, le nom des champs est hérité de la table d'origine.

Si quelqu'un a une solution, cela m'aiderait assurément.
Merci

3 réponses

Avatar
Eric
Bonjour,

(Sous réserve d'avoir bien compris)
Pourquoi ne pas faire un
Select chp1, chp3 From (Select chp1, chp2, chp3 ... From UneTable))
où le (Select ... From Unetable) derrière le 1er FROM représente ta
requête temporaire ?

Exemple:
Sub zz()
Dim strSQL As String, rq As DAO.QueryDef, rs As DAO.Recordset
strSQL = "select distinct societe_client, ville_client from " _
& "(select * from tclient C inner join tFacture F " _
& "on C.Numclient=F.Numclient)"
Set rq = CurrentDb.CreateQueryDef("zz", strSQL)
DoCmd.OpenQuery "zz"
End Sub

(Il appartiendra de supprimer la 2ème requête - ici zz - quand necessaire)

Bonjour

Par définition, un querydef temporaire n'a pas de nom. Le recordet qui
résultera de son exécution n'a à priori pas besoin d'être sauvé et donc
d'être nommé, ce qui simplifie la gestion de la base en cas de réutilisation
de ce query et de ce recordset.

Comment faire référence à ce premier recordet (ou querydef) temporaire dans
la définition de l'instruction SQL (strSQL de CreateQueryDef) d'un nouveau
querydef dont le premier serait la source, avec l'obstacle que la source doit
avoir un nom ?
Pour simplifier, le nom des champs est hérité de la table d'origine.

Si quelqu'un a une solution, cela m'aiderait assurément.
Merci


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...
A supprimer la ) de trop à la 3eme ligne et rs as DAO.Recordset dans les
déclarations.

Bonjour,

(Sous réserve d'avoir bien compris)
Pourquoi ne pas faire un
Select chp1, chp3 From (Select chp1, chp2, chp3 ... From UneTable))
où le (Select ... From Unetable) derrière le 1er FROM représente ta
requête temporaire ?

Exemple:
Sub zz()
Dim strSQL As String, rq As DAO.QueryDef, rs As DAO.Recordset
strSQL = "select distinct societe_client, ville_client from " _
& "(select * from tclient C inner join tFacture F " _
& "on C.Numclient=F.Numclient)"
Set rq = CurrentDb.CreateQueryDef("zz", strSQL)
DoCmd.OpenQuery "zz"
End Sub

(Il appartiendra de supprimer la 2ème requête - ici zz - quand necessaire)



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Michel
Merci Eric

Imbriquer une requête est la première solution qui vient à l'esprit.
Mais comme je compte répéter l'opération sur un certain nombre de niveaux et
au gré des choix de l'utilisateur, la gestion du code risque de devenir assez
lourde et serait sans doute difficile à généraliser.

Personne d'autre n'a d'idée, voire la confirmation de l'impasse ?

Michel


"Michel" wrote:

Bonjour

Par définition, un querydef temporaire n'a pas de nom. Le recordet qui
résultera de son exécution n'a à priori pas besoin d'être sauvé et donc
d'être nommé, ce qui simplifie la gestion de la base en cas de réutilisation
de ce query et de ce recordset.

Comment faire référence à ce premier recordet (ou querydef) temporaire dans
la définition de l'instruction SQL (strSQL de CreateQueryDef) d'un nouveau
querydef dont le premier serait la source, avec l'obstacle que la source doit
avoir un nom ?
Pour simplifier, le nom des champs est hérité de la table d'origine.

Si quelqu'un a une solution, cela m'aiderait assurément.
Merci