---Soumis par 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é à 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 **************