Paramétrage > Exploitation > Impressions > Requêteur SQL 

Les progiciels en technologie SAFE X3 intègrent un requêteur permettant de créer des écrans d'interrogation à partir de requêtes exprimées sous la forme d'une liste de champs issus de tables de la base, ces tables étant liées soit par défaut, soit par des liens explicites nommés. Cette approche permet à un utilisateur de créer rapidement des requêtes sans utiliser de langage particulier, en ayant simplement une connaissance des tables de la base, connaissance qui peut être guidée par les documentations techniques en ligne (MCD notamment). Il obtient en outre une interface conviviale d'interrogation dans des écrans multi-colonnes avec des possibilités de tunnel.

Ce requêteur présente néanmoins quelques limites, dans la mesure où des requêtes complexes ne peuvent pas forcément être exprimées sous la forme d'une liste de champs. Ainsi, pour des utilisateurs ayant un profil plus technique et connaissant le langage SQL, ce requêteur ne permet pas d'obtenir facilement les résultats désirés.

C'est pourquoi a été créé un outil complémentaire, le requêteur SQL, qui permet d'exprimer les requêtes en utilisant le langage SQL classique. Ce requêteur SQL ne se distingue du requêteur précédent que par son écran de paramétrage. En effet, les écrans créés par ce requêteur sont appelés par la même fonction d'exécution de requêtes que celle utilisée par le requêteur habituel.

Ceci signifie que, comme le requêteur, le requêteur SQL fonctionne par extraction temporaire de données dans une table (la même que le requêteur classique), puis par consultation de cette table. Par contre, la consultation ne peut se faire que sur un niveau, les ruptures et les cumuls n'étant pas possibles à ce niveau.

