4D v16

SQL

Accueil

 
4D v16
SQL

SQL    


 

 

En complément des manipulations expliquées dans la vidéo, il faut noter que :

On ne peut pas utiliser de pointeurs et de lignes de tableaux dans une requête SQL, l'interpréteur ne les prend pas en compte.

Dans ce cas, il est souvent préférable de constituer la requête sous forme de texte et de l'exécuter via la commande

EXECUTE IMMEDIATE
.

 
  `TYPAGE IMPERATIF DES VARIABLES sinon la requête génère une erreur
 ARRAY TEXT(TabStatsTechniciens;0) `créer un tableau sans ligne, il sera rempli par la requête suivante
 ARRAY TEXT($TabIDTechniciens;0) `tableau dans lequel on stockera les identifiants des TECHNICIENS
 
  `Ne pas oublier le caractère espace ou retour chariot à la fin de chaque ligne
 C_TEXT($TexteRequete)
 $TexteRequete:="SELECT Last_name, ID "
 $TexteRequete:=$TexteRequete+"FROM TECHNICIANS "
 $TexteRequete:=$TexteRequete+"INTO :TabTechniciens, :$TabIDTechniciens"
 
 Begin SQL `On ne souhaite ramener que le nom du technicien et le stocker dans un tableau
    EXECUTE IMMEDIATE :$TexteRequete;
 End SQL


Il s'agit de sélectionner le nom et l'identifiant de la table techniciens et de transférer dans les 2 tableaux.

Bonjour,

dans cette vidéo nous allons apprendre à mettre en oeuvre des commandes SQL simples intégrées à la programmation de 4D sous 2 formes :

  • plusieurs lignes de commande SQL insérées dans un bloc de traitement SQL
  • une seule ligne de commande qui exécute la liste de commandes stockées dans une variable texte.

En complément du langage de 4D, nous pouvons intégrer dans 4D des commandes SQL comme vous le faites dans d’autres outils :

  • mysql_query en PHP
  • INCLUDE SQLCA en COBOL
  • etc ...

Ces commandes peuvent être intégrées dans les développements existants de manière très simple.

Nous allons reprendre notre formulaire statistiques pour calculer le même tableau à partir de commandes SQL :

  • Je duplique le bouton
  • le début de la méthode reste le même
  • n'ayant pas encore sélectionné de fiches, le tableau des techniciens aura 0 lignes
  • nous ajoutons le tableau des identifiants techniciens dans une variable locale, on n'a pas besoin de la conserver ultérieurement
  • ensuite, j'intègre mon code SQL
    Il s'agit de sélectionner le nom et l'identifiant de la table techniciens et de transférer dans les 2 tableaux.

Notez la syntaxe qui indique à 4D de transférer le résultat dans les tableaux. On utilise le nom de la variable précédé du symbole “:” (deux-points).
La suite de la méthode (dimensionnement du tableau des interventions) reste globalement structurée de la même manière :

  • on rajoute juste la valeur de $Nb pour savoir combien de techniciens on a à traiter?
  • Ensuite on enlève toute la fin qu'on remplace par les commandes SQL :
  • on stocke dans une variable l'identifiant du technicien à traiter
  • on exécute les commandes SQL qui tiennent compte de la date de début et de fin d'année
  • et ensuite on valorise le tableau des interventions à la ligne i

À l'exécution de la méthode,

  • ici nous passons le code SQL
  • nos techniciens sont bien au nombre de 7
  • on dimensionne le tableau des intervetnions
  • puis pour chaque valeur du tableau, on va faire un
    SELECT COUNT
  • stocker dans une variable $Result
  • qui va valoriser le tableau

et qu'on choisisse l'une ou l'autre des options, nous obtenons bien le même résultat.

Une autre manière de programmer, notamment cette première partie aurait été de l'écrire de cette manière :

  • c'est-à-dire qu'on écrit la requête dans une variable texte
  • et ensuite entre un Début SQL et une Fin SQL on utilise la commande
    EXECUTE IMMEDIATE
    à laquelle on passe la requete sous forme de texte

ce qui donne exactement le même résultat que ceci.

 
 

 
PROPRIÉTÉS 

Produit : 4D
Thème : SQL

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

Autoformation ( 4D v16)