OVH Cloud OVH Cloud

Réorientation base de données

1 réponse
Avatar
Philippe Genton
Bonjour tout le monde !

J'ai un petit probl=E8me:

Je voudrais par une macro ou en VB faire la chose suivante:

J'ai une base dorsale avec mes tables. De ma base=20
frontale, j'aimerais tester si cette base dorsale est sur=20
un repertoire donn=E9 (par exemple p:\base). Si cette base=20
est bien sur ce repertoire, alors tout va bien. Par=20
contre, si elle n'est pas sur ce repertoire, je=20
souhaiterais qu'access me propose par une boite de=20
dialogue d'aller la chercher sur les diff=E9rents=20
repertoires de ma machine.

Suis-je clair ?

Merci d'avance
Ph

1 réponse

Avatar
Marc ROBY
Bonjour,
Oui, la question est claire. En fait, il faut un peu plus qu'une macro pour
parvenir au résultat escompté (d'ailleurs une bonne appli Access est une
appli ... sans macro ! ) Pour savoir si la base usuelle est bien connectée,
il suffit d'essayer d'ouvrir une table de cette base. Si l'erreur retounée
est 0, la base est bien là. Sinon, il faudra aller la chercher ailleurs.
Cela dépend ensuite de ce que l'on veut faire : aller chercher ailleurs
automatiquement, choisir via l'exporateur, etc. Et cela dépend surtout des
droits de la personne qui exécute la suite, car il faut disposer de tous les
droits, dont celui d'administrer les tables, pour pouvoir continuer et
tenter de réaliser l'attachement aux tables d'une autre base. Dès que l'on
dispose du chemin complet, d'une façon ou d'une autre, de la nouvelle base à
attacher, il faut réaliser une boucle sur toutes les tables de la nouvelle
base, et pour chacune contrôler qu'elle a ou non une chaîne de connexion,
pour savoir si c'est une table attachée - parce que ce n'est pas
obligatoirement le cas de toutes les tables, même sur une base dorsale (pour
voir si elle a une chaîne de connexion, il suffit de vérifier que la
longueur de cette chaîne est supérieure à zéro). Dans ce cas avéré, il faut
utiliser la méthode RefreshLink (de l'objet TableDef) pour tenter détablir
le lien. Si l'erreur retourné est 0, c'est bon, on passe à la suivante, etc.
Si l'erreur est différente de 0, cela montre que l'on tente de se connecter
à une base dorsale qui n'a pas grand chose à voir avec la base frontale...
Ce principe de 'connexions multiples' est très pratique,surtout dans les
bases ou la sécurité utilisateur est mise en place, car en fonction du
niveau de 'droits' de l'utilisateur en cours, on peut ou non l'autoriser à
changer de base dorsale, etc. Cela fonctionne parfaitement bien. Bon
courage,
Marc ROBY - CAPCODE Conseil
http://www.capcode-conseil.fr/
"Philippe Genton" a écrit dans le
message de news:8da701c3ea66$a9e2e950$
Bonjour tout le monde !

J'ai un petit problème:

Je voudrais par une macro ou en VB faire la chose suivante:

J'ai une base dorsale avec mes tables. De ma base
frontale, j'aimerais tester si cette base dorsale est sur
un repertoire donné (par exemple p:base). Si cette base
est bien sur ce repertoire, alors tout va bien. Par
contre, si elle n'est pas sur ce repertoire, je
souhaiterais qu'access me propose par une boite de
dialogue d'aller la chercher sur les différents
repertoires de ma machine.

Suis-je clair ?

Merci d'avance
Ph