Simplifier les noms de tables liées
Vous avez vu dans cet article comment lier des tables Oracle à un frontal Access (le principe étant sensiblement le même pour d’autres moteurs comme MySQL ou PostgreSQL). Le problème est que, dans ce cas, le nom des liaisons reprend généralement le schéma de la base de données d’origine. Comment simplifier ces noms rapidement ?
Un exemple ?
Dans l’exemple ci-dessous, les tables tblActeurs
, tblClients
et autres sont utilisées par un utilisateur ORAVID
, ce qui équivaut à un schéma dans la base Oracle (en gros : un espace de travail cloisonné). En SQL, la table serait référencée par ORAVID.tblActeurs
; par contre, la liaison Access devient ORAVID_TBLACTEURS
.
L’inconvénient est que les objets Access (requêtes, formulaires, états ou code VBA) qui vont reposer sur ces liens vont utiliser ces noms longs, ce qui n’est pas vraiment pratique. Rien ne vous empêche de les modifier (notamment d’enlever ORAVID_
, dans l’exemple ci-dessus), pour simplifier votre travail.
Enlever le préfixe de façon automatique
La première solution consiste à renommer chaque liaison manuellement : clic droit / Renommer (ou F2
) sur une liaison, puis suppression du préfixe ORAVID_
. Mais on peut faire mieux si le nombre de tables est important :
- Créez un nouveau module standard dans votre base de données (onglet Modules).
- Recopiez le code ci-dessous dans ce module, puis enregistrez le module.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
' --- ' SUPPRESSION DE PREFIXE DANS UN NOM DE TABLE ' --- Function RenommerTables(ByVal strPrefixe As String) Dim tdf As DAO.TableDef ' Supprimer le préfixe des tables strPrefixe = UCase(strPrefixe) For Each tdf In CurrentDb.TableDefs If UCase(Left(tdf.Name, Len(strPrefixe))) = strPrefixe Then tdf.Name = Mid(tdf.Name, Len(strPrefixe) + 1) End If Next ' Mettre à jour la fenêtre de base de données Application.RefreshDatabaseWindow End Function |
Le bout de code ci-dessus parcourt toutes les tables (ou liaisons) de la base de données Access, à la recherche d’un préfixe donné. Si le nom de la table démarre par ce préfixe, celui-ci est supprimé. Pour appeler la fonction :
- Faites apparaître la fenêtre Exécution (
CTRL
+G
). - Tapez dans cette fenêtre :
1 |
RenommerTables "ORAVID_" |
…si ORAVID_
est le préfixe à enlever (notez que le souligné fait partie du préfixe, car il doit aussi être supprimé).
Pour plus de détails sur les références, consultez cette page.
Bonjour et merci bien pour cette contribution
à bientôt
Je pense qu’Access n’est pas utile dans ce cas. Je ferais en sorte que Word attaque directement les données SQL Server.
Sous Word 2003, par exemple, on peut créer une source ODC qui ressemble à une connexion ODBC. Il suffit de fournir le nom du serveur SQL Server, un nom d’utilisateur, et le mot de passe qui va avec. A partir de là, Word peut voir les tables et les requêtes (vues) SQL Server, et les utiliser comme source de publipostage.
Lier ACCESS et SQL SERVER, c’est très pratique, mais comment on fait le publipostage d’un table liée à SQL SERVER vers Word?