Numéro d'article: 147739 - Dernière mise à jour: mercredi 11 octobre 2006 - Version: 2.3

Comment faire pour récupérer un objet QueryDef à partir de MS Access à l'aide de DAO

A noterCet article s'applique à un système d'exploitation différent de celui que vous utilisez. Le contenu de l'article qui ne vous concerne peut-être pas est désactivé.
Agrandir tout | Réduire tout

Résumé

Dans Microsoft Excel versions 97 et 7.0, vous pouvez utiliser des objets d'accès aux données (DAO) dans Visual Basic pour applications pour récupérer les résultats de la QueryDef à partir de Microsoft Access. Cet article explique comment faire.

Plus d'informations

Microsoft fournit des exemples de programmation à des fins d'illustration uniquement, sans garantie expresse ou implicite. Cela inclut, mais n'est pas limité à, les garanties implicites de qualité, d'adéquation à un usage particulier. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du support technique Microsoft peuvent vous aider à comprendre la fonctionnalité d'une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques. Cet article utilise la base de données Northwind incluse avec Microsoft Office 95 Professionnel. Si vous avez sélectionné les options par défaut, la base de données se trouve dans le dossier \Msoffice\Access\Samples. Si votre base de données Les Comptoirs se trouve dans un dossier différent, modifiez le code fourni ci-dessous avant de l'exécuter.

Dans Microsoft Office 97, le chemin d'accès par défaut pour la base de données Northwind est \Program Files\Microsoft Office\Office\Samples\Northwind.mdb.

Un objet QueryDef est créé dans Microsoft Access et enregistré avec le fichier de base de données. Il se compose d'une requête et peut-être ou ne peut pas inclure les critères.

Remarque : Si vous recevez le message d'erreur «User-defined type non défini», activer une feuille de module, cliquez sur Références dans le menu Outils, cliquez sur case à cocher bibliothèque d'objets Microsoft DAO 3.0.

Récupérer les résultats d'un objet QueryDef à partir de Microsoft Access est un processus de le cinq étape comme suit :
  1. Établissez un objet de base de données.
  2. Établissez un objet QueryDef.
  3. Établissez un objet Recordset.
  4. Récupérer les en-têtes (si vous le souhaitez).
  5. Récupérer les données à partir de la table.
Une fois les données sont récupérées, vous devez fermer tous les objets que vous avez ouvert en émettant des commandes .Close.
   Sub GetQueryDef()
       'This sub will get data from an Existing QueryDef in the Northwind
       'database and place the data on sheet2.

         Dim Db As Database
         Dim Qd As QueryDef
         Dim Rs As Recordset
         Dim Ws As Object
         Dim i As Integer
      Dim Path as String

      'Set the Path to the database. This line is useful because
      'if your database is in another location, you just need to change
      'it here and the Path Variable will be used throughout the code.
      '
      'If you're using Microsoft Office 97, the line should read:
      '
      'Path = "C:\Program Files\Microsoft
      'Office\Office\Samples\Northwind.mdb"
      '
      Path = "C:\Msoffice\Access\Samples\Northwind.mdb"

       'Set Ws
       Set Ws = Sheets("Sheet1")

       'This set of code will activate Sheet1 and clear any existing data.
       'After clearing the data, it will select cell A1.
       Ws.Activate
       Range("A1").Activate
       Selection.CurrentRegion.Select
       Selection.ClearContents
       Range("A1").Select

       'Set the Database and QueryDef. This QueryDef exists in the
       'database.
       Set Db = Workspaces(0).OpenDatabase(Path, ReadOnly:=True, _
         Exclusive:=False)
       Set Qd = Db.QueryDefs("Invoices")

       'Create a new Recordset from the Query based on the stored
       'QueryDef.
       Set Rs = Qd.OpenRecordset()

       'This loop will collect the field names and place them in the first
       'row starting at "A1."
       For i = 0 To Rs.Fields.Count - 1
           Ws.Cells(1, i + 1).Value = Rs.Fields(i).Name
       Next

      'This line simply sets the font to bold for the headers.
      Ws.Range(Ws.Cells(1, 1), Ws.Cells(1, Rs.Fields.Count)).Font.Bold _
          =True

      'The next line will get the data from the recordset and copy it
      'into the Worksheet (Sheet1).

       Ws.Range("A2").CopyFromRecordset Rs

      'This next code set will just select the data region and auto-fit
      'the columns
       Sheets("Sheet1").Select
       Range("A1").Select
       Selection.CurrentRegion.Select
       Selection.Columns.AutoFit
       Range("A1").Select

       Qd.Close
       Rs.Close
       Db.Close

   End Sub
				

Références

Pour plus d'informations sur Data Access Object, à partir de Visual Basic Editor, cliquez sur le Compagnon Office, tapez «DAO», cliquez sur Rechercher, puis cliquez sur pour afficher «Data Access Objects Overview».

Remarque : Si le Compagnon est masqué, cliquez sur le bouton Compagnon Office dans la barre d'outils standard. Si le Compagnon n'est pas en mesure de répondre à votre requête, consultez l'article suivant dans la base de connaissances Microsoft :
176476  (http://support.microsoft.com/kb/176476/EN-US/ ) OFF : Le Compagnon Office ne répond pas aux questions sur Visual Basic
Pour plus d'informations sur des objets d'accès aux données dans Microsoft Excel version 7.0, cliquez sur l'onglet Index dans l'aide de Microsoft Excel et tapez :
DAO

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Excel 97 Standard
  • Microsoft Excel 95 Standard
Mots-clés : 
kbmt kbdtacode kbhowto kbprogramming KB147739 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 147739  (http://support.microsoft.com/kb/147739/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Retired KB ArticleExclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.