Commandes du thème Source de données externes

4D - Documentation   Français   English   German   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 11 (Modifiée)


Présentation

Ce thème contient les commandes permettant à 4D d'accéder à des données stockées dans d'autres applications via des protocoles standard. Dans la version actuelle de 4D, seules des commandes ODBC sont disponibles.

Le standard ODBC (Open DataBase Connectivity) définit une librairie de fonctions standarisées. Ces fonctions permettent à une application telle que 4D d'accéder via le langage SQL à tout système de gestion de données compatible ODBC (bases de données, tableurs, etc.).

Note : 4D permet également d'importer et d'exporter des données dans une source ODBC "manuellement" en mode Développement. Pour plus d'informations, reportez-vous au manuel Mode Développement de 4D.

Les commandes ODBC de haut niveau du thème "Source de données externes" de 4D permettent de mettre en place des solutions simples pour faire communiquer les applications 4D et des sources de données ODBC. Si vos applications nécessitent une prise en charge plus étendue du standard ODBC, vous devrez acquérir le plug-in ODBC "bas niveau" de 4D, 4D ODBC Pro.

Principes de fonctionnement des commandes ODBC intégrées

Les commandes ODBC intégrées de 4D appliquent les principes suivants :

La portée d'une connexion est le process. Si vous souhaitez gérer plusieurs connexions simultanément, vous devez démarrer un process par ODBC LOGIN.

La commande ODBC ANNULER CHARGEMENT permet d'exécuter plusieurs requêtes SELECT dans la même connexion.

Vous pouvez utiliser la plupart des commandes de ce thème avec le moteur SQL interne de 4D.

Vous pouvez intercepter les erreurs ODBC éventuellement générées lors de l'exécution d'une des commandes ODBC à l'aide la commande APPELER SUR ERREUR. La commande ODBC LIRE DERNIERE ERREUR permet dans ce cas d'obtenir des informations supplémentaires.

Correspondance des types de données

Le tableau suivant liste les correspondances établies automatiquement par 4D entre les types de données 4D et SQL :

Type 4DType SQL
C_ALPHASQL_C_CHAR
C_TEXTESQL_C_CHAR
C_REELSQL_C_DOUBLE
C_DATESQL_C_TYPE_DATE
C_HEURESQL_C_TYPE_TIME
C_BOOLEENSQL_C_BIT
C_ENTIERSQL_C_SHORT
C_ENTIER LONGSQL_C_SLONG
C_BLOBSQL_C_BINARY
C_IMAGESQL_C_BINARY
C_GRAPHESQL_C_BINARY

Référencer des expressions 4D dans les requêtes ODBC

4D propose deux modes d'insertion des expressions 4D (variable, tableau, champ, pointeur, expression valide) dans les requêtes ODBC : l'association directe et la définition de paramètres via ODBC FIXER PARAMETRE.

L'association directe peut être effectuée de deux manières :

insérer le nom de l'objet 4D entre les caractères << et >> dans le texte de la requête.

faire précéder la référence de deux-point ":"

Exemples :

   ODBC EXECUTER("INSERT INTO emp (empno,ename) VALUES (<<vEmpno>>,<<vEname>>)")
   ODBC EXECUTER("SELECT age FROM People WHERE name= :vNom")

Dans ces exemples, les valeurs courantes des variables 4D vEmpno, vEname et vNom seront substituées aux paramètres lors de l'exécution de la requête. Cette solution fonctionne également avec les champs et les tableaux 4D.

Cette syntaxe, simple d'utilisation, présente toutefois l'inconvénient de n'être pas conforme à la norme SQL et de ne pas permettre l'utilisation de paramètres de sortie. Pour y remédier, vous pouvez utiliser la commande ODBC FIXER PARAMETRE. Cette commande permet de définir chaque objet 4D à intégrer dans une requête ainsi que son mode d'utilisation (entrée, sortie ou les deux). La syntaxe produite est alors standard. Pour plus d'informations, reportez-vous à la description de la commande ODBC FIXER PARAMETRE.

(1) Cet exemple exécute une requête ODBC utilisant directement des tableaux 4D associés :

   TABLEAU TEXTE(MonTabTexte;10)
   TABLEAU ENTIER LONG(MonTabLong;10)

   Boucle (vCounter;1;Taille tableau(MonTabTexte))
      MonTabTexte{vCounter}:="Texte"+Chaine(vCounter)
      MonTabLong{vCounter}:=vCounter
   Fin de boucle
   ODBC LOGIN("mysql";"root";"")
   SQLStmt:="insert into app_testTable (alpha_field, longint_field) VALUES (<<MonTabTexte>>, <<MonTabLong>>)"
   ODBC EXECUTER(SQLStmt)

(2) Cet exemple permet d'exécuter une requête ODBC utilisant directement des champs 4D associés :

   TOUT SELECTIONNER([Table 2])
   ODBC LOGIN("mysql";"root";"")
   SQLStmt:="insert into app_testTable (alpha_field, longint_field) VALUES (<<[Table 2]Champ1>"+">,<<[Table 2]Champ2>>)"
   ODBC EXECUTER(SQLStmt)

(3) Cet exemple permet d'exécuter une requête ODBC passant directement une variable via un pointeur non dépointé :

   C_ENTIER LONG($vLong)
   C_POINTEUR($vPointeur)
   $vLong:=1
   $vPointeur:=->$vLong
   ODBC LOGIN("mysql";"root";"")
   SQLStmt:="SELECT Col1 FROM TEST WHERE Col1=:$vPointeur"
   ODBC EXECUTER(SQLStmt)

Récupération des valeurs dans 4D

La récupération dans 4D des valeurs issues de requêtes ODBC peut être effectuée de deux manières :

en utilisant les paramètres supplémentaires de la commande ODBC EXECUTER (solution conseillée).

en utilisant la clause INTO dans la requête SQL elle-même (solution à réserver aux cas particuliers).


4D - Documentation   Français   English   German   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant