[VBA] Liaison d'une table Access par programme [Résolu]

jadami 44 Messages postés mercredi 14 mars 2007Date d'inscription 7 décembre 2017 Dernière intervention - 13 août 2017 à 12:58 - Dernière réponse :  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
Afficher la suite 
44Messages postés mercredi 14 mars 2007Date d'inscription 7 décembre 2017 Dernière intervention

2 réponses

Répondre au sujet
yg_be 4116 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - Modifié par yg_be le 13/08/2017 à 13:58
0
Utile
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"
Commenter la réponse de yg_be
0
Utile
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.
Commenter la réponse de jadami