OVH Cloud OVH Cloud

Lier les tables en VBA

21 réponses
Avatar
Guillaume
Bonjour,

Voil=E0, j'ai 2 .mdb, une contenant uniquement les=20
programmes (P), la 2=E8me uniquement les donn=E9es (D).
je voudrais lier 4 tables de ma base D vers ma base P =E0=20
l'ouverture de celle-ci. Je pense qu'il faut la codifier=20
en VBA ? Pourriez vous m'aider ?
Merci.

10 réponses

1 2 3
Avatar
Guillaume
Raymond,
je ne sais pas si ma fonction est bonne ou pas
mais lorsque je l'execute, il ne passe jamais à la
connexion TblDef.Connect = ";DATABASE=" & NewPath
& ";UID=;PWD="

merci de ton aide


Function Lier_Tables()
Dim NewPath As String
Dim nbTbl As Long
Dim idx As Long
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim TblDef As TableDef


Set dbs = CurrentDb()

On Error Resume Next
nbTbl = dbs.TableDefs.Count
On Error Resume Next

NewPath = "D:TestVerneuil_Data.mdb"
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
' MsgBox (TblDef.Name)
If TblDef.Name = "Commande" Or _
TblDef.Name = "Detail_Commande" Or _
TblDef.Name = "Plat" Then
TblDef.Connect = ";DATABASE=" & NewPath
& ";UID=;PWD="
End If
Next idx
End Function






-----Message d'origine-----
Tu peux tester le nom de la table ici:
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
if Tbldef.Name = "aazaz" or Tbldef.Name
= "bbbbb" or then

TblDef.Connect ........
continuer ici la procédure
end if

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit
dans le message de

news:104101c4262c$86149990$
La .mdb contenant les données se trouvent
dans "D:TestVerneuil_Data.mdb" j'ai donc renseigné
Newpath avec cette valeur mais comment je dis à Access de
prendre uniquement les 4 tables que je veux ?
voici la fonction que j'ai faite :

Function Lier_Tables()
Dim NewPath As String
Dim nbTbl As Long
Dim idx As Long
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim TblDef As TableDef


Set dbs = CurrentDb()

On Error Resume Next
nbTbl = dbs.TableDefs.Count
On Error Resume Next

NewPath = "D:TestVerneuil_Data.mdb"
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
TblDef.Connect = ";DATABASE=" & NewPath
& ";UID=;PWD="
TblDef.RefreshLink
Next idx
End Function

Mercide ton aide



.



Avatar
Guillaume
Raymond, Quelle est l'instruction pour désigner la base de
données dont on veut lier les tables ?

Cordialement
-----Message d'origine-----
Tu peux tester le nom de la table ici:
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
if Tbldef.Name = "aazaz" or Tbldef.Name
= "bbbbb" or then

TblDef.Connect ........
continuer ici la procédure
end if

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit
dans le message de

news:104101c4262c$86149990$
La .mdb contenant les données se trouvent
dans "D:TestVerneuil_Data.mdb" j'ai donc renseigné
Newpath avec cette valeur mais comment je dis à Access de
prendre uniquement les 4 tables que je veux ?
voici la fonction que j'ai faite :

Function Lier_Tables()
Dim NewPath As String
Dim nbTbl As Long
Dim idx As Long
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim TblDef As TableDef


Set dbs = CurrentDb()

On Error Resume Next
nbTbl = dbs.TableDefs.Count
On Error Resume Next

NewPath = "D:TestVerneuil_Data.mdb"
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
TblDef.Connect = ";DATABASE=" & NewPath
& ";UID=;PWD="
TblDef.RefreshLink
Next idx
End Function

Mercide ton aide



.



Avatar
Raymond [mvp]
où passes-tu dans la réalité ?
ton msgbox te donne le nom de la table ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit dans le message de
news:11fb01c42637$cf287b50$
Raymond,
je ne sais pas si ma fonction est bonne ou pas
mais lorsque je l'execute, il ne passe jamais à la
connexion TblDef.Connect = ";DATABASE=" & NewPath
& ";UID=;PWD="

merci de ton aide


Function Lier_Tables()
Dim NewPath As String
Dim nbTbl As Long
Dim idx As Long
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim TblDef As TableDef


Set dbs = CurrentDb()

On Error Resume Next
nbTbl = dbs.TableDefs.Count
On Error Resume Next

NewPath = "D:TestVerneuil_Data.mdb"
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
' MsgBox (TblDef.Name)
If TblDef.Name = "Commande" Or _
TblDef.Name = "Detail_Commande" Or _
TblDef.Name = "Plat" Then
TblDef.Connect = ";DATABASE=" & NewPath
& ";UID=;PWD="
End If
Next idx
End Function
Avatar
Guillaume
Par la logique des choses
je dois avoir un CurrentDB et une instruction pour ouvrir
l'autre .mdb or je ne vois pas dans l'exemple d'Arnaud,
les instructions pour ouvrir l'autre base de donnees
laquelle je lie mes 4 tables

-----Message d'origine-----
où passes-tu dans la réalité ?
ton msgbox te donne le nom de la table ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit
dans le message de

news:11fb01c42637$cf287b50$
Raymond,
je ne sais pas si ma fonction est bonne ou pas
mais lorsque je l'execute, il ne passe jamais à la
connexion TblDef.Connect = ";DATABASE=" & NewPath
& ";UID=;PWD="

