DBComp2 : le comparateur de structure de base de données Access (ou ODBC) avec Windiff

Par Patrice Dargenton

patrice.dargenton@free.fr

http://patrice.dargenton.free.fr/index.html

http://patrice.dargenton.free.fr/CodesSources/index.html

http://patrice.dargenton.free.fr/CodesSources/DBComp.html

http://patrice.dargenton.free.fr/CodesSources/DBComp.vbp.html

www.vbfrance.com/listeauteur2.aspx?ID=1124

www.vbfrance.com/code.aspx?ID=17847 : DBComp2.06

www.vbfrance.com/code.aspx?ID=17809 : DBComp1

Documentation : DBComp.html

 

Version 2.06 du 18/09/2010

 

En générant un rapport sur la structure d'une base de données, il est possible de comparer la structure de deux bases distinctes (deux versions différentes par exemple), grâce à WinDiff, un des utilitaires de Visual Studio (également disponible dans les outils complémentaires du CD de Windows XP).

 

Via DAO, on peut comparer deux bases de données MS-Access, et via ODBC on peut comparer toutes les bases pour lesquelles il existe un pilote ODBC sous Windows ! Pour tester cette fonctionnalité, il y a un bouton pour construire deux fichiers .dsn exemples avec les chemins en relatif vers les bases Access d'exemple (DVDClassV1.mdb et V2). Pour générer un fichier .dsn correspondant à une base dont le pilote ODBC est installé, utilisez l'assistant fournit dans Windows 2000 (et versions supérieures de Windows) :

 

Panneau de configuration : Outils d'administration : Sources de données (ODBC) : Sources de données fichier : Ajouter : Choisissez votre pilote ODBC : Suivant : Choisissez le chemin où sauver le fichier qui va être créé par l'assistant (ou bien Parcourir : Sélectionnez un fichier : Enregistrer) : Suivant : Terminer : Base de données : Sélectionner... : Choisissez le chemin de votre base (si le pilote ODBC fonctionne ainsi) : Ok pour ce fichier : Ok pour cette base : Ok pour quitter l'assistant.

 

Le code source du générateur de rapport (ainsi que la fonction de suppression des enregistrements pour faire une base vide) est inclus (on n'a donc plus besoin de l'utilitaire DBToFile.ocx, voir DBComp1). Il est maintenant possible d'inclure d'autres informations dans le rapport (par exemple le type et la taille des champs texte ont été ajoutés depuis la version 2.02) pour faire apparaître ces différences.

 

On peut maintenant Exporter les objets d'une base de données Access ainsi que le contenu des tables. Pour les formulaires et les états, le code de description complet (Code Design) est inclus, ainsi que le code source de leur module, grâce à l'utilisation de la fonction SaveAsText (ils pourraient être rechargé via LoadAsText). SaveAsText et LoadAsText sont des fonctions non documentées d'Access, conçues pour gérer le développement sous Access depuis un contrôleur de code source du type VisualSourceSafe (Astuce trouvée dans Access 97 Developers's Handbook), elles sont donc fiables à 100%. Prochainement, cette fonctionnalité va permettre de faire un super-compacteur/décompilateur.

 

Pour Windiff, l'utilisation se passe quasiment d'explication, il suffit de cliquer sur les petites barres de couleur jaune ou rouge apparaissant à gauche, selon le fait que Windiff a pu ou n'a pas pu trouver une correspondance entre les informations figurant dans les rapports respectifs des deux bases comparées. Parfois, Windiff se bloque lorsque les fichiers à comparer sont trop gros (plusieurs Mo), et il ne fonctionne pas bien lorsque la longueur des chaînes est trop courte (ou une autre raison ?), par exemple, Windiff est inutilisable pour comparer la valeur des clés entre les mêmes branches de la base de registre, à deux moment différent. Voir à la fin les deux liens pour intégrer directement le code source d'un comparateur de fichier.

 

Gestion des arguments en ligne de commande : on peut maintenant mettre un raccourci dans le menu SendTo ("C:\Documents and Settings\MonCompte\SendTo", c'est un dossier caché) afin de comparer deux bases (ou bien un simple rapport d'une base) avec le bouton droit de la souris dans l'explorateur de fichier (menu "Envoyez vers" : DBComp.exe, une fois ce raccourci créé). Cela fonctionne aussi avec les noms longs. Vous pouvez également mettre un raccourci dans SendTo directement vers Windiff, cela vous permettra de comparer 2 fichiers quelconques à tout moment. Vous pouvez enfin faire un glissé-déposé (drag&drop) de 2 fichiers sur DBComp ou bien sur WinDiff.

 

Fichier de fusion dans la base de registre : DBCompAccessXP.reg : il permet d'ajouter le menu contextuel "Rapport sur la structure de la base" lorsque l'on clique avec le bouton droit de la souris sur une base Access.mdb. Ce fichier est conçu pour Access XP (Access.Application.10) pour Windows 2000 ou XP. Pensez à changer les chemins en fonction de votre configuration, et le numéro de version d'Access en fonction de la vôtre. Il y a aussi un fichier DBCompAccessXPDesinst.reg pour retirer ce menu contextuel de la base de registre.

 

