Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/08/2011, 20h26   #1
Futur Membre du Club
 
Louise Pelletier
Inscription : août 2010
Messages : 49
Détails du profil
Informations personnelles :
Nom : Louise Pelletier

Informations forums :
Inscription : août 2010
Messages : 49
Points : 17
Points : 17
Par défaut Rétablir les Liaisons de tablées liées

Bonjur,
J'ai une base de données "LOG-Dossiers" qui a des tables liées dans 2 bases de données, Ces 2 bases sont placées dans un sous-répertoire de la base "LOG-Dossiers".
Dans la première base liée "LOG-Donn.accdb", j'ai 5 tables et dans la deuxième "Log-DoncG", j'ai 6 tables.

Comme je travaille à la maison et je dois transporter mes bases au travail, c'est assez long de refaire les liaisons avec l'écran "Link manager".

Dans le forum - FAQ access, j'ai vu les informations "Rétablir les liaisons des tables liées après déplacement d'une base fractionnée".
J'ai recopié la programmation suggérée en ajustant avec mes données. Là où je rencontre un problème, c'est lorsque arrive la ligne numéro 7:
Code :
1
2
3
4
5
6
7
        Set oTbl = oDb.CreateTableDef(strNomTable)
    With oTbl
        .Connect = strConnect
        .SourceTableName = strNomTable
    End With
    'Ajoute la table à la base de données
    oDb.TableDefs.Append oTbl: oDb.TableDefs.Refresh  ' cette ligne ???
J'ai un message qui me dit que la base existe. Bien sur qu'elle existe. puisque je veux juste refaire les liaisons.

Comment faire? De plus, je me demandais si les liaisons peuvent être mises à jour lorsque la base contenant les tables est ouverte ou faut-il que la procédure soit appelée au moment de l'ouverture exemple avec un module "autoexec"?

Merci
marycaLou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 23h44   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

Ton bout de code crée une table liée.

Pour une table liée déjà créée
Code :
1
2
3
4
5
6
7
    Set oTbl = oDb.TableDefs(strNomTable)
    With oTbl
        .Connect = strConnect
        .SourceTableName = strNomTable
    End With
    'Recrée le lien
    oTbl.RefreshLink
Remarque : La ligne 4 n'est pas indispensable si le nom de la table n'a pas changé dans la base de données externe.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 23h48   #3
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 103
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 103
Points : 8 728
Points : 8 728
Salut,

Je t'invite à consulter mon tutoriel, il ya un exemple complet sur les liaisons des tables.
Dans mon cas je DEV sur un portable je me suis créer un form pour basculer de local en distant par appui bouton, ceci est très pratique.

http://dolphy35.developpez.com/artic.../basesreseaux/

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 01h40   #4
Futur Membre du Club
 
Louise Pelletier
Inscription : août 2010
Messages : 49
Détails du profil
Informations personnelles :
Nom : Louise Pelletier

Informations forums :
Inscription : août 2010
Messages : 49
Points : 17
Points : 17
Bonjour,

Finalement, j'ai réussi à recréer mes liens.
J'avais tenté de faire un "oTbl.RefreshLink", mais j'ai une erreur me disant
"Opération invalide".

Pour solutionner le tout, je dois détruire mes talbes et les reconstruire.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
        For intI = 0 To UBound(stNomTables)
            'Crée une nouvelle table dans la base de données courante
            Set oTbl = oDb.CreateTableDef(stNomTables(intI))
            'Lie les deux tables
            oTbl.Connect = stConnect
            oTbl.SourceTableName = stNomTables(intI)
            'Effacer l'ancienne liaison avant d'Ajouter la table à la base de données
            oTbl.RefreshLink
            oDb.TableDefs.Delete stNomTables(intI)
            oDb.TableDefs.Append oTbl
        Next intI
        'Rafraichit la liste des tables
        oDb.TableDefs.Refresh
Ainsi, cela fonctionne, bien sur, je fais un backup de sécurité avant le tout.


Merci pour le tutoriel. Je compte bien l'étudier et voir ce que je pourrai modifier dans mon code pour le rendre plus pratique.

Merci
marycaLou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h44.


 
 
 
 
Partenaires

Hébergement Web