Menu

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

jadami 56 Messages postés mercredi 14 mars 2007Date d'inscription 18 mai 2018 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 

Votre réponse

2 réponses

yg_be 6019 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 19 juillet 2018 Dernière intervention - Modifié par yg_be le 13/08/2017 à 13:58
0
Merci
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
Merci
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