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.
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
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
|