DBComp2 : le comparateur de structure de
base de données Access (ou ODBC) avec Windiff
Par
Patrice Dargenton
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
https://codes-sources.commentcamarche.net/source/17847
: DBComp2.06
https://codes-sources.commentcamarche.net/source/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