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.

 

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é, qui permet de donner une désignation à la fiche, est utilisé dans certains écrans ou états lorsqu'il n'y a pas assez de place pour visualiser l'intitulélong.

  • Actif (champ ENAFLG)

Sélectionnez cette case à cocher pour activer la fiche courante.

Les enregistrements non sélectionnés conservent leur contenu et paramétrage, mais ne pourront pas être utilisés en rappelant leur code dans :

  • les autres enregistrements, comme les documents et paramètres,
  • les traitements en 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. Elle est modifiable uniquement par un utilisateur autorisé, ou via un Workflow de signature.

Caractéristiques

  • Type de requête (champ ALLUSR)

Utilisez ce champ pour 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é 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 comment les données sont représentées à l'écran. Les possibilités 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 la section Graphique.
  • Graphique : les données sont uniquement présentées sous la forme d'un graphique.
   
  • champ OPTGRA

Utilisez ce champ pour organiser la relation entre le caractère et le graphique, lorsque le mode de représentation des données autorise les deux. Selon le contexte :

  • Si la représentation est Car. ou Graph., la valeur par défaut est appliquée à la représentation.
  • Si la représentation est Car. et Graph., la position du graphique dépend du tableau des données.

 

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.

 

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.

Utilisez ce champ pour lier les autorisations d'accès à la requête aux autorisations données sur la fonction.

Le principe en est le suivant : à l'entrée dans la requête, on vérifie 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). Cette vérification est faite  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 est donc nécessaire de définir avec précaution les habilitations aux requêtes partagées, lorsqu'elles concernent des données sensibles. Ceci est possible via le code d'accès situé dans cette section.

Ce code d'accès permet d'interdire l'accès à la fiche courante pour certains utilisateurs.

Si le champ est alimenté, seuls les utilisateurs qui ont des droits de lecture sur ce code d'accès peuvent visualiser l'enregistrement ; et seuls les utilisateurs avec des droits d'écriture peuvent le modifier.

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)

Utilisez ce champ pour créer une classification des critères disponibles pour les 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)

Utilisez ce champ pour arrêter la recherche après la période de temps indiquée (en secondes). Ceci permet d'éviter d'attendre trop longtemps dans le cas du paramétrage d'une nouvelle requête par exemple.

Remarque : Contrairement au nombre maximum de lignes, cette information n'est pas transmise à la base de données. Le temps maximum peut donc pas ê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)

 

 

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.

 

Champs

Les champs suivants sont présents dans cet onglet :

Graphique

  • Type (champ TYPGRA)

Ce champ est utilisé lorsqu'il existe plus d'une valeur numérique dans le tableau pouvant être représentée sous forme graphique. Ce champ peut afficher deux valeurs :

  • Graphique simple : une seule colonne de valeurs peut être affichée à la fois (un sélecteur est disponible)
  • Multi-graphiques : toutes les colonnes s'affichent, combinées selon la valeur du paramètre Représentation.
  • Représentation (champ FSHGRA)

Lorsque plusieurs séries sont représentées dans le graphique (à condition que la présentation de toutes les séries soit identique et non par 'secteur'), vous pouvez indiquer comment les valeurs des séries sont combinées, selon les valeurs suivantes :

  • L'option multiple permet de présenter les valeurs de chaque série côte à côte (une couleur par série)
  • L'option cumulative permet de présenter les valeurs sous forme de total vertical.
  • L'option comparative permet de présenter les valeurs sous forme de comparaison relative (la hauteur du graphique est constante).
  • Graphique par défaut (champ DEFGRA)

Ce champ définit la représentation graphique appliquée aux données présentées (Barres, Lignes, Aires, Secteurs). Une image s'affiche, en fonction du choix effectué, illustrant le type de présentation obtenu.

Si une seule série de valeurs est disponible, la représentation graphique est fixée par défaut par ce paramètre.

Si plusieurs séries de valeurs sont disponibles, il est possible de mélanger les modes de présentation (une série en barres, une autre en lignes, par exemple). Dans ce cas, la représentation de chaque série de valeurs dépend du champ Représentation du tableau des champs :

  • Pour les Barres ou Lignes, le mode de représentation est appliqué aux séries de valeurs compatibles avec la représentation graphique par défaut (les secteurs ne peuvent pas être mélangés avec les barres ou les lignes).
  • Pour le mode Par défaut, la représentation graphique par défaut est appliquée aux séries.

Si la représentation des séries est homogène (une seule série existe dans le graphique), un sélecteur est disponible pour le type de graphique, vous permettant de sélectionner un mode de présentation différent.

Bloc numéro 3

  • champ IMAG

Image détaillant les informations saisies précédemment.

Bloc numéro 2

Bloc numéro 4

 

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)

Indiquez 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)

Indiquez le dossier dans lequel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

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