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épendamment 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 plateforme qui supporte Win32, UNIX, Mac OS, OS/2, etc.
II. Comment cela fonctionne-t-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.
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.
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. À 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.
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 4e 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 4e Dimension et ODBC a commencé. Une architecture de haut-niveau a été intégrée dans 4e Dimension 2004 pour étendre les possibilités offertes par ODBC. Cette nouvelle fonctionnalité, qui intègre ODBC de manière native dans 4e 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… ».
La boîte de dialogue de sélection de la source de données ODBC apparaît :
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 4e 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 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. À 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.
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… ».
La boîte de dialogue de sélection de la source de données ODBC apparaît :
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 4e 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.
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 à 4e 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'.
https://4d.developpez.com/documentation/4DDoc2004/V6F/V6F00057.HTM
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 4e 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
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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
2.
3.
4.
5.
6.
7.
8.
9.
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
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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 :
2.
3.
$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 :
2.
3.
$sql
:=
"SELECT DISTINCT compname FROM company_info"
ODBC EXECUTER(
sql;
arrCompName)
`arrCompName est un tableau texte
4. Les deux 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 2e 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.