[ACCESS - VBA -ADO] Requete predefinie

Résolu/Fermé
Garby Messages postés 133 Date d'inscription samedi 7 octobre 2006 Statut Membre Dernière intervention 28 juin 2023 - 28 oct. 2006 à 12:38
 Utilisateur anonyme - 2 nov. 2006 à 00:23
Bonjour

Je développe actuellement une appli Acces/VBA.
Je souhaiterais savoir s'il existe en ADO le moyen d'exécuter une requête déjà définie dans les requetes access.

L'équivalent de ce qui existe avec les querydefs de DAO :
Set MonRecordset = MaBase.QueryDefs!MaRequetePredefinie

L'idée est de m'épargner la construction lourde de requetes en mode texte du type :
Set MonRecordset = MaBase.OpenRecordset("SELECT * FROM MaTable")

Or sauf erreur ou mauvaise recherche de ma part, je n'ai rien trouvé d'équivalent en ADO des Querydefs, ce qui me laisse tout de meme pantois...

Merci d'avance pour votre aide.

Garby

2 réponses

Utilisateur anonyme
28 oct. 2006 à 17:32
Bonjour,

si j'ai bien compris, vous n'avez qu'a placer l'instruction :
Set MonRecordset = MaBase.QueryDefs!MaRequetePredefinie 
RefreshDatabaseWindow

et votre requête est exécuté !

Lupin
0
Garby Messages postés 133 Date d'inscription samedi 7 octobre 2006 Statut Membre Dernière intervention 28 juin 2023 16
1 nov. 2006 à 17:00
bonjour

Et merci pour la réponse mais elle ne m'avance pas...

J'ai contourné mon problème en utilisant :

MaBase.QueryDefs(MaRequetePredefinie).SQL

Ainsi, je construis des requetes avec l'assistant et je passe ensuite le texte de ces requetes à mes recordset. Je ne construis donc pas mes requetes en mode texte dans mon code...

Au niveau de l'élégance, ma solution se pose là, mais ca fonctionne, et ca reste moins moche que la construction des requetes dans le code... :-)
0
Utilisateur anonyme
2 nov. 2006 à 00:23
re:

en fait, je ne suis pas sur de bien comprendre, vous avez plusieurs requêtes ?

Lorsque j'ai besoin de plusieurs requête qui sont fonction des choix
utilisateur, je construis une requête générique en string et je la
modifie par programmation.

Tiré de [ Beginning Access 97 VBA Programming ]
Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean
    
    Dim Definition As QueryDef
    
    If ((ChaineRequete = "") Or (ChaineSQL = "")) Then
        ChangeRequeteDef = False
    Else
        Set Definition = CurrentDb.QueryDefs(ChaineRequete)
        Definition.SQL = ChaineSQL
        Definition.Close
        RefreshDatabaseWindow
        ChangeRequeteDef = True
    End If
    
End Function



Lupin
0