Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tables attachés

4 réponses
Avatar
StarFab
Bonjour,
Je travaille sous Access XP.
Est-il possible d'attacher (lier) des tables contenu dans des bases externes en mettant non pas le
chemin absolu mais plutôt un chemin relatif ?
Car sinon à chaque fois que l'on déplace les bases (ensemble) d'un répertoire à un autre, on est
obligé de refaire l'attachement.
Je crois que je suis pas le premier à avoir ce pb non ?
Merci de votre aide !
Fabien

4 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

en fait tu dois procéder en 3 étapes :

1°) Vérifier à l'ouverture de la base si les attaches sont bonnes ou non,
tu peux utiliser un code de ce type par exemple :

Public Function VerifAttache(strTbl As String) As Boolean
'** Vérification des attaches de tables
On Error Resume Next
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset(strTbl)
If Err = 0 Then
VerifAttache = True
Else
VerifAttache = False
End If
End Function

2°) Si la fonction retourne False, tu peux remettre à jour en utilisant un
code de ce type :

Public Function ActualiserAttaches(strDb As String) As Boolean
'** Actualisation des attaches de tables qui se trouve
'** dans la base de donnée spécifiée dans "strDb"
Dim db As Database
Dim tdf As TableDef
Dim tdfNew As TableDef

Set db = OpenDatabase(strDb)
For Each tdf In db.TableDefs
Set tdfNew = CurrentDb.TableDefs(tdf.name)
tdfNew.Connect = ";DATABASE=" & strDb
Err = 0
On Error Resume Next
tdfNew.RefreshLink
If Err <> 0 Then: ActualiserAttaches = False: Exit Function
Next
ActualiserAttaches = True

End Function

3°) Si tu veux par contre permettre à l'utilisateur de choisr le fichier où
se trouve les tables, tu peux regarder ceci :

http://access.jessy.free.fr/index.html?Menu=6&Page=OpenFile


@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"StarFab" a écrit dans le message news:
e#
Bonjour,
Je travaille sous Access XP.
Est-il possible d'attacher (lier) des tables contenu dans des bases
externes en mettant non pas le

chemin absolu mais plutôt un chemin relatif ?
Car sinon à chaque fois que l'on déplace les bases (ensemble) d'un
répertoire à un autre, on est

obligé de refaire l'attachement.
Je crois que je suis pas le premier à avoir ce pb non ?
Merci de votre aide !
Fabien



Avatar
StarFab
Bonjour et merci de la réponse,
j'ai 2 questions :
1) Je n'ai pas bien compris ce que fait la 2° fonction ? Comment fait-elle pour retrouver les bons
fichiers ?
2) Par grand Dieu, N'y a-t-il pas moyen d'exprimer un simple chemin relatif comme dans de nombreux
langages type "./Mabase.mdb" ?

Merci !
Fabien

"Jessy Sempere [MVP]" a écrit dans le message de
news:c7fiks$oth$
Bonjour

en fait tu dois procéder en 3 étapes :

1°) Vérifier à l'ouverture de la base si les attaches sont bonnes ou non,
tu peux utiliser un code de ce type par exemple :

Public Function VerifAttache(strTbl As String) As Boolean
'** Vérification des attaches de tables
On Error Resume Next
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset(strTbl)
If Err = 0 Then
VerifAttache = True
Else
VerifAttache = False
End If
End Function

2°) Si la fonction retourne False, tu peux remettre à jour en utilisant un
code de ce type :

Public Function ActualiserAttaches(strDb As String) As Boolean
'** Actualisation des attaches de tables qui se trouve
'** dans la base de donnée spécifiée dans "strDb"
Dim db As Database
Dim tdf As TableDef
Dim tdfNew As TableDef

Set db = OpenDatabase(strDb)
For Each tdf In db.TableDefs
Set tdfNew = CurrentDb.TableDefs(tdf.name)
tdfNew.Connect = ";DATABASE=" & strDb
Err = 0
On Error Resume Next
tdfNew.RefreshLink
If Err <> 0 Then: ActualiserAttaches = False: Exit Function
Next
ActualiserAttaches = True

End Function

3°) Si tu veux par contre permettre à l'utilisateur de choisr le fichier où
se trouve les tables, tu peux regarder ceci :

http://access.jessy.free.fr/index.html?Menu=6&Page=OpenFile


@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"StarFab" a écrit dans le message news:
e#
Bonjour,
Je travaille sous Access XP.
Est-il possible d'attacher (lier) des tables contenu dans des bases
externes en mettant non pas le

chemin absolu mais plutôt un chemin relatif ?
Car sinon à chaque fois que l'on déplace les bases (ensemble) d'un
répertoire à un autre, on est

obligé de refaire l'attachement.
Je crois que je suis pas le premier à avoir ce pb non ?
Merci de votre aide !
Fabien







Avatar
Raymond [mvp]
Bonsoir.

) Par grand Dieu, N'y a-t-il pas moyen d'exprimer un simple chemin relatif
comme dans de nombreux
langages type "./Mabase.mdb" ?

Tu peux résoudre ce problème par les disques réseau que tu peux déclarer sur
toutes les stations. Les attaches seront faites sur un disque précis sans
tenir compte du chemin lui-même. les erreurs d'attache à ce niveau sont
quasiment nulles.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"StarFab" a écrit dans le message de
news:%
Bonjour et merci de la réponse,
j'ai 2 questions :
1) Je n'ai pas bien compris ce que fait la 2° fonction ? Comment fait-elle
pour retrouver les bons

fichiers ?
2) Par grand Dieu, N'y a-t-il pas moyen d'exprimer un simple chemin
relatif comme dans de nombreux

langages type "./Mabase.mdb" ?

Merci !
Fabien


Avatar
3stone
Salut,

"StarFab"
2) Par grand Dieu, N'y a-t-il pas moyen d'exprimer un simple chemin relatif comme dans de nombreux
langages type "./Mabase.mdb" ?



Si c'est juste pour connaitre le repertoire ou se trouve la base...

http://access.jessy.free.fr/htm/DataBase/CurrentDbDir.htm



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------