[VBA] Liaison d'une table Access par programme

Résolu/Fermé
jadami Messages postés 103 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 18 septembre 2020 - 13 août 2017 à 12:58
 jadami - 20 août 2017 à 14:09
Bonjour,

Ce code doit supprimer la « tbl Adhérents N1 » puis la recréer à partir de la « tbl Adhérents » avec sa liaison.

La suppression et le création de la « tbl Adhérents N1 » se fait correctement.

La liaison ne se fait pas avec la base frontale, par contre sur la Dorsale je retrouve une table liée tbl Adhérents N11 (voir image)
.

'---Ouverture de la base
Set db = CurrentDb

'--- On détermine le Chemin + le nom de la base
Path = CurrentProject.Path
Path = Left$(Path, InStr(Path, "Base 1 Partie Applicative (Frontale)") - 1) & "Base 2 Partie Donnée (Dorsale)" & "\" & "Aaa_princip.mdb"
strdb = Path

'--- On vérifie si un fichier du même nom que la base existe en ldb
'--- Si elle est ouverte la méthode Quit ne s’exécute pas
strDBldb = Replace(strdb, ".mdb", ".ldb")
If Dir(strDBldb) = "" Then blnAccQuit = True Else blnAccQuit = False

'--- On active la base dorsale (base cible)
Set appACC = CreateObject("Access.Application")
appACC.OpenCurrentDatabase strdb

'1er Sauvegarde tbl Adhérents N-1 '
blnCibleVide = False
If DCount("*", "tbl Adhérents") = 0 Then blnCibleVide = True

'1-Supprime la relation de la table "tbl Adhérents N-1" dans base cible
Call DeleteRelation("tbl Adhérents N-1")

2-Supprime la table "tbl Adhérents N-1" dans base cible
appACC.DoCmd.DeleteObject acTable, "tbl Adhérents N-1"

'3-Duplique la table "tbl Adhérents" dans "tbl Adhérents N-1", dans base cible (Avec les données)
appACC.DoCmd.TransferDatabase acImport, "Microsoft Access", strdb, acTable, _
"tbl Adhérents", "tbl Adhérents N-1", False

'4-Crée la liaison de la table Adhérents N-1 dans la base en cours
appACC.DoCmd.TransferDatabase acLink, "Microsoft Access", strdb, acTable, _
"tbl Adhérents N-1", "tbl Adhérents N-1"

'--- Fermeture de l’instance d’access
If blnAccQuit Then appACC.Quit acQuitSaveAll
Set appACC = Nothing


Avez-vous une idée de la raison de ce résultat ?

Merci pour votre aide.

Salutations

2 réponses

yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
Modifié le 13 août 2017 à 13:58
bonjour, peux-tu être plus précis à propos de " la recréer avec sa liaison"?
il serait sans doute plus clair que tu décrives la situation initiale.
dans quelle base se trouve ton code?
combien de bases as-tu: dorsale, frontale, cible, "la base", ...?

en résumé, il me semble que ceci:
           '4-Crée la liaison de la table Adhérents N-1 dans la base en cours
               appACC.DoCmd.TransferDatabase acLink, "Microsoft Access", strdb, acTable, _
                                   "tbl Adhérents N-1", "tbl Adhérents N-1"

crée un lien de et vers la base appACC, alors que tu voudrais que ce lien soit créé de la base où se trouve le code vers la base appACC. est-ce exact?

si oui, je suggère:
DoCmd.TransferDatabase acLink, "Microsoft Access", strdb, acTable, _
                                   "tbl Adhérents N-1", "tbl Adhérents N-1"
0
Bonjour,

Merci pour ta réponse.

J'ai en effet une base Dorsale et une base Frontale et ta suggestion

DoCmd.TransferDatabase acLink, "Microsoft Access", strdb, acTable, _
"tbl Adhérents N-1", "tbl Adhérents N-1"


est la bonne.

Salutations.
0