Signaler

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

Posez votre question jadami 36Messages postés mercredi 14 mars 2007Date d'inscription 5 octobre 2017 Dernière intervention - Dernière réponse le 20 août 2017 à 14:09 par jadami
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
Utile
+0
plus moins
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"
Donnez votre avis
Utile
+0
plus moins
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.
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !