Le grenier Access

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 18 avril 2008

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 :

  1. Créez un nouveau module standard dans votre base de données (onglet Modules).
  2. Recopiez le code ci-dessous dans ce module, puis enregistrez le module.
' ---
' 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 :
  1. Faites apparaître la fenêtre Exécution (CTRL + G).
  2. Tapez dans cette fenêtre :
RenommerTables "ORAVID_"
...si ORAVID_ est le préfixe à enlever (notez que le souligné fait partie du préfixe, car il doit aussi être supprimé).
Important
L'exemple de code ci-dessus fait appel à la bibliothèque DAO (Microsoft DAO Object Library). Cette bibliothèque doit être associée à votre base de données pour que le programme fonctionne.
 
Pour plus de détails sur les références, consultez cette page.

jeudi 10 avril 2008

Chaînes de connexion

Le saviez-vous ?

En VBA, sous Access, il est souvent utile d'ouvrir une connexion vers une base de données externe quelconque (pour exporter, importer ou simplement consulter des données). La base distante peut être au format MDB Access (ou ACCDB pour Access 2007), mais il peut aussi s'agir d'une base SQL Server, Oracle, MySQL, PostgreSQL...

La connexion s'établit par l'intermédiaire de différentes interfaces (ODBC, .NET notamment). Chaque moteur a sa propre chaîne de connexion, qui varie en plus selon l'interface... Normalement, la documentation du moteur vous donne la chaîne de connexion pour telle ou telle interface.

Mais pour faire vite, vous pouvez aussi consulter le site ConnectionStrings, qui donne une liste plutôt complète des chaînes de connexion, moteur par moteur. Le site est simple, structuré, tout simplement pratique !

mercredi 26 mars 2008

Se connecter à des tables Oracle depuis Access

Une base Access peut se connecter à d'autres moteurs de bases de données (SQL Server, Oracle, MySQL, PostgreSQL, etc.) par différents mécanismes. Dans cet article, nous allons voir comment nous connecter à un serveur Oracle au travers d'une passerelle ODBC.

Lire la suite...

dimanche 2 septembre 2007

Introduction à ODBC

Le saviez-vous ?

Il est possible d'interfacer Access avec d'autres bases de données (SQL Server, Oracle, MySQL, PostgreSQL...) via ODBC.

Le principe

  1. Installez un pilote (driver) ODBC spécifique à la base de données qui vous intéresse (par exemple, le pilote ODBC pour MySQL si vous souhaitez connecter Access à MySQL).
  2. Paramétrez le pilote ODBC dans le panneau de configuration de votre ordinateur (Démarrer / Panneau de configuration / Outils d'administration / Sources de données ODBC).
  3. Ouvrez votre base de données Access.
  4. Cliquez sur Fichier / Données externes / Lier les tables, et pointez vers la source ODBC paramétrée au point 2.

dimanche 26 août 2007

Tables en lecture seule

Je connecte des tables externes (SQL Server, Oracle, MySQL, PostgreSQL, etc.) à ma base Access, mais celles-ci sont ouvertes en lecture seule : impossible d'ajouter, modifier ou supprimer des données...


  • Vérifiez dans le logiciel d'origine (SQL Server, Oracle, MySQL, etc.) si chaque table dispose d'une clef primaire. Le problème vient souvent de là.
  • Si c'est déjà le cas, vérifiez aussi les droits attribués aux tables d'origine.