Rechercher : dans
Par :

[ACCESS - VBA -ADO] Requete predefinie

Dernière réponse le 2 nov 2006 à 00:23:17 Garby, le 28 oct 2006 à 12:38:17 
 Signaler ce message aux modérateurs

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

1

Lupin.A, le 28 oct 2006 à 17:32:46

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

Répondre à Lupin.A

2

Garby, le 1 nov 2006 à 17:00:55

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... :-)

Répondre à Garby

3

 Lupin.A, le 2 nov 2006 à 00:23:17

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

Répondre à Lupin.A