OVH Cloud OVH Cloud

Importer un table présente dans différentes mdb

2 réponses
Avatar
Jean-Marc
Bonjour à toutes et à tous,

Voici mon problème :
Soit différents secteurs contenant des points.
Soit une mdb par secteur contenant, entre autre, une table avec les infos
sur les points.

Recherche :
Il me faut, dans la mdb actuelle, importer tous les points qui sont dans les
tables Points de toutes les mdb d'un répertoire particulier. Sachant aussi
que certains points peuvent se retrouver dans différents secteurs mais
qu'ils ne doivent se retrouver qu'une seule fois dans la table finale.

A la main, je suis capable d'importer la table point d'une mdb puis, à
l'aide d'une requête ajout, je suis capable d'ajouter les points à la table
de destination.

Toutefois, comme il y a 136 mdb à importer, à la main c'est un peu long.
Surtout que ce sera à recommencer dans qq semaines lorsqu'il faudra refaire
la même chose pour un autre mandat.

Je voudrais donc savoir comment procéder pour créer un module qui me
permettrait d'automatiser cela au maximum.
Peut-être même que qqn connais un endroit où trouver une base que
j'adapterais. Je pense ne pas être le premier à devoir faire ce genre de
chose, alors pourquoi réinventer la roue.
Je cherche, dans mon module, à pouvoir choisir les tables à importer à
partir d'une fenêtre type explorateur (J'avais vu il y a un certain temps
que c'était possible mais je ne retrouve plus où) puis d'automatiser
l'importation.

Merci de vos z'avis z'avisés,
Jean-Marc

2 réponses

Avatar
JeanYves \(au pro\)
Salut Jean-Marc



Moi, j'attacherais les tables plutôt que de les importer. Je fais cela
régulièrement avec ceci ;



1 - j'ai crée une table T_INITIALISATION dans laquelle il les champs
MonPath1, MaDdb1, MonPath2, MaDdb2 ETC ...

Dans MonPathXX j'inscris le chemin en terminant par par exemple :
C:MesBases

Dans MaDdbxx j'inscris le nom de la base à ouvrir par exemple :
MaBase1.Mdb



2 - Pour la connection j'ai créé autant de fonctions Fnc_ConnectDbXX() que
j'ai de .Mdb



Public Function Fnc_ConnectDb1()

Dim MaBase As Database

Dim TbInit As Recordset

Dim Tb001, tb002 As TableDef



Set MaBase = CurrentDb

Set TbInit = MaBase.OpenRecordset("T_INITIALISATION")



Set Tb001 = MaBase.CreateTableDef("MaTable1")

Set tb002 = MaBase.CreateTableDef("MaTable2")

ETC ....





'Défini la base source et son chemin

Tb001.CONNECT = ";DATABASE=" & TbInit![MonPath1] & TbInit![MaDdb1]

Tb001.SourceTableName = "MaTable1" 'Défini le nom de la tb source

MaBase.TableDefs.Append Tb001 'Permet échanges
Entrée/Sortie entre 2tb



'Défini la base source et son chemin

tb002.CONNECT = ";DATABASE=" & TbInit![MonPath1] & TbInit![MaDdb1]

tb002.SourceTableName = "MaTable2" 'Défini le nom de la tbsource

MaBase.TableDefs.Append tb002 'Permet échanges
Entrée/Sortie entre 2tb

ETC ...



'Ferme l'objet

TbInit.Close

MaBase.Close

'Libere la memoire

Set TbInit = Nothing

Set MaBase = Nothing

End Function



3 - Ensuite j'ai automatisé par une fonction qui appelle toutes les
fonctions de connection



Call Fnc_ConnectDb1()

Call Fnc_ConnectDb2()

ETC ...



4 - Enfin pour déconnecter j'ai une fonction de déconnection



Public Function Fnc_DisConnectDb()

DoCmd.DeleteObject acTable, "MaTable1"

DoCmd.DeleteObject acTable, "MaTable2"

End Function



Ces fonctions me permettent d'attacher et de détacher mes tables à la
demande. Tu peux t'inspirer de cela et l'adapter à tes besions, ça
fonctionne plutôt bien



Bon Courage

J-Yves





"Jean-Marc" a écrit dans le message de
news: s2Xhg.24401$
Bonjour à toutes et à tous,

Voici mon problème :
Soit différents secteurs contenant des points.
Soit une mdb par secteur contenant, entre autre, une table avec les infos
sur les points.

Recherche :
Il me faut, dans la mdb actuelle, importer tous les points qui sont dans
les tables Points de toutes les mdb d'un répertoire particulier. Sachant
aussi que certains points peuvent se retrouver dans différents secteurs
mais qu'ils ne doivent se retrouver qu'une seule fois dans la table
finale.

A la main, je suis capable d'importer la table point d'une mdb puis, à
l'aide d'une requête ajout, je suis capable d'ajouter les points à la
table de destination.

Toutefois, comme il y a 136 mdb à importer, à la main c'est un peu long.
Surtout que ce sera à recommencer dans qq semaines lorsqu'il faudra
refaire la même chose pour un autre mandat.

