RATTACHEMENT DE TABLE AUTOMATIQUE ACCESS

Fabio972 Messages postés 62 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 4 août 2004 - 29 juil. 2004 à 18:06
cs_defrance Messages postés 24 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 20 novembre 2011 - 31 mars 2011 à 11:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23419-rattachement-de-table-automatique-access

cs_defrance Messages postés 24 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 20 novembre 2011
31 mars 2011 à 11:35
Nouvelle version avec utilisation d'une table pour stocké le rattachement

' rattache les tables à partir du fichier ini passé en paramètre
' le fichier contient les lignes avec ce format :
' NOMTABLE=Param_de_connection
Sub P_RattacheTable()
Dim TableEnCours As TableDef

Set db = CurrentDb
sql = "select * from TableAttache"
Set rsTblAttache = db.OpenRecordset(sql)
Do While Not rsTblAttache.EOF
For Each TableEnCours In db.TableDefs
'on vérifie que c'est la bonne table
If TableEnCours.SourceTableName = rsTblAttache.Fields("NomTableAttache") Then
'mise à jours du lien ssi il a changé
If TableEnCours.Connect <> rsTblAttache.Fields("LienTableAttache") Then
TableEnCours.Connect = rsTblAttache.Fields("LienTableAttache")
TableEnCours.RefreshLink
End If
Exit For
End If
Next
rsTblAttache.MoveNext
Loop
rsTblAttache.Close
Set rsTblAttache = Nothing
End Sub

Sub P_GenRattacheTable()
Dim TableEnCours As TableDef
Set db = CurrentDb
sql = "delete from TableAttache"
db.Execute (sql)
For Each TableEnCours In db.TableDefs
' uniquement si la table est attachée
If Len(TableEnCours.Connect) > 0 Then
sql = "insert into TableAttache (NomTableAttache, LienTableAttache) values ("
sql = sql & "'" & TableEnCours.SourceTableName & "',"
sql = sql & "'" & TableEnCours.Connect & "')"
db.Execute (sql)
End If
Next

End Sub
cs_defrance Messages postés 24 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 20 novembre 2011
14 févr. 2010 à 19:11
comme on dit, les choses les plus simples,
Je suis AE et j'ai aussi mon site perso ici : www.benke.fr
si tu as des besoins en dev, ben hésite pas
SamiBenelhadj Messages postés 5 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 14 février 2010
14 févr. 2010 à 18:48
Bon sang, j'utilise ta solution 1 (inélégante à souhait !)depuis 15 ans sans jamais avoir pensé à la seconde !!! D'autant que, si je me souviens bien, une création d'attache vers un back-end est quasi-instantanné, même si il est ouvert par d'autres utilisateurs.

Encore bravo pour cette suggestion !!!

Si je peux t'être d'une quelconque aide, n'hésite pas : tu peux voir mes applis en tapant cd.concept.online.fr dans ton navigateur.

A+
cs_defrance Messages postés 24 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 20 novembre 2011
14 févr. 2010 à 18:27
D'après ce que j'en sait ce n'est pas possible car access vérifie que la base est accessible (ce qui est assez logique, le contraire serait génant).
Une solution pas très élégante serait de reproduire ton environnement back-end en qualif et préparer ta connection ainsi.
Sinon tu n'attaches aucune table lors de ta configuration et tu laisses la fonction créer les attachements lors de son premier lancement chez ton client...
SamiBenelhadj Messages postés 5 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 14 février 2010
14 févr. 2010 à 18:12
Merci pour cette réponse rapide : je vois que j'ai affaire à un passionné !

Je vais reformuler plus simplement : comment créer une attache ou màj la propriété .Connect vers la table d'un fichier de base de données MS Access inaccessible ?

Je confirme que c'est hyper utile pour de multiples raisons.
cs_defrance Messages postés 24 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 20 novembre 2011
12 févr. 2010 à 18:05
Bonjour,
Bonne question, j'ai modifié mon source pour vérifier la présence de la base AVANT de tenter la connection/création du lien
par contre j'ai pas compris le second pb, car le module ne met pas à jour la connection si elle est identique à celle paramétré...
SamiBenelhadj Messages postés 5 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 14 février 2010
12 févr. 2010 à 16:40
Bonjour,

