Voici une classe pour le requêtage ODBC à vocation universelle : pour cela, on utilise un fichier .dsn (Database Source Name) externe dans lequel on indique le type de la source ODBC à interroger (on peut en générer pour de nombreux types de base de données). L'évolution par rapport à la précédente source XLDB que j'avais présenté il y a quelques mois est que l'on peut maintenant préciser la requête à effectuer aussi dans un fichier externe .sql, de sorte que l'on s'affranchi de la spécificité éventuelle de la source, notamment Excel, pour laquelle il faut ajouter $ à la fin de chaque nom de table (correspondant à chaque feuille Excel) : on peut donc écrire des requêtes spécifiques à chaque source ODBC sans avoir à recompiler le programme. De plus, on peut maintenant effectuer une série de requêtes successives, simplement en séparant les requêtes par un ; comme dans la syntaxe standard de SQL. Pour pouvoir stocker et renvoyer le résultat propre à chaque requête, l'astuce consiste à stocker des tableaux 2D de String dans un tableau conteneur, tout est redimensionné en fonction des requêtes demandées : il suffit alors d'effectuer le traitement d'analyse en dehors de la classe ODBC. L'avantage est que le composant d'accès ODBC gère tout le traitement d'erreur spécifique à ODBC, il ne reste plus qu'à traiter les conversions de valeurs String en fonction de vos besoins propres, c'est de l'ETL ! (Extract, Transform and Load : Extraire, transformer et charger).
Fonctionnalités :
- Nouveau : Explorateur de source de données (tables et champs avec leurs types et tailles) ;
- Utilisation de fichiers .dsn et .sql externes ;
- Création d'un fichier .dsn et .sql par défaut pour Access, Excel, Omnis, DB2 (iSeries d'IBM, anciennement AS/400) via le pilote Client Access, et Navision (Microsoft Business Solutions) via le pilote C/ODBC ;
- Vérification de l'accessibilité effective de la source au moment de l'extraction (pour les sources de type fichier) ;
- Utilisation possible d'une chaîne de connexion directe, par exemple sur un fichier Excel ;
- Gestion des requêtes multiples séparées par des ";" ;
- Gestion de requêtes programmées par le code (au lieu du fichier externe .sql) ;
- Fonctionnement par exemple jusqu'à 254 champs avec le pilote ODBC pour Excel ;
- Avec Excel, les champs calculés sont bien supportés (les valeurs calculées sont retournées comme pour les autres champs) ;
- Requête en écriture si le pilote ODBC le permet ;
- Affichage d'un pourcentage d'avancement ;
- Interruption possible si c'est trop long ;
- Copie des informations dans le presse-papier pour le débogage.
Patrice Dargenton.