Liaison de tables ACCESS en chemin relatif

Résolu
Molenn
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
- 22 déc. 2006 à 02:42
Molenn
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
- 22 déc. 2006 à 16:12
Bonsoir (ou bonjour, c'est selon ^^),

Je vais poster mon pb sur VBFrance parce que, si une solution purement ACCESS n'existe pas, j'aimerai bien en trouver une qui soit au moins en VBA, même si j'ai de gros doute.
J'expose mon pb :

J'ai développé une appli en VB6 qui utilise un certain nombre de base de données ACCESS 2000 en DAO. Tout fonctionne, pas de soucis.
Le problème se situe dans mes bases de données : Une base possède une table liée à une autre base.

Pour faire simple :
Base A : Table 1, Table 2
Base B : Table 3, Table 4 : Liaison sur la Table 2

J'utilise cette liaison dans une requête afin d'afficher un certain nombre de données.
Tout fonctionne parfaitement.

J'arrive donc à mon problème :
Je viens de découvrir qu'en fait, cette liaison est "en dure". Le chemin de la base est rentrée en dure dans la liaison.
Je viens de changer mon appli de répertoire et forcément, ça plante : En effet, le nom de répertoire ayant changé, la liaison n'est plus. Si je corrige avec le gestionnaire d'attache, pas de soucis.

Le pb, c'est que j'ai développé l'appli en VB6 pour justement pouvoir distribuer mes bases sans qu'ACCESS soit nécessairement installé sur le poste.
Je ne peux donc pas me contenter d'une solution consistant à ouvrir les bases avec ACCESS pour modifier la liaison.

J'en viens donc à ma question :
Existe-t-il un moyen de faire mettre le chemin de la liaison en chemin relatif ? (Toutes les bases se trouvant dans le même répertoire).
Si ce n'est pas possible, existe-t-il au moins un code VBA permettant de modifier le chemin de la liaison ? Si ce code existe, je pourrais toujours écrire un petit module qui vérifiera le chemin de la liaison et le modifiera le cas échéant.

Je n'ai qu'ACCESS 2000 à ma disposition.

Molenn

<!-- / message -->

9 réponses

cavo789
Messages postés
168
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
28 juillet 2009
1
22 déc. 2006 à 07:01
Une solution VBA existe : il suffit d'utiliser la propriété ConnectString de la collection table.

Ainsi : CurrentDb.TableDefs("MaTable").ConnectString te retourne entre autre le nom complet de la DB attachée.  

Analyse ce que te retourne cette propriété et va changer dans le path ce qui doit l'être (p.e. à l'ouverture de ta DB).  

Christophe
3