Je voudrais donc savoir comment procéder pour créer un module qui me
permettrait d'automatiser cela au maximum.
Peut-être même que qqn connais un endroit où trouver une base que
j'adapterais. Je pense ne pas être le premier à devoir faire ce genre de
chose, alors pourquoi réinventer la roue.
Je cherche, dans mon module, à pouvoir choisir les tables à importer à
partir d'une fenêtre type explorateur (J'avais vu il y a un certain temps
que c'était possible mais je ne retrouve plus où) puis d'automatiser
l'importation.

Merci de vos z'avis z'avisés,
Jean-Marc




Avatar
Jean-Marc
Merci beaucoup de ta réponse, Jean-Yves,

Je vais essayer d'adapter ces infos à mon cas et mes besoins.

Jean-Marc
"JeanYves (au pro)" a écrit dans le message de
news: e6b4k6$j55$
Salut Jean-Marc



Moi, j'attacherais les tables plutôt que de les importer. Je fais cela
régulièrement avec ceci ;



1 - j'ai crée une table T_INITIALISATION dans laquelle il les champs
MonPath1, MaDdb1, MonPath2, MaDdb2 ETC ...

Dans MonPathXX j'inscris le chemin en terminant par par exemple :
C:MesBases

Dans MaDdbxx j'inscris le nom de la base à ouvrir par exemple :
MaBase1.Mdb



2 - Pour la connection j'ai créé autant de fonctions Fnc_ConnectDbXX() que
j'ai de .Mdb



Public Function Fnc_ConnectDb1()

Dim MaBase As Database

Dim TbInit As Recordset

Dim Tb001, tb002 As TableDef



Set MaBase = CurrentDb

Set TbInit = MaBase.OpenRecordset("T_INITIALISATION")



Set Tb001 = MaBase.CreateTableDef("MaTable1")

Set tb002 = MaBase.CreateTableDef("MaTable2")

ETC ....





'Défini la base source et son chemin

Tb001.CONNECT = ";DATABASE=" & TbInit![MonPath1] & TbInit![MaDdb1]

Tb001.SourceTableName = "MaTable1" 'Défini le nom de la tb
source

MaBase.TableDefs.Append Tb001 'Permet échanges
Entrée/Sortie entre 2tb



'Défini la base source et son chemin

tb002.CONNECT = ";DATABASE=" & TbInit![MonPath1] & TbInit![MaDdb1]

tb002.SourceTableName = "MaTable2" 'Défini le nom de la
tbsource

MaBase.TableDefs.Append tb002 'Permet échanges
Entrée/Sortie entre 2tb

ETC ...



'Ferme l'objet

TbInit.Close

MaBase.Close

'Libere la memoire

Set TbInit = Nothing

Set MaBase = Nothing

End Function



3 - Ensuite j'ai automatisé par une fonction qui appelle toutes les
fonctions de connection



Call Fnc_ConnectDb1()

Call Fnc_ConnectDb2()

ETC ...



4 - Enfin pour déconnecter j'ai une fonction de déconnection



Public Function Fnc_DisConnectDb()

DoCmd.DeleteObject acTable, "MaTable1"

DoCmd.DeleteObject acTable, "MaTable2"

End Function



Ces fonctions me permettent d'attacher et de détacher mes tables à la
demande. Tu peux t'inspirer de cela et l'adapter à tes besions, ça
fonctionne plutôt bien



Bon Courage

J-Yves





"Jean-Marc" a écrit dans le message de
news: s2Xhg.24401$
Bonjour à toutes et à tous,

Voici mon problème :
Soit différents secteurs contenant des points.
Soit une mdb par secteur contenant, entre autre, une table avec les infos
sur les points.

Recherche :
Il me faut, dans la mdb actuelle, importer tous les points qui sont dans
les tables Points de toutes les mdb d'un répertoire particulier. Sachant
aussi que certains points peuvent se retrouver dans différents secteurs
mais qu'ils ne doivent se retrouver qu'une seule fois dans la table
finale.

A la main, je suis capable d'importer la table point d'une mdb puis, à
l'aide d'une requête ajout, je suis capable d'ajouter les points à la
table de destination.

Toutefois, comme il y a 136 mdb à importer, à la main c'est un peu long.
Surtout que ce sera à recommencer dans qq semaines lorsqu'il faudra
refaire la même chose pour un autre mandat.

Je voudrais donc savoir comment procéder pour créer un module qui me
permettrait d'automatiser cela au maximum.
Peut-être même que qqn connais un endroit où trouver une base que
j'adapterais. Je pense ne pas être le premier à devoir faire ce genre de
chose, alors pourquoi réinventer la roue.
Je cherche, dans mon module, à pouvoir choisir les tables à importer à
partir d'une fenêtre type explorateur (J'avais vu il y a un certain temps
que c'était possible mais je ne retrouve plus où) puis d'automatiser
l'importation.

Merci de vos z'avis z'avisés,
Jean-Marc