Carte du site
 Remerciements
 Netiquette
 Bugs
 Tables
 Requêtes
 Formulaires
 États (rapports)
 Modules
 APIs
 Chaînes
 Date/Time
 Général
 Ressources
 Téléchargeables

 Termes d'usage

Tables: Retrouver le chemin de la base de données possédant la table liée

Author(s)
Dev Ashish

Retrouver le chemin de la base de données possédant la table liée.

(Q)    Il me faut connaître le nom et le chemin de la base de données à laquelle j'ai diverses tables liées, un peu comme un CurrentDb.Name pour les tables attachées. Comment y parvenir?

(A)    Directement d'une entrée dans le fichier d'aide d'Access,

        Propriété Connect:   Assigner ou retourner une valeur qui fourni l'information au sujet de la source d'une connexion ouverte, une base de données ouvert, une base de données utilisée dans une requête indirecte (pass-through) ou d'une table liée. Pour les objets base de données, connexions, tables liées et définition de table (TableDef) non encore ajoutée à la collection TableDefs, cette propriété est ouverte à l'écriture et à la lecture; pour les définition de requête et pour les tables de base, cette propriété ne peut être que lue..

        Comme test, exécuter  sListPath dans votre base de données. Noter que pour les tables locales, une ligne blanche apparaît alors que pour les tables liées, le chemin à leur base de données est imprimé dans la fenêtre d'exécution immédiate ( Debug window ). 

        Pour une utilisation générale, fournir le nom individuel de la table désirée à la fonction fGetLinkPath.

'*************** Code Start **************
'
Function fGetLinkPath(strTable As String) As String
Dim dbs As Database, stPath As String

    Set dbs = CurrentDb()
    On Error Resume Next
    stPath = dbs.TableDefs(strTable).Connect
    If stPath = "" Then
        fGetLinkPath = vbNullString
        'can change this to currentdb.name
    Else
        fGetLinkPath = right(stPath, Len(stPath) _
                        - (InStr(1, stPath, "DATABASE=") + 8))
    End If
    Set dbs = Nothing
End Function

Sub sListPath()
    Dim loTd As TableDef
    CurrentDb.TableDefs.Refresh
    For Each loTd In CurrentDb.TableDefs
        Debug.Print fGetLinkPath(loTd.Name)
    Next loTd
    Set loTd = Nothing
End Sub

'*************** Code End **************

© 1998-2001, Dev Ashish, All rights reserved. Optimized for Microsoft Internet Explorer