7/8 Dans cette fiche...    

Début de page L'Assistant "Références croisées"

Note importante : un petit bug détecté à la dernière minute sur Access 2000 retarde la publication de l'Assistant. Les liens de téléchargement sont donc inactifs pour le moment. Revenez bientôt !

Si vous utilisez Access depuis un moment, vous savez que le nombre d'objets gérés (tables, requêtes, formulaires, états...) augmente vite, et qu'il est difficile de s'y retrouver au final.

Un autre problème risque de se présenter : si vous modifiez le nom d'un objet, tous les objets eux-mêmes basés sur le premier risquent de ne plus fonctionner. Essayez de renommer une table puis d'ouvrir toutes les requêtes, formulaires ou états basés sur cette table, pour voir !

Certes, Access 2000 améliore ce point, grâce à la correction automatique de noms (que vous paramétrez dans le menu Outils / Options / onglet Général). Mais il n'empêche qu'il est parfois utile, pour des raisons d'organisation,  de maintenance ou d'évolution de votre base Access, de connaître tous les objets qui "reposent" sur un objet donné.

Il serait donc pratique de pouvoir trouver, dans une base Access, tous les endroits où l'on fait référence à une table, à une requête, à un formulaire... C'est là qu'intervient l'assistant "Références croisées" : vous lui donnez le nom d'une table, par exemple, et il vous liste tous les objets (requêtes, formulaires, états, modules) qui utilisent cette table. 

 

Début de page Installer et démarrer l'Assistant

Pour installer l'Assistant :

  1. Téléchargez le fichier wzCrossRefs.zip pour Access 97 ou wzCrossRefs2000.zip pour Access 2000 (40 K environ).
  2. Décompactez-le sur votre disque dur.
  3. Installez l'Assistant "Access CrossRef Analyzer" dans Access (voir la fiche Installation d'un Assistant pour plus de détails).

Pour utiliser l'Assistant :

  1. Ouvrez la base de données à analyser.
  2. Vérifiez que tous les objets de cette base sont fermés, si vous n'avez pas effectué le point 1.
  3. Faites Outils / Compléments / SA Références croisées (Ac97) ou Outils / Macros complémentaires / SA Références croisées (Ac2000).
  4. Effectuez l'un des 5 choix proposés (voir plus bas).
  5. Cliquez sur le bouton "Chercher" et attendez que ça se passe :o)
  6. Vous obtenez en final une liste des objets qui reposent sur votre objet de base. 
  7. Si vous le souhaitez, vous pouvez imprimer la liste en cliquant sur le bouton "Imprimer..." (un aperçu vous est proposé au préalable).

 

Les 5 options de recherche :

Table/requête précise... Permet de chercher les objets reposant sur une seule table ou une seule requête, que vous spécifiez grâce à une liste déroulante. Testez cette option pour démarrer : c'est la plus ciblée, donc la plus rapide.
Valeur Permet de chercher les objets contenant un mot, un nom tapé manuellement. Du genre : quels sont les objets Access qui contiennent "client" ?
Toutes les tables/requêtes Balaie toutes les tables et requêtes de la base de données en cherchant tous les objets y faisant référence.
Toutes les tables Comme ci-dessus, mais en ne balayant que les tables.
Toutes les requêtes Comme ci-dessus, mais en ne balayant que les requêtes.

 

 

Début de page Décrypter les résultats de l'Assistant

Une fois l'analyse terminée, vous obtenez un tableau récapitulatif qui indique les objets ayant un rapport avec votre recherche. Le tableau comporte 4 colonnes :

  • En colonne 1, les lignes montrent qu'on cherche la chaîne "tbl Enfants" (nom d'une table en l'occurrence). 
  • Dans les 1ères lignes, la colonne 2 présente un code TBL et la colonne 3 contient "tbl Enfants". Il s'agit ici de la table "tbl Enfants", dont chaque champ fait bien sûr lui-même référence à la chaîne "tbl Enfants". Le nom des champs en question figure en colonne 4 (informations complémentaires). En résumé : chaque champ de la table apparaît si vous basez une recherche sur le nom de la table. Euh, pas clair, ça...
  • Les lignes suivantes montrent un code QRY : il s'agit des requêtes qui utilisent la table "tbl Enfants".
  • 2 lignes ont un code FRM : il s'agit des formulaires basés directement sur la table "tbl Enfants" (formulaires dont la source contient la chaîne "tbl Enfants").
  • Enfin, 2 lignes ont un code FMD (Form Module) : les formulaires qu'elles listent ont du code VBA faisant appel à la chaîne "tbl Enfants" (par exemple : ouverture de la table par un Recordset DAO, chaîne SQL utilisée dans un db.Execute...) 

Quelques précisions sur les 4 colonnes de résultat :

