Présentation du driver ODBC V3R10 de Client/Access. ODBC est une norme (Microsoft) offrant un accès transparent à des bases de données (éloignées ou non). Une application WINDOWS compatible ODBC, peut ainsi accéder à une base de données en ne connaissant que son nom logique. La couche ODBC, va activer le driver adéquat (il y a un driver par base) qui lui-même va faire le lien avec la base réelle. Dans le cas de l'AS/400, le driver livré avec Client/Access, va établir un dialogue APPC avec l'AS en s'appuyant sur le routeur. Dernier point (Important) toutes les requêtes transmises au driver sont à la syntaxe SQL, et les requêtes sont exécutées sur le serveur. (ici l'AS) Vous allez voir Une présentation MICRO de ce driver et de son utilisation <F3 = sortir de ce cours> <ENTREE = enchaîner la présentation micro> |
Pour accéder aux Bases ODBC, VISUAL BASIC et VBA (Visual Basic for Application qui remplace les macros EXCEL4 pour EXCEL5), possèdent des codes spécifiques : VBA : SQLOpen établit une connexion avec une base ODBC SQLBind détermine l'endroit où placer le résultat d'une requête SQLClose rompt une connexion SQLError renvoie le détail d'une erreur SQLExecQuery exécute une requête passée en argument SQLGetShema renvoie des informations sur la base. SQLRequest établit une connexion ET exécute une requête SQLRetrieve extrait les résultats d'une requête SQLRetrieveToFile extrait les résultats et les place dans un fichier Quand à Visual Basic, il s'agit d'un véritable langage de programmation En voici les principales caractéristiques (concernant l'accès aux Bases) |
Dim Db As Database '(définition d'une base) Dim Sn As Snapshot '(définition d'un curseur SQL) Dim requete '(variable contenant la requête) Set Db = OpenDatabase("nom_de_la_base", False, False, "ODBC;") ' (mode exclusif) (lecture seule) 'si nom_de_la_base n'est pas renseigné, ODBC vous affiche une liste requete = "SELECT CLIENTS.DEPCLI, SUM(ENTFAC.MNTFAC - ENTFAC.MNTPAI)" requete = requete & "FROM CLIENTS, ENTFAC " requete = requete & "WHERE CLIENTS.CODCLI = ENTFAC.CODCLI " requete = requete & "GROUP BY DEPCLI " requete = requete & "HAVING SUM(ENTFAC.MNTFAC - ENTFAC.MNTPAI) > 0" Set Sn = Db.CreateSnapshot(requete) Sn.MoveFirst While Sn.EOF = False 'traitement de Sn(0)= colonne1, Sn(1) = colonne 2 , etc... Sn.MoveNext Wend |