Note : Pour optimiser votre base de données, vous pouvez utiliser l'analyseur de performance : il peut par exemple optimiser une requête qui fait un lien d'une table sur elle-même, en ajoutant l'index adéquat, ce qui n'apparaît pas forcement de façon évidente dans les relations, car l'outil d'optimisation se fonde sur l'analyse des requêtes effectuées.

 

Liste des fichiers :

Windiff : WINDIFF.EXE, WINDIFF.HLP (GUTILS.DLL n'est plus nécessaire avec la dernière version)

- Code source de DBComp2 : DBComp.vbp, frmDBComp.frm, frmDBComp.frx, modADOProp.bas, ModUtil.bas, SelectionFichier.bas ; code exécutable (pour ceux qui n'ont pas VB6 sous la main) : DBComp.exe

- Documentation : LisezMoi.html

- Bases exemples : DVDClassV1.mdb et DVDClassV2.mdb

- Rapports exemples : DVDClassV1.txt et DVDClassV2.txt

- Fichiers de fusion dans la base de registre : DBCompAccessXP.reg et DBCompAccessXPDesinst.reg

 

Version 2.06 du 18/09/2010 :

- Adaptation du rapport en vue de son indexation via le logiciel VBTextFinder ;

Windiff : version 5.2.3790.0 du 24/03/2003 livrée avec Windows 2003 (Microsoft Source Code Samples).

 

Version 2.05 du 11/08/2005 :

Windiff : version (5.1.2455.0) officielle du CD de Windows XP

- Export du code de description (code Design) et du code source de chaque formulaire et état, ainsi que des macros et modules

- Export des données des tables

 

Version 2.04 du 21/05/2005 :

- Possibilité de masquer une table dans le rapport : mettre "masquer" dans la description de la table

- Affichage des propriétés des objets de base de données (complet en DAO, propriétés de la connexion via ODBC/ADO)

- Affichage des index de relation seulement lorsque toutes les propriétés sont demandées, sinon ils sont masqués (on peut masquer d'autres index en les mettant entre accolades : {}, comme pour les index systèmes)

- Clé oubliée dans le fichier DBCompAccessXP.reg :

         [HKEY_CLASSES_ROOT\Access.Application.10\Shell\Rapport]

         @="Rapport sur la structure de la base"

- Fichier DBCompAccessXPDesinst.reg pour retirer le menu contextuel de la base de registre

- Parseur de fichier amélioré (il n'est plus limité à 2 fichiers, on peut le réutiliser dans d'autres applications)

- Conventions de nommage du code source améliorées : refX pour les objets X prééxistants

 

Version 2.03 du 06/02/2005 :

- En option, intégration du code SQL des requêtes (utile aussi pour faire une recherche globale d'un champ dans une base de données, y compris dans les tables et les requêtes)

 

Version 2.02 du 17/10/2004 :

- Gestion des fichiers ODBC de type .dsn (sauf pour la description des tables, pour le type et la taille des champs, pour les tables liées et pour les requêtes)

- Cases à cocher pour les options : Index, Types et tailles des champs textes, Tables liées et Requêtes

- Gestion des arguments en ligne de commande

- Bouton rapport seul

- Gestion des erreurs améliorée

 

Version 2.01 du 6/12/2003 :

- "(null)" aussi dans les noms de table, le cas échéant

- Liste des descriptions des requêtes

- Simple affichage du rapport si la même base est sélectionnée 2 fois

- Suppression des enregistrements : pas sur les tables liées

- Sélecteur de fichiers : il fonctionne maintenant même sans VB6 (API au lieu de MSComDlg.CommonDialog)

AfficherMsgErreur : simplification

 

 

Liens :

RÉALISER UNE DOCUMENTATION SUR LA STRUCTURE DE VOS BASES DE DONNÉES ACCESS

www.vbfrance.com/code.aspx?ID=8327

 

AFFICHER LA STRUCTURE D'UNE BASE DE DONNÉE(ADO)...

www.vbfrance.com/code.aspx?ID=6518

 

MISE À JOUR STRUCTURE BASE ACCESS AVEC ADOX

www.vbfrance.com/code.aspx?ID=3422

 

EXPORTATION DE TABLES OU BASES ACCESS COMPLÈTES VERS MYSQL

www.vbfrance.com/code.aspx?ID=6604

 

IMPORTER / EXPORTER UNE BASE/TABLE ACCESS VERS UNE BASE MYSQL

www.vbfrance.com/code.aspx?ID=4211

 

GENERATEUR DE MODULE CAPABLE DE RECRÉER VOS BASES DE DONNÉES (+ ADDIN)

www.vbfrance.com/code.aspx?ID=8494

 

TOUTES LES BASES SUR LES BASES DE DONNES ET LE SQL

www.vbfrance.com/code.aspx?ID=2695

 

Concourt sur un WinDiff like : Code Lean and Mean (pas de GUI pour le moment ?)

www.codeproject.com/script/Awards/View.aspx?cid=358

 

A Generic, Reusable Diff Algorithm (difference engine) written in C#

www.codeproject.com/csharp/DiffEngine.asp

 

Visual Studio .NET 2003 Add-in that adds diff tools, an explore command, Subversion support and web project reporting. Version 2.1

www.codeproject.com/dotnet/file_diff_and_webreports.asp

 

 

Voir aussi :

http://patrice.dargenton.free.fr/dbtofile/index.html

http://patrice.dargenton.free.fr/dvdclass/index.html