Attacher des tables en VBA

Le
Francis SLAWNY
Bonjour

Je travaille avec Access 2003.
J'arrive à faire pas mal de choses mais je maîtrise encore mal la syntaxe
VBA.

J'ai deux bases B1.mdb et B2.mdb situées dans le même dossier MesBases

Je cherche à écrire un programme dans B2 qui au démarrage de B2 :

- Supprime toutes les tables de B2 dont le nom commence par "sup"
- Attache toute les tables de B1 dont le nom commence par "att"

Merci de votre aide
FS
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Chouette
Le #6726011
Bonsoir,

Pour (ré)-attacher des tables, je procède comme suit:

Private Sub ConnecterTables(CHEMIN As String)
' appellée à partir du formulaire de départ_OnLoad()
' Mise à jour des connexions des tables attachées
' (si la DB a été déplacée ou si la DB_Prog a été remplacée)

Dim MBPROG As Database
Dim tbl As TableDef
Dim ConnexionOld As String
Dim ConnexionNew As String
Dim NOMTBL As String

Set MBPROG = CodeDb()
Set tbl = MBPROG.TableDefs("table existante")
' REMARQUE: table existante qui doit être rattachée
ConnexionOld = tbl.Connect
ConnexionNew = "MS Access;PWD=password;database=" & CHEMIN
If ConnexionOld <> ConnexionNew Then
' Mise A Jour Connexions "tables attachées"
For Each tbl In MBPROG.TableDefs
NOMTBL = tbl.Name
If NOMTBL Like "att*" Then
tbl.Connect = ConnexionNew
tbl.RefreshLink
End If
Next
End If
end sub

Pour supprimer des tables, je tenterais qqch de similaire.

A plus, Ch.
Francis SLAWNY
Le #6726411
Merci pour ce programme qui va déjà bien m'avancer.

Je me pose aussi la question de savoir comment faire un programme qui fait
la même chose mais au lieu d'attacher il importe les tables.
Je vois que j'ai encore beaucoup à apprendre.
En tout cas merci.
FS



"Chouette" news:
Bonsoir,

Pour (ré)-attacher des tables, je procède comme suit:

Private Sub ConnecterTables(CHEMIN As String)
' appellée à partir du formulaire de départ_OnLoad()
' Mise à jour des connexions des tables attachées
' (si la DB a été déplacée ou si la DB_Prog a été remplacée)

Dim MBPROG As Database
Dim tbl As TableDef
Dim ConnexionOld As String
Dim ConnexionNew As String
Dim NOMTBL As String

Set MBPROG = CodeDb()
Set tbl = MBPROG.TableDefs("table existante")
' REMARQUE: table existante qui doit être rattachée
ConnexionOld = tbl.Connect
ConnexionNew = "MS Access;PWD=password;database=" & CHEMIN
If ConnexionOld <> ConnexionNew Then
' Mise A Jour Connexions "tables attachées"
For Each tbl In MBPROG.TableDefs
NOMTBL = tbl.Name
If NOMTBL Like "att*" Then
tbl.Connect = ConnexionNew
tbl.RefreshLink
End If
Next
End If
end sub

Pour supprimer des tables, je tenterais qqch de similaire.

A plus, Ch.


Loutox
Le #6738981
Salut,
voici deux fonctions que j'utilise pour importer des tables depuis une base
protegee ou non.

