Exécuter une instruction SQL sur une base dorsale
A partir d’une base frontale liée à une base dorsale en réseau (format MDB), je voudrais créer une nouvelle table dans ma base dorsale (par exemple, pour faire une mise à jour de mon application). Comment faire ?
Avant toute chose…
D’autres articles du grenier traitent de sujets très proches. Pensez donc à consulter :
- Modifier la structure d’une table liée en VBA
- Chemin de la base dorsale
- Modifier la taille d’un champ en VBA
Le code
Pour simplifier la mise en œuvre, voici une nouvelle procédure VBA (à recopier dans un module standard) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
' --- ' EXECUTION D'UNE CHAINE SQL DDL SUR UNE BASE LIEE ' --- ' Sub ModifierBaseDorsale( _ ByVal strBase As String, _ ByVal strSQL As String) ' Ouvrir la base liée ' On suppose que la base n'est pas protégée, ' et qu'elle n'est pas en cours d'utilisation. Dim DistantDB As DAO.Database Set DistantDB = OpenDatabase(strBase) ' Exécuter la commande SQL DistantDB.Execute strSQL ' On libère les objets DistantDB.Close Set DistantDB = Nothing End Sub |
Pour plus de détails sur les références, consultez cette page.
Tester
Par exemple, pour créer une nouvelle table dans la base dorsale :
- Placez-vous dans la base frontale (où vous avez recopié le code donné plus haut).
- Faites apparaître la fenêtre Exécution (
CTRL
+G
). - Tapez (sur une seule ligne) quelque chose comme :
1 2 |
ModifierBaseDorsale "C:...dorsale.mdb", "CREATE TABLE [tblDummy] ([Id] COUNTER PRIMARY KEY, [Nom] TEXT(30), [Prénom] TEXT(20))" |
Ceci crée, dans la base dorsale.mdb, une nouvelle table appelée tblDummy
. La table aura 3 champs (Id
, de type NuméroAuto, Nom
et Prénom
de type Texte). Les crochets sont facultatifs, sauf si vos noms de champs ou de tables contiennent des espaces.
Et si je ne connais pas le chemin exact de la base dorsale ?
Reportez-vous à l’article Chemin de la base dorsale donné plus haut. En y récupérant la fonction CheminDorsale()
, vous pouvez aménager la ligne ci-dessus par :
1 2 |
ModifierBaseDorsale CheminDorsale("une table liée"), "CREATE TABLE [tblDummy] ([Id] COUNTER PRIMARY KEY, [Nom] TEXT(30), [Prénom] TEXT(20))" |
approfondis mes connaissances dans la programmation de access