Requête 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
Reportez-vous à la documentation de Mise en oeuvre
Gestion de l'écran
En-tête
En tête, on trouve des informations permettant d'identifier la requête et quelques paramètres de portée générale.
Bloc numéro 1
Requête (champ COD) |
Ce code permet d'identifier une requête. |
Intitulé (champ INTIT) |
Permet de définir un intitulé associé à chaque fiche. |
Intitulé court (champ INTITSHO) |
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 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 :
|
Représentation (champ REPGRA) |
Cet indicateur définit comment les données sont représentées à l'écran. Les possibilités sont les suivantes :
|
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 :
|
Onglet Paramétrage
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.
Bloc numéro 1
Etat (champ RPT) |
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. |
Fonction (champ FCTLNK) |
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. |
Code d'accès (champ ACS) |
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 :
|
Tableau Colonnes
Intitulé (champ COLTIT) |
Type (champ COLTYP) |
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 :
|
Représentation (champ REP) |
Ce champ ne peut être saisi que :
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 :
La règle est alors la suivante :
|
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. |
Type (champ PARTYP) |
Ce type de données permet de faciliter la saisie du paramètre correspondant. En effet, si un type est défini :
|
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
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.
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 :
|
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 :
|
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 :
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
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
Valider |
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. |
Exécuter |
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. |
Copie
Ce bouton permet de recopier la définition de la fiche depuis ou vers un autre dossier. Bloc numéro 1
Bloc numéro 2
|