Odbcdotnet : extraire des requetes odbc dans un tableau de tableaux de string

Soyez le premier à donner votre avis sur cette source.

Vue 21 450 fois - Téléchargée 5 021 fois

Description

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.

Source / Exemple :


' Tout le code est dans la String
Private Const CODE_STR As String = "5589E583EC185756515352BBxxxxx05x81FB"
Public Sub iASMCALL2()
    Call CallWindowProc(nProcByte, 0, 0, 0, 0)
End Sub

Conclusion :


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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Afyn
Messages postés
613
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
22 décembre 2016
-
Salut ... bravo
Peut être remplacer le tableau par un ArrayList ?
Et utiliser For each ?
Sinon, c'est pas vraiment de l'ODBC pur ... puisque tu utilises ADO (environ 50% plus lent que les API en direct ...)
Bonne suite ...

Afyn - Navedac
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
ArrayList : Oui ça serait pas mal, cela éviterait le ReDim Preserve, je n'arrive pas encore à oublier totalement VB6 :-)

ODBC pur via les API : Jamais entendu parler ! tu as un exemple ? cela m'étonnerait que cela soit aussi général (pour Windows) qu'ODBC via ADO.
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
ODBC CONNEXION MDB ET CREATION TABLE (WIN32)
http://www.cppfrance.com/code.aspx?ID=27746
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
BruNews : Ok, il s'agit d'une connexion bas niveau via les API (notamment SQLExecDirect), et l'exemple fonctionne avec Access, mais je ne pense pas que cela puisse fonctionner avec d'autres sources ODBC (peut-être SQL Serveur, mais cela me semble risqué...). Il y a même un bout de code très bas niveau en assembleur ! (heureusement que c'est seulement pour copier une chaîne de caractères, mon exemple en assembleur, c'était pour plaisanter :-)
Par contre ma source fonctionne avec des dizaines de sources ODBC variées, du moment qu'il existe un pilote ODBC pour Windows, toute base de données peut être interrogée ainsi, même des fichiers textes ou csv !
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
Comme tout le reste, c'est plus long à coder en natif plutot qu'en VB + ADO mais tout se fait. Il faudrait générer la chaine de connexion à l'exécution selon la cible choisie par l'utilisateur, des logiciels commerciaux le font.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.