J'ai une question pour DEFRANCE qui semble bien maîtriser le sujet : la méthode utilisée (classique) fonctionne bien tant que le fichier contenant les tables à attacher est accessible mais ne marche plus dans le cas contraire. Auriez-vous une solution pour "forcer" l'attache de table en stockant dans la propriété .Connect un chemin de fichier inexistant ?
Cela serait très pratique par exemple :
- pour préparer offline un Front End à un client pour lequel on n'a pas accès au Back End,
- ou pour accéler l'attache de tables car lorsqu'un Back End est ouvert par plusierus utilisateurs, la màj de la proriété .Connect de chaque table peut devenir très longue...

Ca fait longtemps que je recherche une solution, sans succès.

Merci pour votre aide.
krov Messages postés 2 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 27 février 2022
27 avril 2009 à 15:43
Bonjour à tous,

comment utilise t'on le code de DEFRANCE ?

Merci
Krov
hachy Messages postés 1 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 22 février 2008
22 févr. 2008 à 16:50
bonjour à tous
j'ai crée une base de donnée access sous ADO
je n'arrive pas à mettre à jour 2 table liée.
aidez mois
cs_defrance Messages postés 24 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 20 novembre 2011
5 août 2004 à 00:53
modifier un rattachement : la base a des tables liés qui ne sont pas ceux qui sont défini dans le fichiers ini -> on met à jour la liaison sur la bonne base/table.
créer une liaison : la base de possède pas la table défini dans le fichier ini -> on crée une table attaché à partir des infos du fichier ini
La principale utilisation que je fait de cette source et la livraison en production de base access : j'évite de me refaire manuellement le rattachement des tables qui peuvent se trouver dans plusieurs bases ...
Fabio972 Messages postés 62 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 4 août 2004
4 août 2004 à 22:23
Dites les gars... c'est quoi la différence entre :

- modifier un rattachement
et
-creer une liaison de table ???

"lier une table" mais avec du vba : c'est ce que fait cette source non ?!?

Sinon DeFrance, je comptais bien m'y mettre aujourd'hui, mais je suis tombé sur cette merveille :
http://www.vbfrance.com/code.aspx?ID=3311

La lisaion des bases depuis cette interface serait fort plaisante. Bien sur, faut prévoir les 100Mo que demandera VB pour le setup par rapport aux qques ko d'une base Access (tant qu'à rattacher des tables Access, c'est sûr qu'il est sur la machine ;-)

Autre source sympa :
http://www.vbfrance.com/codes/GENERATEUR_DE_SCRIPT_SQL_-ACCESS_VERS_SQL-/25127.aspx
cs_defrance Messages postés 24 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 20 novembre 2011
31 juil. 2004 à 18:13
je dirai oui, c'est une excellente idée d'évolution. Cela tombe bien j'avais du temps la semaine prochaine ;-)
cs_tombal Messages postés 212 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 25 juillet 2005
31 juil. 2004 à 16:29
Salut, je voudrais savoir si y'a moyen non pas de modifier un rattachement mais de creer une liaison de table
càd le "lier une table" mais avec du vba ?
cs_defrance Messages postés 24 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 20 novembre 2011
30 juil. 2004 à 20:30
pas de quoi, pense à mettre ta prose à disposition de la communauté ;-)
Fabio972 Messages postés 62 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 4 août 2004
30 juil. 2004 à 14:17
Bon, testé plus en profondeur, je confirme que cette fonction fais ce qu'elle dit.

Légèrement modifiée et mise dans une base à part, j'ai pu pour toute une liste de bases ACCESS avoir un rapport sur leurs tables liées.

De même, j'ai pu rattacher les nouvelles tables sans problèmes (modification du chemin dans le fichier généré).

Il ne me reste plus qu'à faire une belle interface et hop !!! je pourrais gérer mes tables liées dans tous les sens !!!


Merci beaucoup DeFrance !!!
Fabio972 Messages postés 62 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 4 août 2004
29 juil. 2004 à 18:06
Sympa ce code !!!

quand on (re)commence sur ACCESS avec des tables liées partout, il est toujours pratique de pouvoir définir l'envirronement d'utilisatoin de la base.

Cette fonction fait ce qu'elle dit (en tous cas, écrire le fichier si rien de spécifier) et de bien belle manière.
Ce qui m'a permis de voir vers quoi sont rattachées mes tables sans me fouler.

Bravo et merci !!!
Rejoignez-nous