merci de ton aide


Function Lier_Tables()
Dim NewPath As String
Dim nbTbl As Long
Dim idx As Long
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim TblDef As TableDef


Set dbs = CurrentDb()

On Error Resume Next
nbTbl = dbs.TableDefs.Count
On Error Resume Next

NewPath = "D:TestVerneuil_Data.mdb"
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
' MsgBox (TblDef.Name)
If TblDef.Name = "Commande" Or _
TblDef.Name = "Detail_Commande" Or _
TblDef.Name = "Plat" Then
TblDef.Connect = ";DATABASE=" & NewPath
& ";UID=;PWD="
End If
Next idx
End Function




.



Avatar
Raymond [mvp]
je ne suis plus là .

Il n'est pas question d'ouvrir l'autre base mais de lier des tables de
l'autre base.
le chemin de l'autre base est donné sur la ligne de connexion:
TblDef.Connect = ";DATABASE=" & newpath & ";UID=;PWD="

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit dans le message de
news:11f401c42640$205880d0$
Par la logique des choses
je dois avoir un CurrentDB et une instruction pour ouvrir
l'autre .mdb or je ne vois pas dans l'exemple d'Arnaud,
les instructions pour ouvrir l'autre base de donnees
laquelle je lie mes 4 tables

-----Message d'origine-----
où passes-tu dans la réalité ?
ton msgbox te donne le nom de la table ?



Avatar
Guillaume
Dans ce cas là, comment teste-on les 4 tables que l'on
veut lier ?

Ta syntaxe est donc fausse
"Tu peux tester le nom de la table ici:
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
if Tbldef.Name = "aazaz" or Tbldef.Name = "bbbbb"
or then
TblDef.Connect ........
continuer ici la procédure
end if
"


-----Message d'origine-----
je ne suis plus là .

Il n'est pas question d'ouvrir l'autre base mais de lier
des tables de

l'autre base.
le chemin de l'autre base est donné sur la ligne de
connexion:

TblDef.Connect = ";DATABASE=" & newpath & ";UID=;PWD="

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit
dans le message de

news:11f401c42640$205880d0$
Par la logique des choses
je dois avoir un CurrentDB et une instruction pour ouvrir
l'autre .mdb or je ne vois pas dans l'exemple d'Arnaud,
les instructions pour ouvrir l'autre base de donnees
laquelle je lie mes 4 tables

-----Message d'origine-----
où passes-tu dans la réalité ?
ton msgbox te donne le nom de la table ?




.




Avatar
Guillaume
Raymond, puis je avoir un exemple plus concret
car je n'arrive pas à faire les tests d'apres les exemples
et les aides ne sont terribles dans Access
-----Message d'origine-----
je ne suis plus là .

Il n'est pas question d'ouvrir l'autre base mais de lier
des tables de

l'autre base.
le chemin de l'autre base est donné sur la ligne de
connexion:

TblDef.Connect = ";DATABASE=" & newpath & ";UID=;PWD="

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit
dans le message de

news:11f401c42640$205880d0$
Par la logique des choses
je dois avoir un CurrentDB et une instruction pour ouvrir
l'autre .mdb or je ne vois pas dans l'exemple d'Arnaud,
les instructions pour ouvrir l'autre base de donnees
laquelle je lie mes 4 tables

-----Message d'origine-----
où passes-tu dans la réalité ?
ton msgbox te donne le nom de la table ?




.




Avatar
Raymond [mvp]
le test est celui-ci:
if Tbldef.Name = "aazaz" or Tbldef.Name = "bbbbb" ..........
c'est le nom de la table attaché et de la table de la base principale.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit dans le message de
news:124001c42644$ea80aeb0$
Dans ce cas là, comment teste-on les 4 tables que l'on
veut lier ?

Ta syntaxe est donc fausse
"Tu peux tester le nom de la table ici:
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
if Tbldef.Name = "aazaz" or Tbldef.Name = "bbbbb"
or then
TblDef.Connect ........
continuer ici la procédure
end if
"
Avatar
Raymond [mvp]
Pour avoir du concret il faudrait tes bases , mais je ne pourrais pas demain
(raison médicale).
si demain soir tu n'as pas évolué passe un message et je verrais ce que je
peux faire.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit dans le message de
news:12f901c42645$79cccb80$
Raymond, puis je avoir un exemple plus concret
car je n'arrive pas à faire les tests d'apres les exemples
et les aides ne sont terribles dans Access
Avatar
Guillaume
Je donnerais ma langue aux chats
Je t'ai envoyé 2 bases de donnees à l'adresse



-----Message d'origine-----
le test est celui-ci:
if Tbldef.Name = "aazaz" or Tbldef.Name
= "bbbbb" ..........

c'est le nom de la table attaché et de la table de la
base principale.


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit
dans le message de

news:124001c42644$ea80aeb0$
Dans ce cas là, comment teste-on les 4 tables que l'on
veut lier ?

Ta syntaxe est donc fausse
"Tu peux tester le nom de la table ici:
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
if Tbldef.Name = "aazaz" or Tbldef.Name = "bbbbb"
or then
TblDef.Connect ........
continuer ici la procédure
end if
"



.



1 2 3