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