ce n'est pas très documenté mais devrait t'aider (cioller dans vba et voir
l'aide en ligne des instructions)

MERCI aux personnes sur le site desquelles j'ai trouvé ce code avant de le
bidouiller.

======================== ' base d'où on importe protégée par mot de passe

Function fImportePasswd()
Dim wrkDefault As Workspace
Dim vbase As Database
Set wrkDefault = DBEngine.Workspaces(0)
Set vbase = wrkDefault.OpenDatabase("C:vmVMSVM_princip.mdb", False,
False, ";pwd=spirou;")
DoCmd.TransferDatabase acImport, "Microsoft Access", "" & vbase.Name &
"", acTable, "TabFactVte", "TabFactVte"
vbase.Close
Set db = Nothing
End Function
======================================== 'sans protection sur la base source
DoCmd.TransferDatabase acImport, "Microsoft Access", NomBaseSource,
acTable, NomTable1, NomTable2
========================================


"Francis SLAWNY" news:
Merci pour ce programme qui va déjà bien m'avancer.

Je me pose aussi la question de savoir comment faire un programme qui fait
la même chose mais au lieu d'attacher il importe les tables.
Je vois que j'ai encore beaucoup à apprendre.
En tout cas merci.
FS



"Chouette" news:
Bonsoir,

Pour (ré)-attacher des tables, je procède comme suit:

Private Sub ConnecterTables(CHEMIN As String)
' appellée à partir du formulaire de départ_OnLoad()
' Mise à jour des connexions des tables attachées
' (si la DB a été déplacée ou si la DB_Prog a été remplacée)

Dim MBPROG As Database
Dim tbl As TableDef
Dim ConnexionOld As String
Dim ConnexionNew As String
Dim NOMTBL As String

Set MBPROG = CodeDb()
Set tbl = MBPROG.TableDefs("table existante")
' REMARQUE: table existante qui doit être rattachée
ConnexionOld = tbl.Connect
ConnexionNew = "MS Access;PWD=password;database=" & CHEMIN
If ConnexionOld <> ConnexionNew Then
' Mise A Jour Connexions "tables attachées"
For Each tbl In MBPROG.TableDefs
NOMTBL = tbl.Name
If NOMTBL Like "att*" Then
tbl.Connect = ConnexionNew
tbl.RefreshLink
End If
Next
End If
end sub

Pour supprimer des tables, je tenterais qqch de similaire.

A plus, Ch.






Francis SLAWNY
Le #6743681
Merci. Pas le temps de regarder aujourd'hui. Je m'y mets dès demain matin.
Il me semble bien que c'est ça que je cherchais.
Cordialement
FS



"Loutox" <Houloutox> a écrit dans le message de news:
48400488$0$9893$
Salut,
voici deux fonctions que j'utilise pour importer des tables depuis une
base protegee ou non.

ce n'est pas très documenté mais devrait t'aider (cioller dans vba et voir
l'aide en ligne des instructions)

MERCI aux personnes sur le site desquelles j'ai trouvé ce code avant de le
bidouiller.

======================== > ' base d'où on importe protégée par mot de passe

Function fImportePasswd()
Dim wrkDefault As Workspace
Dim vbase As Database
Set wrkDefault = DBEngine.Workspaces(0)
Set vbase = wrkDefault.OpenDatabase("C:vmVMSVM_princip.mdb", False,
False, ";pwd=spirou;")
DoCmd.TransferDatabase acImport, "Microsoft Access", "" & vbase.Name &
"", acTable, "TabFactVte", "TabFactVte"
vbase.Close
Set db = Nothing
End Function
======================================== > 'sans protection sur la base source
DoCmd.TransferDatabase acImport, "Microsoft Access", NomBaseSource,
acTable, NomTable1, NomTable2
======================================== >


"Francis SLAWNY" news:
Merci pour ce programme qui va déjà bien m'avancer.

Je me pose aussi la question de savoir comment faire un programme qui
fait la même chose mais au lieu d'attacher il importe les tables.
Je vois que j'ai encore beaucoup à apprendre.
En tout cas merci.
FS



"Chouette" de news:
Bonsoir,

Pour (ré)-attacher des tables, je procède comme suit:

Private Sub ConnecterTables(CHEMIN As String)
' appellée à partir du formulaire de départ_OnLoad()
' Mise à jour des connexions des tables attachées
' (si la DB a été déplacée ou si la DB_Prog a été remplacée)

Dim MBPROG As Database
Dim tbl As TableDef
Dim ConnexionOld As String
Dim ConnexionNew As String
Dim NOMTBL As String

Set MBPROG = CodeDb()
Set tbl = MBPROG.TableDefs("table existante")
' REMARQUE: table existante qui doit être rattachée
ConnexionOld = tbl.Connect
ConnexionNew = "MS Access;PWD=password;database=" & CHEMIN
If ConnexionOld <> ConnexionNew Then
' Mise A Jour Connexions "tables attachées"
For Each tbl In MBPROG.TableDefs
NOMTBL = tbl.Name
If NOMTBL Like "att*" Then
tbl.Connect = ConnexionNew
tbl.RefreshLink
End If
Next
End If
end sub

Pour supprimer des tables, je tenterais qqch de similaire.

A plus, Ch.










Publicité
Poster une réponse
Anonyme