[ACCESS - VBA -ADO] Requete predefinie

Résolu
Garby Messages postés 149 Statut Membre -  
 Utilisateur anonyme -
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

  1. Utilisateur anonyme
     
    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
    1. Garby Messages postés 149 Statut Membre 16
       
      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
  2. Utilisateur anonyme
     
    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