Colonne 1
Chaîne recherchée
Cette colonne reprend la chaîne de texte sur laquelle a été basée l'analyse. Il s'agit d'un nom de table, de requête, ou d'une chaîne que vous avez tapée manuellement.
Colonne 2
Type d'objet
Cette colonne indique le type d'objet qui suit dans la colonne 3.
Le type est un code de 3 lettres :
REL La colonne 3 contient un nom de relation
TBL La colonne 3 contient un nom de table
QRY La colonne 3 contient un nom de requête
FRM La colonne 3 contient un nom de formulaire
RPT La colonne 3 contient un nom d'état (report)
MDL La colonne 3 contient un nom de module standard
FMD La colonne 3 contient un nom de module de formulaire
RMD La colonne 3 contient un nom de module d'état
Colonne 3
Trouvée dans...
Cette colonne (colonne 3) indique le nom de l'objet Access (table, requête, formulaire, état, module) qui contient votre chaîne de recherche.

Il se peut bien sûr que cet objet contienne des "objets fils" : champs de formulaire ou d'état par exemple. Dans ce cas, les noms de ces objets fils figurent en colonne 4.

Colonne 4
Informations complémentaires
Cette colonne peut contenir quelques renseignements complémentaires, en fonction des colonnes 2 et 3.
Si la colonne 2 vaut REL (relation)... La colonne 4 vaut dans ce cas xxx::yyy, où xxx est l'une des tables impliquées dans la relation, et yyy est l'autre table.
Il est plus facile de retrouver une relation par les tables xxx et yyy, plutôt que par le nom de la relation qui figure en colonne 3.
Si la colonne 2 vaut TBL (table)... La colonne 4 indique dans ce cas le nom du champ de la table qui fait référence à la chaîne recherchée.
Si la colonne 2 vaut FRM (formulaire) ou RPT (état) Si la colonne 4 est renseignée, elle contient le champ du formulaire ou de l'état qui fait référence à la chaîne recherchée.
Si la colonne 4 est vide, c'est le formulaire ou l'état qui fait référence à la chaîne recherchée, pas l'un de ses objets fils.

 

Début de page Limites de l'Assistant

Sachez que tous les recoins de la base de données ne sont pas explorés.
Voici les parties analysées :

  • Relations entre les tables
  • Champs de tables et propriétés de ces champs
  • Requêtes
  • Formulaires, champs de formulaires et modules de classe associés
  • Etats, champs d'états et modules de classe associés
  • Modules standard et modules de classe

L'Assistant analyse un certain nombre de choses dans votre base de données, mais il peut se laisser bluffer par certains réglages. Notamment :

  • Si une ligne de commentaires en VBA contient la chaîne cherchée, le module VBA sera retenu par l'Assistant.
  • Si un objet contient une "sur-chaîne" de caractères identique, l'objet sera également retenu dans certaines conditions. Par exemple, si vous analysez la table tbl Clients, vous pourriez obtenir des objets qui sont basés sur tbl Clients 2.
  • Le programme est livré en l'état et a été testé sur plusieurs configurations, mais aucune garantie n'est donnée. N'hésitez pas à faire une copie de la base à analyser, si vous avez un doute. 

Si vous avez détecté un bug quelconque (autre que les défauts mentionnés ci-dessus !), vous pouvez bien sûr m'écrire, en détaillant les symptômes.

 

Début de page Conseils

L'Assistant ne règle pas tous les problèmes, c'est donc à vous de vous organiser de façon rigoureuse à chaque fois que vous créez un objet dans Access. Quelques conseils, si je puis me permettre :o) :

  • Nommez les objets avec un préfixe (tbl pour Table, rqt pour Requête, frm pour Formulaire...)
  • Nommez les objets de façon précise (évitez TabCli quand votre table pourrait s'appeler tbl Clients)
  • Utilisez la notion de "groupes" apparue avec Access 2000 pour classer les objets par thèmes (vous retrouvez ces groupes dans la fenêtre de base de données, un groupe existe d'ailleurs déjà et s'appelle Favoris).

 

 << 6. Analyseur de code [ Sommaire ] 8. Convertisseur Euro >> 
Cette section vous intéresse ? Abonnez-vous ! Hit-Parade  

 

 
Notions de base
Jargon Access :o)
Syntaxe SQL
Programmation ASP
Scripting Runtime

Le Grenier [FAQ Access]
Les tutoriaux Self-Access
Les Assistants Access

Les livres sur Access !

Cliquez sur un ouvrage
pour plus de détails

 
 
Forums Access
Abonnement gratuit
Télécharger...
 
 
Le saviez-vous ?
Une base contient au maximum 32768 objets. De quoi voir venir !

A demain pour une nouvelle astuce !