2015-09-23 2 views
0

J'essaie d'obtenir une liste des tables et des champs qui sont utilisés pour produire des requêtes dans une base de données d'accès. Je suis capable d'identifier les champs trouvés dans une sortie de requête mais pas les champs utilisés pour concevoir la requête.Obtenir les noms de table et de champ utilisés pour créer une requête dans Access VBA

En d'autres termes, est-il possible d'obtenir les noms de table et de champ spécifiés dans la section de générateur de requête de la vue de conception d'une requête dans Access?

J'ai trouvé et développé sur un code VBA qui obtient tous les champs qui sont dans la sortie d'une requête (ci-dessous), mais cela n'obtient pas les informations dont j'ai besoin. Est-il possible de réaliser ce que je cherche?

Function listQueryFields() As String 

    Dim db As DAO.Database 
    Dim qry As DAO.QueryDef 
    Dim fld As Field 
    Dim rs As Recordset 

    Set db = CurrentDb() 
    Set rs = db.OpenRecordset("tbl_Query_Field_Names") 

    For Each qry In db.QueryDefs 
     If InStr(1, qry.Name, "_qry_", vbTextCompare) > 0 Then 
      Debug.Print qry.Name 
       For Each fld In qry.Fields 
        Debug.Print fld.Name 
        rs.AddNew 
         rs(0) = qry.Name 
         rs(1) = fld.Name 
        rs.Update 
       Next 

     End If 
    Next 

    Set db = Nothing 
    Set rs = Nothing 
    Exit Function 

End Function 

Répondre

2

Obtenez le nom du champ d'origine:

fld.SourceField 

Obtenez le nom de la table d'origine

fld.SourceTable 

Astuce: Vous pouvez toujours trouver des biens immobiliers disponibles dans l'API de MSDN, dans ce cas: https://msdn.microsoft.com/en-us/library/office/dn123487.aspx ou en utilisant l'intellisense dans l'éditeur VBA.

+0

Cela a trié, merci asdev. Et ce lien MSDN se révélera très utile aussi. – mccdo