Paradox via ADO - John COLIBRI. |
- résumé : comment gérer des tables Paradox en utilisant les composants d'accès ADO de Delphi
- mots clé : Paradox - ADO - tAdoConnection - tAdoDataSet
- logiciel utilisé : Windows XP personnel, Delphi 6.0, Paradox 7
- matériel utilisé : Pentium 2.800 Mhz, 512 Meg de mémoire, 250 Giga disque dur
- champ d'application : Delphi 1 à 5, Delphi 6, Delphi 7, Delphi 2006, Turbo Delphi, Delphi 2007 sur Windows
- niveau : développeur Delphi
- plan :
1 - Paradox Via ADO Un de nos clients utilise Paradox avec le BDE (Borland Data Engine), et
souhaite se connecter en utilisant la suite de composants ADO. Cet article présente simplement comment établir ce type de connexion.
2 - Connexion Paradox ADO
2.1 - Connexion par le BDE La façon traditionnelle de se connecter à Paradox est d'utiliser le BDE: Soit:
- optionnellement un tDatabase explicite, et une tSession
- un tQuery pour les requêtes SQL, ou un tTable pour le portage depuis dBase
- pour la partie visuelle, des tDataSources et des composants visuels: tDbGrid, tDbEdit etc
2.2 - L'Architecture ADO ADO a été conçu pour pouvoir accéder à tout type de source de données, allant
du fichier .TXT ou .HTML aux bases de données réparties Oracle. Vaste programme ! Et ceci explique la complexité des composants qui constituent la couche ADO. En tout une cinquantaine de composants.
Heureusement Delphi a regroupé ces composants en simplifiant l'interface que nous pouvons utiliser. Schématiquement cela ressemble à ceci: Soit:
- un tAdoConnection qui permet de se relier aux données à traiter, et permettant aussi de gérer les transactions
- un tAdoCommand, avec ou sans tParameters, contenant en général la requête Sql
- un tAdoDataSet, qui a les fonctionalités du tDataSet (Open, Close, Next etc), ainsi qu'une propriété Connection et Command
- à partir de là ce sont les composants traditionnels: tDataSources et tDbGrid, tDbEdit etc
De façon plus précises, voici un diagramme de classe UML représentant l'ensemble:
2.3 - La chaîne de connexion ADO Le plus difficile pour utiliser ADO est de fournir la chaîne de connexion.
Celle ci contient naturellement les paramètres pour désigner la source de données: - adresse IP si nécessaire
- chemin et éventuellement nom du fichier contenant les données
- peut être des noms d'utilisateurs et des mots de passe
Beaucoup de "si" et de "mais", qui proviennent naturellement des nombreuses sources de données très différentes les unes des autres. Par conséquent impossible de taper directement la valeur de
tAdoConnection.ConnectionString. Delphi propose bien un Wizard pour faciliter la construction de la chaîne. Mais malgré tout, il faut encore fournir des paramètres que personne ne peut inventer, même en faisant preuve de
beaucoup d'imagination. Pour nous tirer d'affaire nous pouvons utiliser: - soit des projets de démonstration trouvés ici ou là
- soit Google, où il existe des pages de "connectionstrings"
- soit les newsgroups ou quelque bon samaritain voudra bien vous fournir la chaîne magique.
2.4 - Connection Paradox ADO Voici donc comment procéder pour Paradox
| copiez (pour effectuer le test) quelques Tables Paradox (extensions .DB, par exemple CUSTOMER.DB) situées dans le répertoire des démonstrations
Delphi dans un répertoire pour votre essai: C:\Program Files\Fichiers communs\Borland Shared\Data\ |
| | créez une nouvelle application Delphi | |
de l'onglet ADO de la Palette sélectionnez tAdoConnection: |
| dans l'Inspecteur d'Objet, sélectionnez ConnectionString et cliquez sur l'ellipse ... | |
le dialogue de construction de la chaîne de connexion est affiché: |
| cliquez "Build..." | | la liste des fournisseurs est présentée:
| |
sélectionnez "Microsoft Jet 4.0 Ole Db Provider". Le mot important est JET qui est le nom générique du moteur d'accès | | cliquez "Suivant >>"
| | l'onglet "Connexion" est affiché |
| dans "1 sélectionnez le nom de base de données", fournissez le chemin des tables Paradox. Dans notre cas
C:\programs\fr\bdd\paradox_via_ado\_data\ | |
| puis, pour Paradox: - sélectionnez l'onglet "Toutes"
- puis la ligne "Extended Properties ..."
- puis cliquez "Modifier la valeur"
|
| le dialogue de saisie des types de moteurs Sql est présenté: |
| pour Paradox, tapez: et cliquez "Ok" | | retournez dans l'onglet "Connexion" |
| la valeur Paradox a bien été entrée | | cliquez "Tester la connection"
| | cliquez "Ok", "Ok", "Ok" |
Pour info, la valeur de la ConnectionString ainsi construite a la valeur suivante (en une seule ligne):
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\programs\fr\bdd\paradox_via_ado\_data; Extended Properties=Paradox 7.x; Persist Security Info=False |
2.5 - Afficher des données
Pour vérifier notre connextion: | dans l'Inspecteur d'Objet, sélectionnez LoginPrompt et basculez la valeur
sur False (pour éviter à avoir à taper un mot de passe) | | basculez Connected sur True |
| s'il n'y a aucune exception, cela signifie que la connexion a réussi |
Puis nous ajoutons les composants pour afficher une Table:
| sélectionnez un tAdoDataDataSet et posez-le sur la Forme |
| sélectionnez sa propriété Connection et reliez-la à AdoConnection1 | |
sélectionnez sa propriété CommandText, et cliquez sur l'ellipse ... | |
le dialogue de requête Sql est présenté, avec, dans la ListBox des Tables les Tables que nous avons placées dans notre répertoire: |
| cliquez une Table, "Add table", les colonnes (par exemple "*") et "Add Field". Dans notre cas la requête est:
| |
sélectionnez Active et basculez sa valeur sur True | | posez un tDataSource sur la Forme |
| voici le résultat: |
3 - Commentaires sur l'utilisation d'ADO et Paradox 3.1 - Motivations La raison majeure qui pousse les développeurs à utiliser Paradox avec ADO est
de pouvoir conserver des données Paradox tout en remplaçant le BDE par ADO. Le BDE souffre en effet des défauts suivants: - tout d'abord il est "deprecated". Ce mot inquiétant signifie simplement que
depuis 2001 Codegear ne touche plus au produit. Mais il est tout de même utilisables par toutes les versions, et donc, malgré son remplacement par dBExpress ou ADO en 2001, il figure toujours dans les versions Delphi, y
compris la dernière version de Rad Studio 2007
- au niveau fonctionnement, quelques problèmes de gestion de caches peuvent se manifester. Ceux ci surviennent surtout lorsqu'une application provoque des
erreurs en mode conception, et que le développeur utilise d'Explorateur de bases de données
- et son plus gros défaut est la lourdeur du déploiement. Chaque application
fournie aux client doit utiliser le BDE. Certes il est possible de créer des scripts InstallShield, mais cela prend du temps
Pour Paradox, ADO est alors une bonne alternative. De plus ADO permet une
utilisation plus facile d'ASP.
3.2 - Perspectives ADO Les personnes familières avec Ado.Net reconnaîtront naturellement la filiation entre ADO et ADO.NET: connextion / commandes, composants d'accès pour les
requêtes Sql. Nous avons d'ailleurs écrit une série d'articles détaillant l'architecture et l'utilisation d'ADO.NET ou
encore Turbo Delphi et Ado. Il existe néanmoins des différences très importantes qui empêcheraient un portage trivial d'ADO vers ADO.Net
Pour les chaînes de connexion, nous avons parlé de Paradox, mais de nombreuses autres possibilités pour le "Microsoft Jet 4.0" existent: - Microsoft Jet 1.0, Microsoft Jet 1.1, Microsoft Jet 2.0, Microsoft Jet 3.x, Microsoft Jet 4.x
- dBASE III, dBASE 4, dBASE 5
- Excel 3.0, Excel 4.0, Excel 5.0, Excel 8.0, Excel 9.0
- Exchange 4
- Lotus WK1, Lotus WK3, Lotus WK4
- Paradox 3.x, Paradox 4.x, Paradox 5.x, Paradox 7.x
- Text 1.x
- Html 1.x
3.3 - Formations et support Paradox / ADO Côté Paradox, parmi les formations que nous assurons, les formations de
bases de données "desktop" avec le
BDE utilisent depuis Delphi 1 soit dBase, soit Paradox. Nous accueillons à ce titre des stagiaires ayant en général à maintenir des applications développés avec ces moteurs.
Nous organisons aussi, sur demande, des formations ADO, en utilisant en général Access, Sql Server, voire Excel. Mais, comme
indiqué ici, Paradox est naturellement possible. En fait, depuis quelques années, nous assurons de plus en plus de formations correspondant à des besoins spécifiques que des formations générales figurant
au catalogue de l'Institut Pascal. Ceci correspond à la fois à des besoins de portage de projets écrits avec les premières versions de Delphi ainsi qu'à l'évolution des compétences d'équipes de développeurs vers de nouvelles technologies.
Côté développement, nous assistons aussi certains clients dans le cadre de support ou développement sur mesure
- soit pour migrer de Paradox vers d'autres moteurs Sql (Interbase / Firebird, Sql Server, Oracle etc)
- soit, en conservant les données Paradox, pour utiliser Ado comme composants d'accès
Le but de ce type de développement étant de conserver au maximum les données et la logique métier contenus dans les applications Paradox. Et le traitement va de la simple conversion des fichiers de données qui peut être en grand partie
automatisée, à une extraction des règles métier, voir restructuration de l'application.
4 - Télécharger le code source du projet Delphi Vous pouvez télécharger: Ce .ZIP qui comprend: - le .DPR, la forme principale, les formes annexes eventuelles
- les fichiers de paramètres (le schéma et le batch de création)
- dans chaque .ZIP, toutes les librairies nécessaires à chaque projet (chaque .ZIP est autonome)
Ces .ZIP, pour les projets en Delphi 6, contiennent des chemins RELATIFS. Par conséquent: - créez un répertoire n'importe où sur votre machine
- placez le .ZIP dans ce répertoire
- dézippez et les sous-répertoires nécessaires seront créés
- compilez et exécutez
Ces .ZIP ne modifient pas votre PC (pas de changement de la Base de Registre, de DLL ou autre). Pour supprimer le projet, effacez le répertoire.
La notation utilisée est la notation alsacienne qui consiste à préfixer les identificateurs par la zone de compilation: K_onstant, T_ype, G_lobal,
L_ocal, P_arametre, F_unction, C_lasse. Elle est présentée plus en détail dans l'article La
Notation Alsacienne
Comme d'habitude: - nous vous remercions de nous signaler toute erreur, inexactitude ou
problème de téléchargement en envoyant un e-mail à jcolibri@jcolibri.com. Les corrections qui en résulteront pourront aider les prochains lecteurs
- tous vos commentaires, remarques, questions, critiques, suggestion d'article, ou mentions d'autres sources sur le même sujet seront de même les bienvenus à jcolibri@jcolibri.com.
- plus simplement, vous pouvez taper (anonymement ou en fournissant votre e-mail pour une réponse) vos commentaires ci-dessus et nous les envoyer en cliquant "envoyer" :
- et si vous avez apprécié cet article, faites connaître notre site, ajoutez un lien dans vos listes de liens ou citez-nous dans vos
blogs ou réponses sur les messageries. C'est très simple: plus nous aurons de visiteurs et de références Google, plus nous écrirons d'articles.
5 - L'auteur
John COLIBRI est passionné par le développement Delphi et les applications de Bases de Données. Il a écrit de nombreux livres et articles, et partage son temps entre le développement de projets (nouveaux projets, maintenance, audit, migration BDE, migration Xe_n, refactoring) pour ses clients, le
conseil (composants, architecture, test) et la
formation. Son site contient des articles
avec code source, ainsi que le programme et le calendrier des stages de formation Delphi, base de données, programmation objet, Services Web, Tcp/Ip et
UML qu'il anime personellement tous les mois, à Paris, en province ou sur site client. |