Fabio972
Messages postés62Date d'inscriptiondimanche 22 octobre 2000StatutMembreDernière intervention 4 août 2004
-
29 juil. 2004 à 18:06
cs_defrance
Messages postés24Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention20 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.
cs_defrance
Messages postés24Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention20 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és24Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention20 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és5Date d'inscriptiondimanche 27 août 2006StatutMembreDernière intervention14 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és24Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention20 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és5Date d'inscriptiondimanche 27 août 2006StatutMembreDernière intervention14 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és24Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention20 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és5Date d'inscriptiondimanche 27 août 2006StatutMembreDernière intervention14 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és2Date d'inscriptionlundi 27 avril 2009StatutMembreDernière intervention27 février 2022 27 avril 2009 à 15:43
Bonjour à tous,
comment utilise t'on le code de DEFRANCE ?
Merci
Krov
hachy
Messages postés1Date d'inscriptionmardi 29 janvier 2008StatutMembreDernière intervention22 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és24Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention20 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és62Date d'inscriptiondimanche 22 octobre 2000StatutMembreDerniè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 ?!?
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 ;-)
cs_defrance
Messages postés24Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention20 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és212Date d'inscriptionsamedi 8 février 2003StatutMembreDernière intervention25 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és24Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention20 novembre 2011 30 juil. 2004 à 20:30
pas de quoi, pense à mettre ta prose à disposition de la communauté ;-)
Fabio972
Messages postés62Date d'inscriptiondimanche 22 octobre 2000StatutMembreDerniè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és62Date d'inscriptiondimanche 22 octobre 2000StatutMembreDerniè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.
31 mars 2011 à 11:35
' 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
14 févr. 2010 à 19:11
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
14 févr. 2010 à 18:48
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+
14 févr. 2010 à 18:27
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...
14 févr. 2010 à 18:12
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.
12 févr. 2010 à 18:05
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é...
12 févr. 2010 à 16:40
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.
27 avril 2009 à 15:43
comment utilise t'on le code de DEFRANCE ?
Merci
Krov
22 févr. 2008 à 16:50
j'ai crée une base de donnée access sous ADO
je n'arrive pas à mettre à jour 2 table liée.
aidez mois
5 août 2004 à 00:53
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 ...
4 août 2004 à 22:23
- 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
31 juil. 2004 à 18:13
31 juil. 2004 à 16:29
càd le "lier une table" mais avec du vba ?
30 juil. 2004 à 20:30
30 juil. 2004 à 14:17
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 !!!
29 juil. 2004 à 18:06
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 !!!