De même que le requêteur classique, la structure de cette table temporaire fait que chaque utilisateur y conserve les résultats de la dernière requête faite, et l'utilisation de cette fonctionnalité implique trois étapes différentes :

  • définition de la requête par cette fonction, puis Validation afin de créer l'écran de consultation correspondant.
  • lancement de la requête (soit par le bouton , soit par entrée dans la fonction d'interrogation et demande de rafraîchissement des données)
  • interrogation de la requête si elle a déjà été exécutée.

Pré-requis

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Gestion de l'écran

En-tête

Présentation

En tête, on trouve des informations permettant d'identifier la requête et quelques paramètres de portée générale.

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Bloc numéro 1

Ce code permet d'identifier une requête.

  • Intitulé (champ INTIT)

Permet de définir un intitulé associé à chaque fiche.

  • Intitulé court (champ INTITSHO)

Cet intitulé permet de donner une désignation à la fiche.
Il est utilisé dans certains écrans ou états lorsqu'il n'y a pas assez de place pour visualiser l'intitulé long.

  • Actif (champ ENAFLG)

Cette case à cocher permet d'activer ou de désactiver la fiche courante sans pour autant perdre son contenu.

Une fiche désactivée ne peut pas être utilisée (par appel de son code) dans d'autres fiches (documents, paramétrages...), ou lors de traitements de masse.

Les habilitations sur une fonction donnée peuvent interdire la création d'une fiche active. Dans ce cas, la case est désactivée par défaut, et est modifiable uniquement par un utilisateur autorisé, ou via un circuit de signature défini par Workflow.

Caractéristiques

  • Type de requête (champ ALLUSR)

Permet de gérer l'affichage d'une requête en consultation, avec les comportements suivants :

  • Requête normale : le résultat de la requête est affichée si la requête a déjà été consultée par l'utilisateur. En effet, chaque utilisateur lançant la requête crée un jeu de données qui lui est propre, et qui ne peut pas être vu par d'autres.
  • Requête partagée : le résultat de l'exécution de cette requête par un utilisateur peut être consulté par d'autres utilisateurs. L'intérêt d'avoir des requêtes partagées réside dans le fait qu'une requête lourde, lancée à un moment donné par un seul utilisateur, permet ensuite à un ensemble d'utilisateurs de disposer d'une information commune. Il est recommandé, pour ce genre de requête, que seul un utilisateur puisse exécuter la requête, les autres y ayant accès en consultation. En outre, il est parfaitement loisible de calculer ce type de requête en batch si elle est particulièrement lourde à constituer ; le code de la tâche batch correspondante s'appelle en effet CALALH.
  • Requête recalculée : le résultat de la requête ne s'affiche jamais automatiquement. Il faut appuyer sur le bouton rafraîchir ou saisir les critères. L'intérêt de ce type de requête est d'éviter de recharger des données si on sait qu'elles se périment rapidement.
  • Représentation (champ REPGRA)

Cet indicateur définit la façon dont la représentation des données va être faite à l'écran. Les possibilités offertes sont les suivantes :

  • Caractère :  les données sont uniquement représentées sous la forme d'un tableau.
  • Car. ou Graph. : les données sont présentées sous l'un des deux modes. Le mode par défaut est déterminé par le champ Affichage par défaut défini dans les paramètres graphiques de la fiche.
  • Car. et Graph. : les données sont présentées sous les deux modes simultanément. La position du graphique par rapport au tableau est déterminée par le champ Position de l'onglet Graphique.
  • Graphique :  les données sont uniquement présentées sous la forme d'un graphique.
  • champ OPTGRA

Permet d'organiser la cohabitation entre caractère et graphique, lorsque le mode de présentation des données permet les deux. Selon les cas :

  • si la représentation est Car ou Graph, on choisit la valeur par défaut de la représentation.
  • si la représentation est Car et Graph, on donne la position du graphique par rapport au tableau de données.

Fermer

 

Onglet Paramétrage

Présentation

Le premier onglet permet tout d'abord de saisir la requête et quelques paramètres généraux.

On va aussi pouvoir donner, dans le tableau intitulé Colonnes, des informations permettant de disposer d'une présentation plus précise. En effet, à l'exécution, la requête renvoie une liste de valeurs qui vont remplir un tableau. En l'absence d'informations plus précises :

  • les colonnes du tableau n'auront pas de titre.
  • elles seront typées alphanumériques, numérique, ou dates, sans plus de précision, en fonction des types de données renvoyées.

De plus, une requête SQL fixe n'a pas forcément beaucoup d'intérêt. Il faut pouvoir y introduire des paramètres qui seront saisis au moment de son lancement. C'est ce que permet le tableau intitulé Paramètres.

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Bloc numéro 1

Définit le code d'un état qui sera associé à la fonction Fichier / Liste à partir de la consultation des requêtes. S'il n'est pas renseigné, on utilise l'état ALISTE, qui proposera une mise en page par défaut. Il est possible de dupliquer cet état générique (il ne sera en principe nécessaire que de modifier la mise en page) pour créer des états parfaitement adaptés à la requête ainsi définie.

Le code état saisi ici peut être associé à un ensemble de codes impression via la fonction dédiée.

Permet de lier les autorisations d'accès à la requête aux autorisations données sur la fonction.

Le principe est le suivant : on vérifie, à l'entrée dans la requête, que la fonction liée est autorisée à l'utilisateur (pour au moins un site, si l'habilitation sur cette fonction se fait par site). Mais cette vérification se fait  uniquement dans le cas où cette requête n'est pas partagée.

En effet, si la requête est partagée, on part du principe que les habilitations de la personne ayant calculé la requête s'appliquent et se propagent à tous ceux qui ont le droit de la visualiser. Il convient donc de définir de façon très soigneuse les habilitations aux requêtes partagées, lorsqu'elles concernent des données sensibles. Ceci est fait via le code d'accès situé dans cet onglet.

Ce code d'accès permet de restreindre l'accès à la fiche courante à certains utilisateurs.
Si la zone est renseignée, seuls les utilisateurs disposant de ce code d'accès dans leur profil peuvent visualiser et modifier cette fiche.

Le droit d'exécution contrôle le fait que l'on puisse exécuter la requête en question (en rafraîchissant la requête ou en modifiant les paramètres et en la ré-exécutant).

  • Nombre lignes (champ NBRLIG)

Permet de définir un nombre de lignes par page logique dans l'écran de consultation généré par le requêteur. Si ce nombre de lignes excède le nombre de lignes physiques affichables, un ascenseur apparaît à droite du tableau. Des boutons situés en haut de l'écran permettront de naviguer entre pages logiques (visualiser la suivante, précédente, dernière, première).

  • Maximum lignes (champ MAXLIG)

Le nombre de lignes maximum correspond à un paramètre de la requête (maxrows) qui arrête la recherche lorsqu'un nombre de lignes satisfaisant aux conditions a été trouvé dans la base (ces lignes seront ensuite triées, mais la base ne garantit pas que les N lignes trouvées sont les N premières dans l'ordre de tri). Il s'agit d'une optimisation permettant de limiter la charge pour la base de données.

  • Groupe (champ GRP)

Permet de disposer d'un critère de classification des requêtes.

  • Nb colonnes fixes (champ NBRCOL)

Permet de figer les x premières colonnes d'un tableau en cas de pagination horizontale.

  • Temps maximum (champ MAXTIM)

Permet d'arrêter la recherche au bout de ce temps (exprimé en secondes). Ceci permet d'éviter d'attendre trop longtemps dans le cas notamment de paramétrage d'une nouvelle requête.

Note : Contrairement au nb maximum de lignes, cette information n'est pas transmise à la base de données. Le temps maximum peut donc être dépassé si la durée de la requête est trop importante.

Requête SQL

  • champ TEXTE

Permet de définir la requête elle-même sous une forme SQL classique compréhensible par la base de données.

Quelques remarques au sujet de cette requête :

  • Toute requête Select y compris complexe peut être écrite ici, pourvu qu'elle renvoie un nombre de champ inférieur au maximum admis.
  • il faut se rappeler que le champ NOMCHAMP(indice), géré dans la table NOMTABLE, est défini, dans la base de données, comme le champ NOMCHAMP_indice dans la table NOMTABLE, indice valant 0, 1, 2... N-1, N étant la dimension du champ.

Ainsi, par exemple, on pourra écrire :

Select LOGIN_0, CHEF_2 From AUTILIS
Where USR_0 like %1%
Order by CREDAT_0

  • Dans une requête de ce type, il est possible de définir des paramètres par la syntaxe %N%, qui se réfère au paramètre numéro N défini dans le tableau des paramètres (%1% dans l'exemple ci-dessus). Les paramètres seront saisis par le biais du bouton lors de l'exécution de la requête.

Tableau Colonnes

  • Intitulé (champ COLTIT)

Ce type de données permet de préciser comment doit se faire la présentation de la donnée. Dans le cas d'un menu local, on précisera le numéro du menu local utilisé. Si le type de données utilisé est lié à un objet, il sera possible de passer par tunnel en gestion de l'objet lors de la consultation.

  • Menu (champ COLNUM)

Permet de définir un numéro de menu local à utiliser pour présenter la valeur numérique de la colonne correspondante renvoyée par la requête.

  • Type de graphe (champ GRA)

Ce champ ne peut être saisi que si le mode de représentation choisi dans l'en-tête n'est pas Caractère. Il permet de préciser la façon dont la représentation graphique va être mise en oeuvre.

Il peut prendre les valeurs suivantes :

  • Aucun ou Libellé si le champ de la ligne est de type alphanumérique. Le champ utilisant la valeur Libelléva être utilisé comme intitulé du graphe. Attention, seule une ligne du tableau peut avoir cette valeur; si elle est déjà présente sur une ligne, il faudra d'abord modifier la valeur de la ligne portant la valeur Libellépour lui redonner la valeur Aucun avant de pouvoir affecter cette valeur à une autre ligne du tableau.
  • Aucun, Valeurou Défautsi le champ de la ligne est de type numérique. La règle est la suivante :
    • Aucun signifie que le champ ne sera jamais présenté dans le graphe.
    • Si le graphique défini dans le dernier onglet permet de faire apparaître plusieurs séries, toutes les séries correspondant à des champs marqué Défautseront visualisées (elles le seront toute si aucune n'est ainsi mise en avant).
    • Si le graphique défini dans le dernier onglet ne permet de faire apparaître qu'une série, la colonne correspondant au premier champ marqué Défautsera visualisée (ce sera la première si aucune n'est ainsi mise en avant).
  • Représentation (champ REP)

Ce champ ne peut être saisi que :

  • si le mode de représentation choisi dans l'en-tête n'est pas Caractère.
  • sur les champs numériques dont on a décidé d'afficher la valeur.

Il permet de gérer des combinaisons de graphes si le type de graphique défini dans les paramètres graphiques permet de faire apparaître plusieurs séries indépendantes de type différent (il est ignoré dans les autres cas). En pratique, les combinaisons utilisables sont les suivantes :

  • Type = Multi graphe, Graphique par défaut=Lignes, Représentation=Multi
  • Type = Multi graphe, Graphique par défaut=Barres, Représentation=Multi

La règle est alors la suivante :

  • Défautsignifie que la présentation graphique de la série correspond au graphique par défaut du dernier onglet (Barres, ou Lignesdans les cas qui nous intéressent).
  • Barre ou Ligne permet de forcer le mode de présentation correspondant pour la série en question.

Tableau Paramètres

  • Intitulé (champ PARTIT)

Si ce champ est renseigné, un paramètre dont l'intitulé correspond à ce champ pourra être saisi avant l'exécution de la requête (via le bouton ).

Ce paramètre pourra être utilisé dans le corps de la requête par le biais de la syntaxe %N%, où N est le numéro de ligne correspondant dans le tableau des paramètres.

Ce type de données permet de faciliter la saisie du paramètre correspondant. En effet, si un type est défini :

  • les contrôles de format sont réalisés
  • Si le type de données utilisé est lié à un objet, il est possible d'utiliser la fenêtre de sélection correspondante.
  • Menu (champ PARNUM)

Permet de définir un numéro de menu local à utiliser pour saisir la valeur du paramètre.

  • Valeur par défaut (champ VALDEB)

 

Fermer

 

Onglet Graphique

Présentation

Cet onglet ne peut être rempli que si une présentation graphique est possible pour la requête. On définit alors la façon dont les données sont présentées sur le graphique.

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Graphique

  • Type (champ TYPGRA)

Ce champ est utile dès que l'on a plus d'une valeur numérique dans le tableau susceptible d'être présenté sous forme graphique. Il peut prendre deux valeurs :

  • Graphe simple : dans ce cas, on ne voit qu'une colonne de valeurs à la fois (un sélecteur permet de choisir laquelle)
  • Multi-graphe : dans ce cas, on voit toutes les colonnes affichables, combinées selon le paramètre défini par le paramètre Représentation.
  • Représentation (champ FSHGRA)

Lorsque l'on présente plusieurs séries dans le graphe (sous réserve que la présentation de toutes les séries soit identique et ne soit pas de type secteur), il est possible de préciser comment on combine les séries de valeurs à l'affichage, en saisissant la valeur suivante  :

  • Multipermet de présenter les valeurs de chaque série côte à côte (une couleur par série)
  • Cumulatif permet de présenter les valeurs en cumul vertical.
  • Comparatif permet de les présenter en comparaison relative (la hauteur du graphe est constante).
  • Graphique par défaut (champ DEFGRA)

Définit la représentation graphique utilisée pour les données à présenter (parmi les choix Barres, Lignes, Aires, Secteurs). Une image affichée en fonction du choix fait illustre le type de présentation obtenu.

Si on ne présente qu'une seule série de valeurs, la représentation graphique par défaut est fixée par ce paramètre.

Si on présente plusieurs séries de valeurs, il est possible de mixer les modes de présentation (une série sous forme de barre, une autre sous forme de ligne, par exemple). Dans ce cas, chaque série de valeurs est représentée en fonction du champ Représentationsitué dans le tableau des champs :

  • s'il vaut Barreou Ligne, ce mode de représentation est utilisé pour la série de valeurs concernée s'il est compatible avec la représentation graphique par défaut (il n'est pas possible de mixer des secteurs avec des barres ou des lignes).
  • s'il vaut Défaut, on utilise le mode de représentation graphique par défaut pour la série.

A l'utilisation, si la représentation des séries est homogène (a fortiori s'il n'y a qu'une série dans le graphe), on dispose d'un sélecteur de graphiques pour passer dans un autre mode rede présentation.

Bloc numéro 3

  • champ IMAG

Image explicative d'informations précédemment saisies.

Bloc numéro 2

Bloc numéro 4

Fermer

 

Remarque importante

Il est à noter qu'aucun filtrage lié aux habilitations n'est réalisé (que ce soit les habilitations par rôle, par site, ou par code d'accès) avec le requêteur SQL. Il est donc conseillé de protéger les requêtes de ce type par un code accès pour limiter les droits de visualisation et encore plus d'exécution de ces requêtes. De même, l'accès à cette fonction doit normalement être limité à une liste restreinte d'utilisateurs.

Boutons spécifiques

génère l'écran de consultation associé, et vérifie l'exactitude de la requête en la soumettant à la base de données pour vérification syntaxique et sémantique.

Permet le lancement de la requête courante. L'exécution se déclenche en mettant à jour une table temporaire, et chaîne sur la fonction de visualisation des requêtes, qui permet de visualiser le résultat de la requête. 

Les champs suivants sont présents dans la fenêtre ouverte par ce bouton :

Bloc numéro 1

  • champ OBJET

 

  • champ CLES

 

Bloc numéro 2

  • Depuis le dossier (champ DOSORG)

Ce champ permet de définir le dossier à partir duquel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

  • Tous dossiers (champ TOUDOS)

Cette option permet de copier la fiche vers tous les dossiers définis dans le dictionnaire (table ADOSSIER de la solution courante).

  • Vers le dossier (champ DOSDES)

Ce champ permet de définir le dossier dans lequel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

Fermer

Ce bouton permet de recopier la définition de la fiche depuis ou vers un autre dossier.

Messages d'erreur

Outre les messages génériques, les messages d'erreur suivants peuvent apparaître lors de la saisie :

Requête incorrecte

[ description de l'erreur renvoyée par la base de données ]

La requête n'est pas correcte, du point de vue de la base de données. Soit elle n'est pas correcte du point de vue syntaxique, soit un élément n'existe pas. La description complémentaire donne l'intitulé de l'erreur renvoyée par la base de données.

Accès impossible à cette fiche

On a tenté d'accéder à une requête du requêteur classique avec le requêteur SQL (les codes d'une requête du requêteur SQL ne peut pas être utilisé pour nommer une requête classique, et vice versa).

Trop de zones

La requête lancée renvoie un trop grand nombre de colonnes. Il est à noter que le nombre de colonnes susceptible d'être lus par le requêteur SQL est limité à 120.

Tables mises en oeuvre

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre