Un meilleur job mieux payé ?

Deviens chef de projet, développeur, ingénieur, informaticien

Mets à jour ton profil pro

ça m'intéresse

Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


ODBC intégré en 4D 2004

Date de publication : Mai 2005

Par Jamras KOMONCHAROENSIRI (Technical Support 4D Inc.)
 

Cette note technique donne un aperçu de ODBC et de son architecture basique. Elle couvrira les nouvelles fonctionnalités ODBC intégrées de manière native dans 4D 2004. Cette note s'adresse autant à ceux qui souhaitent découvrir ODBC qu'à ceux qui y sont familiers, et qui n'ont pas auparavant utilisé l'outil ODBC dans 4D 2004.

I. Qu'est-ce que ODBC ?
II. Comment cela fonctionne-il ?
III. Création d'une source de données
IV. ODBC et 4D 2004
V. Pour importer des données depuis une source de données ODBC, depuis le mode Utilisateur
VI. Pour exporter des données vers une source de données ODBC, depuis le mode Utilisateur
VII. Les commandes ODBC natives en 2004
VIII. Quelques astuces SQL
IX. Résumé


I. Qu'est-ce que ODBC ?

ODBC est le sigle pour Open Database Connectivity. C'est une technologie standard en matière d'accès aux bases de données, développée selon les spécifications du groupe SAG (SQL Access Group). Le but de ODBC est de rendre possible l'accès à une base de données depuis n'importe quelle application, indépendemment du SGBD (Système de Gestion de Bases de Données) qui gère cette base. Donc ODBC fournit un moyen pour des programmes clients comme 4D, Visual Basic, Excel, Access, etc... d'accéder à un large éventail de bases ou sources de données.

La source de donnée désigne simplement l'endroit où les données sont stockées. Cela peut être un fichier '.le' (une base de données dans un SGBDR) ou même des données fournies en temps réel. L'objectif de la source de données est de rassembler toutes les informations techniques requises pour accéder à la base de données en un seul endroit : le nom du pilote, l'adresse réseau, le protocole réseau etc... L'accès à la base de données est ainsi transparent pour l'utilisateur. Le standard ODBC a été conçu pour fonctionner sur toute plate-forme qui supporte Win32, UNIX, Mac OS, OS/2 etc...


II. Comment cela fonctionne-il ?

ODBC établit la communication entre la base de données et l'application cliente en insérant une couche intermédiaire, le pilote ou driver. Le but de cette couche est de traduire les requêtes de l'application cliente en commandes compréhensibles pour la base de données. Pour ce faire, et l'application cliente et la base de données doivent supporter ODBC. Ce qui implique que l'application cliente doit être capable d'exécuter des commandes ODBC et la base de données capable d'y répondre. Maintenant, voyons deux modèles de ODBC pour avoir une meilleure compréhension de l'architecture de cette communication.

Pictures 0580x0313



Le premier modèle montre un accès ODBC direct à une base de données fichier. Dans ce modèle, la base de données fichier peut être un document Excel, un document MS Access ou n'importe quel type de fichier qui peut être configuré comme source de données sans être publié par un SGBDR. La configuration initiale dans ce modèle nécessite que le pilote ODBC de la base de données fichier soit installé dans le système. C'est ce pilote qui assurera la traduction de l'information émise par l'application client à la base de données fichier. Dans l'administrateur ODBC, il faut créer une référence à cette base de données fichier particulière. La référence ainsi créée gardera les paramètres de connexion à cette base de données fichier. L'application cliente pourra alors faire appel à une fonction ODBC qui utilisera cette référence à cette source de données.



Pictures 0543x0332




Le modèle 2 est quasiment similaire au modèle 1 à l'exception que l'accès à la base de données fichier depuis l'application cliente n'est plus direct. C'est maintenant le SGBDR qui réalise l'accès à la source de données. Quand l'application cliente exécute une fonction ODBC, le pilote ODBC transcrit l'instruction SQL en une instruction que le SGBDR peut comprendre. Le SGBDR réalise alors la tâche demandée par l'application cliente.


III. Création d'une source de données

Pour réaliser une connexion ODBC à une base, vous devez installer le pilote (driver) pour cette base. La plupart des SGBDR fournissent leur propre pilote pour la plateforme Windows. Windows aussi fournit par défaut un certain nombre de pilotes. A l'inverse, Mac OS X ne fournit pas de pilote. Vous devez donc installer vous-même les pilotes fournis par de tierces parties (par exemple : www.openlinksw.com). Une fois le pilote installé, vous pouvez créer une source de données ODBC depuis l'administrateur ODBC.

Pictures 0461x0413



Administrateur ODBC de Windows

Sur Windows, l'administrateur ODBC se situe dans la partie "Outils d'administration" du "Panneau de configuration". Sur Mac OS X, l'administrateur ODBC se situe dans le dossier "Utilitaires" du dossier "Applications". Pour chaque pilote ODBC, la configuration de la source de données peut être différente. Il faut donc consulter la procédure de configuration établie par le fournisseur du pilote.


IV. ODBC et 4D 2004

ODBC existe dans 4D depuis la version 6.0 et a été développé sous forme de plug-in. Il fournit un jeu de commandes externe qui permet à une base 4ème Dimension, surMacintosh ou Windows, de communiquer avec une base de données ODBC. Pour le développement d'une application frontale (cliente), 4D ODBC est une solution idéale dans la mesure où elle fournit un accès à quasiment toutes les applications du marché compatibles SQL et ODBC. Une nouvelle ère de 4ème Dimension et ODBC a commencé. Une architecture de haut-niveau a été intégrée dans 4ème Dimension 2004 pour étendre les possibilités offertes par ODBC. Cette nouvelle fonctionnalité, qui intègre ODBC de manière native dans 4ème Dimension, est destinée à la fois aux développeurs et aux utilisateurs finaux. Depuis le mode Utilisateur, un utilisateur peut importer et exporter des données d'une ou vers une source de données ODBC, en utilisant simplement le dialogue d'import/export.


V. Pour importer des données depuis une source de données ODBC, depuis le mode Utilisateur

1. Choisir depuis le menu Fichier, "Importer > De la source ODBC...".

Pictures 0412x0308



La boîte de dialogue de sélection de la source de données ODBC apparaît :

Pictures 0461x0388
Windows


Pictures 0456x0209
Mac OS X



2. Sélectionnez la source de données à utiliser, et cliquer sur OK (Windows) ou Connexion (Mac OS). La boîte standard du dialogue d'import de 4ème Dimension apparaît :

Pictures 0535x0367



3. Sur la partie droite du dialogue, choisissez, en utilisant le pop-up de sélection des tables, la table SQL à partir de laquelle importer les données.

4. Sélectionnez la table et les champs 4D dans lesquels importer les données ou bien choisissez de créer une table avec l'option 'Créer une table'. Cette option n'est pas disponible pour les bases compilées.

5. A l'instar d'un import habituel, la zone de prévisualisation affiche les correspondances entre les données importées et les champs 4D. Vous pouvez modifier ces correspondances.

Pictures 0607x0444



6. Les options d'import sont affichées sur la partie droite du dialogue d'import :

Source de données : Cette zone décrit la source de données à laquelle la base de données 4D est connectée. Vous pouvez modifier la source de données en cliquant sur le bouton Parcourir.

Enregistrements : Vous pouvez ajouter ou remplacer les enregistrements de la table d'import avec les données provenant de la source de données.

7. Cliquez sur le bouton Importer. Une fois les données importées, la connexion entre la base 4D et la source de données est automatiquement fermée.


VI. Pour exporter des données vers une source de données ODBC, depuis le mode Utilisateur

1. Choisir depuis le menu Fichier, "Exporter > Vers la source ODBC...".

Pictures 0415x0281



La boîte de dialogue de sélection de la source de données ODBC apparaît :

Pictures 0461x0388
Windows


Pictures 0456x0209
Mac OS X



2. Sélectionnez la source de données à utiliser, et cliquez sur Ok (Windows) ou Connexion (Mac OS). La boîte standard du dialogue d'export de 4ème Dimension apparaît :

3. Sur la partie droite du dialogue, choisissez, en utilisant le pop-up de sélection des tables, la table SQL à partir de laquelle exporter les données.

Pictures 0630x0450



4. Sélectionnez la table et les champs 4D à partir desquels exporter les données (à l'instar d'un export de données habituel, la zone de prévisualisation affiche les correspondances entre les données exportées et les champs. Vous pouvez modifier ces correspondances).

5. Sélectionnez les options d'export sur la partie droite du dialogue :

Source de données : Cette zone décrit la source de données à laquelle la base de données 4D est connectée. Vous pouvez modifier la source de données en cliquant sur le bouton "Parcourir".

Enregistrements : Vous pouvez uniquement exporter la sélection courante des enregistrements ou tous les enregistrements de la table.

6. Cliquez sur le bouton "Exporter...", pour exporter les données vers la source ODBC. La connexion entre la base 4D et la source de données est automatiquement fermée à la fin de l'export. Les fonctionnalités d'import et d'export ODBC peuvent être utilisées en mode Menus Crées de 4D, en utilisant les commandes ODBC IMPORTER et ODBC EXPORTER. Ces deux nouvelles commandes, natives, ont été introduites dans 4D 2004.


VII. Les commandes ODBC natives en 2004

En plus des deux commandes ODBC précédemment mentionnées, 4D 2004 offre un jeu de commandes ODBC de haut niveau, permettant à 4ème Dimension de communiquer avec des sources de données ODBC, au travers de simples requêtes SQL. Ces commandes natives sont regroupées dans le thème 'Source de données externes'.


Commande Description

ODBC LOGIN


se connecte à une source de données externe.

ODBC LOGOUT

ferme la connexion.

ODBC FIXER OPTION

fixe le mode de connexion (synchrone ou asynchrone), le nombre maximum de lignes dans l'ensemble résultant (utilisé pour les prévisualisations), la longueur maximale des données retournées, la durée maximale d'attente de la réponse lors de l'exécution de la commande ODBC EXECUTER, la durée maximale d'attente lors de l'exécution de la commande ODBC LOGIN.

ODBC LIRE OPTION

lit le mode de connexion courant (synchrone ou asynchrone), le nombre maximum de lignes dans l'ensemble résultant (utilisé pour les prévisualisations), la longueur maximale des données retournées, la durée maximale d'attente de la réponse lors de l'exécution de la commande ODBC EXECUTER, la durée maximale d'attente lors de l'exécution de la commande ODBC LOGIN.

ODBC EXECUTER

exécute une requête SQL et associe le résultat à des objets 4D (tableaux, variables, ou champs).

ODBC Fin de selection

indique si les limites de l'ensemble résultat ont été atteintes.

ODBC CHARGER ENREGISTREMENT

récupère dans 4ème Dimension un ou plusieurs enregistrements provenant de la source ODBC ouverte dans la connexion courante.

ODBC ANNULER CHARGEMENT

met fin à la requête SELECT courante et initialise les paramètres du curseur.

ODBC FIXER PARAMETRE

permet d'utiliser une variable, un tableau ou un champ 4D dans les requêtes ODBC.

ODBC LIRE DERNIERE ERREUR

retourne les informations relatives à la dernière erreur rencontrée lors de l'exécution d'une commande ODBC.

ODBC IMPORTER

importe les données depuis une source ODBC externe.

ODBC EXPORTER exporte les données vers une source ODBC externe.



Voici quelques exemples montrant comment utiliser les commandes ODBC

Exemple : requête SELECT (associant des tableaux 4D vers 4D)

    C_TEXTE($sql)

    TABLEAU ENTIER LONG(arComID;0)
    TABLEAU TEXTE(arComName;0)
    TABLEAU TEXTE(arComEmail;0)
    ODBC LOGIN
    Si (OK=1)
       $sql:="SELECT compid, compname, compemail FROM company_info"
       ODBC EXECUTER($sql;arComID;arComName;arComEmail)
       ODBC CHARGER ENREGISTREMENT(ODBC Tous les enregistrements )
       ODBC LOGOUT
    Fin de si


Exemple : requête SELECT (associant des champs 4D vers 4D)

    C_TEXTE($sql)

    ODBC LOGIN
    Si (OK=1)   
       DEBUT TRANSACTION   
       $sql:="SELECT compid, compname, compemail FROM company_info"   
       ODBC EXECUTER($sql;[Company Info]Company_ID;[Company Info]Company Name;
       [Company Info]Email Address)
       ODBC CHARGER ENREGISTREMENT(ODBC Tous les enregistrements )
       VALIDER TRANSACTION
       ODBC LOGOUT
    Fin de si


Exemple : requête INSERT (associant des tableaux 4D vers ODBC)

    C_TEXTE($sql)

    ODBC LOGIN
    Si (OK=1)
       $sql:="INSERT INTO company_info (compid, compname, compemail)"
       $sql:=$sql+" VALUES (<<arComID>>,<<arComName>>,<<arComEmail>>)"
       ODBC EXECUTER($sql)
       ODBC LOGOUT
    Fin de si


Exemple : requête INSERT (associant des champs 4D vers ODBC)

    C_TEXTE($sql)

    ODBC LOGIN
    Si (OK=1)
       $sql:="INSERT INTO company_info VALUES ("
       $sql:=$sql+"<<[Company Info]Company_ID>>,"
       $sql:=$sql+"<<[Company Info]Company Name>>,"
       $sql:=$sql+"<<[Company Info]Email Address>>)"
       ODBC EXECUTER($sql)
       ODBC LOGOUT
    Fin de si


VIII. Quelques astuces SQL

1. le caractère étoile (*) peut être utilisé pour indiquer toutes les colonnes d'une table, en vue de réduire la longueur de la requête SELECT :

   SELECT * FROM company_info2.


2. Pour déterminer le nombre total des enregistrements d'une table, vous pouvez exécuter la requête suivante :

    $sql:="SELECT count(1) FROM company_info"
    ODBC EXECUTER(sql;vlTotalRecords)
      `vlTotalRecords est un entier long


3. Utilisez la commande DISTINCT pour récupérer une sélection de valeurs distinctes :

    $sql:="SELECT DISTINCT compname FROM company_info"
    ODBC EXECUTER(sql;arrCompName)
      `arrCompName est un tableau texte


4. Les 2 requêtes suivantes peuvent être utilisées pour insérer un enregistrement :

    INSERT INTO company_info (compid,compname,compemail) VALUES (1,'4D','ts@4d.com')
    ou
    INSERT INTO company_info VALUES (1,'4D','ts@4d.com')

La seule différence est dans la 2ème requête, les colonnes y sont implicitement ordonnées. La requête est correcte. Elle implique que l'ordre des colonnes dans la requête correspond exactement à l'ordre des colonnes dans la table company_info. Par exemple :

1 -> insère dans la donnée dans la colonne compid, qui est de type INTEGER (Entier)
'4D' -> insère dans la donnée dans la colonne compname, qui est de type VARCHAR(20) (chaîne de 20 caractères)
'ts@4d.com' -> insère dans la donnée dans la colonne compemail, qui est de type VARCHAR(20) (chaîne de 20 caractères)

Pour plus d'exemples SQL, voir http://www.techonthenet.com/sql/index.htm.


IX. Résumé

Cette note technique s'adresse à tous ceux qui sont désireux d'implémenter ODBC en 4D 2004. La démonstration vous a été faite que les nouvelles commandes ODBC natives permettent aux développeurs de gagner du temps dans l'accès ODBC, sans passer obligatoirement par un plug-in. Tous les exemples qui vous ont été montrés dans cette présentation devraient vous apporter une meilleure compréhension sur ce qu'il est possible faire avec ODBC.

__________________________________________________
Copyright © 1985-2009 4D SA - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte. L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.
__________________________________________________
 



Valid XHTML 1.1!Valid CSS!

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Contacter le responsable de la rubrique 4D