Requêteur
Le requêteur est une fonction permettant de créer des écrans d'interrogation faisant apparaître le résultat de requêtes faites sur la base de données. Il fonctionne par extraction temporaire de données dans une table, puis consultation de cette table. La consultation peut ensuite se faire sur plusieurs niveaux de détail, définis par des ruptures successives.
La structure de cette table temporaire fait que chaque utilisateur y conserve les résultats de la dernière requête faite (sauf si c'est une requête partagée), et l'utilisation de cette fonctionnalité implique trois étapes différentes :
- définition de la requête par cette fonction.
- 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.
La définition des requêtes se fait en donnant une liste de champs issus de tables de la base, d'expressions faisant intervenir des champs de la base, des constantes et des expressions. Les jointures entre tables sont déterminées automatiquement à partir du dictionnaire, mais il est possible de les définir explicitement grâce à l'onglet Avancé.
Il est à noter que deux outils complémentaires existent. Un requêteur équivalent à celui-ci mais basé sur un éditeur visuel et un requêteur SQL passant par des écrans d'interrogation similaires mais dont le but est de concevoir des requêtes basées sur le langage SQL.
Pré-requis
Reportez-vous à la documentation de Mise en oeuvre
Gestion de l'écran
La définition d'une requête se fait sur plusieurs onglets, dont seul le premier est obligatoire.
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
Code (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) |
Caractéristiques
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. |
champ WW |
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 Champs
Cet onglet permet de définir les informations à éditer, sous la forme d'un tableau définissant les tables de la base dont sont issues les informations, les champs ou les expressions à extraire, ainsi que des critères de cumul et de rupture.
A partir de l'ensemble des informations définies dans ce tableau, le requêteur détermine une requête sur des tables liées par des conditions de jointure déterminées par défaut. Ainsi, dans les cas simples, il n'est pas nécessaire de remplir les onglets suivants.
Tableau
Table (champ TBL) | ||||||||||||||||||
Définit la table à partir de laquelle le champ à visualiser doit être extrait. Il est possible d'afficher des champs appartenant à plusieurs tables à condition qu'il existe un lien logique entre eux. Ce lien peut être déterminé automatiquement à partir des liens décrits dans le dictionnaire des données, ou défini dans l'onglet suivant. |
||||||||||||||||||
Champ (champ FLD) | ||||||||||||||||||
Définit le nom du champ que l'on désire visualiser. Ce champ est issu de la table précédente. Si ce champ est non renseigné, on renseignera une expression dans la colonne correspondante. Le champ peut être écrit sous la forme CHAMP(indice), indice étant une constante variant de 0 à N, si on a affaire à un champ qui a plusieurs occurrences. C'est par exemple le cas du champ CHEF dans la table AUTILIS ; on pourra alors écrire CHEF(2) dans le tableau des champs. |
||||||||||||||||||
Intitulé (champ INTITLIG) | ||||||||||||||||||
Permet de définir l'intitulé de la colonne tel qu'il sera affiché à l'exécution de la requête. Par défaut, lorsqu'un champ d'une table est utilisée, son intitulé (tel qu'il est stocké dans le dictionnaire) est proposé. Dans un contexte multilingue, cet intitulé est affiché à l'exécution dans la langue de connexion de l'utilisateur, les textes du dictionnaire étant gérés dans toutes les langues de connexion. Ceci suppose que l'on puisse définir des traductions pour un intitulé modifié, ou correspondant à une expression calculée pour laquelle aucune traduction ne peut être définie. Sur des champs traduisibles tels que celui-ci, vous pouvez saisir un intitulé dans d'autres langues que la langue de connexion courante : cliquez sur Traductions en ligne, depuis l'icône Actions. |
||||||||||||||||||
Expression (champ CLC) | ||||||||||||||||||
Permet de définir une expression calculée qui sera affichée à l'exécution de la requête. Ce champ ne peut être saisi que si aucun nom de champ n'a été donné. L'expression peut intégrer tout champ de l'une des tables en ligne dans la requête, des constantes, des fonctions, des variables globales... L'éditeur de formules est accessible pour faciliter la définition de la formule. |
||||||||||||||||||
Type (champ CODTYP) | ||||||||||||||||||
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 champ, le type associé au champ est proposé par défaut (mais il est modifiable). Dans le cas d'une expression, il doit être précisé (ce peut être un type générique tel une chaîne de caractères A, un menu local M, un entier court C, une date D, un décimal DCB, un entier long L...). Dans le cas d'une chaîne de caractères, on précisera sa longueur maximale sur le champ Longueur qui suit ; dans le cas d'un menu local, on précisera à la fois la longueur d'affichage et 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. |
||||||||||||||||||
Long (champ LNG) | ||||||||||||||||||
Permet de définir la longueur d'un champ lorsque ce champ utilise un type de données générique dont la longueur n'est pas fixée. C'est le cas notamment pour les types A et DCB. Pour les blob, comme pour les clob, il faut saisir la longueur qui sera une longueur maximale de stockage. La codification est la suivante :
|
||||||||||||||||||
Menu (champ NOLIB) | ||||||||||||||||||
Définit le numéro de menu local associée au champ défini sur la ligne. Lorsqu'un champ est de type menu local, il est stocké sous la forme d'une valeur numérique (de 1 à 255) correspondant au rang d'un intitulé dans une table appelée menu local, stockée dans la table des messages APLSTD. En saisie ou en affichage, on voit, selon les choix faits sur l'interface utilisateur :
L'intérêt de ce type de saisie est que la liste des choix est présentée dans la langue de connexion de l'utilisateur. Chaque numéro de menu local caractérise la liste des intitulés possibles. Par exemple, le menu local 1 correspond au choix Non / Oui dans cet ordre. Dans ce cas particulier, l'interface utilisateur peut aussi être la case à cocher. |
||||||||||||||||||
Borne (champ STREND) | ||||||||||||||||||
Trois choix sont possibles dans cette zone :
|
||||||||||||||||||
Cumul (champ CUM) | ||||||||||||||||||
Ce champ ne peut être renseigné que si le champ est numérique. S'il est égal à Oui, un cumul de valeur sera affiché pour les différents niveaux de rupture induits par les critères de groupage. |
||||||||||||||||||
Tri (champ SRT) | ||||||||||||||||||
Les données issues de la requête peuvent être triées selon un ou plusieurs champs, c'est-à-dire présentée dans l'ordre croissant (pour un tri ascendant) ou décroissant (pour un tri descendant) des valeurs de ce champ. L'ordre de tri est l'ordre numérique pour les champs numériques, chronologique pour les dates, et l'ordre du codage utilisé pour les caractères dans les champs alphanumériques (sur les codes alphabétiques, c'est l'ordre lexicographique). Si plusieurs critères de tri sont demandés, le tri se fera prioritairement sur le champ apparaissant en premier dans le tableau puis, à égalité de valeur sur le 2ème critère et ainsi de suite. |
||||||||||||||||||
Groupe (champ GRP) | ||||||||||||||||||
Ce champ permet de réaliser un niveau de rupture.Si on renseigne ce champ par Oui, un regroupement des champs qui suivent pourra être fait par rupture sur le champ courant, et d'éventuelles valeurs cumulées seront affichées au niveau du regroupement. Ce champ ne peut être saisi que si un tri a été défini sur la ligne courante (Ascendant ou Descendant au choix). Par exemple, si on définit une liste d'utilisateurs triés par profil, une rupture par profil permettra de regrouper sur une seule ligne tous les utilisateurs liés à un profil, et de faire apparaître des données cumulées liées au regroupement (par exemple leur nombre si on a un champ égal à 1 que l'on cumule). |
||||||||||||||||||
Niveau (champ NIV) | ||||||||||||||||||
Correspond au niveau de détail désiré pour l'affichage de l'information. Le niveau 1 signifie que l'information est affichée au niveau 1 d'agrégation (le plus élevé) et à tous les niveaux successifs, le niveau 2 signifie que l'information ne sera pas affichée au niveau 1, mais au niveau 2 et à tous les niveaux plus détaillés, etc. Le niveau le plus élevé correspond donc au détail le plus fin de la consultation, qui est celui affiché par défaut quand on entre dans la consultation. Ce niveau est affecté par défaut à 1 sur la première ligne, et incrémenté à chaque fois qu'une rupture est demandé (Groupe=oui) sur le champ précédent. Il peut être modifié si on désire afficher un montant à un niveau d'agrégation différent. Par exemple, lorsqu'on trie et regroupe les informations sur un code tel que le code utilisateur, et que l'on désire afficher le nom de l'utilisateur dans la colonne suivante, il est clair que ce nom doit être affiché au même niveau que le code qui lui correspond et pas seulement sur des niveaux plus détaillés. |
||||||||||||||||||
Tunnel (champ TUN) | ||||||||||||||||||
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 :
|
||||||||||||||||||
Valeur par défaut (début) (champ VALDEB) | ||||||||||||||||||
On saisit ici la valeur du paramètre, sous la forme d'une expression calculée faisant intervenir des variables liées au contexte de lancement. Si le paramètre est une borne de début/fin, on saisit deux valeurs. |
||||||||||||||||||
Valeur par défaut (fin) (champ VALFIN) | ||||||||||||||||||
Onglet Avancé
Cet onglet, dont la saisie est optionnelle, permet de préciser :
- des critères relatifs à la présentation des données (pagination, état utilisé...).
- des critères de sélection complémentaires.
- des conditions de jointure particulières.
Les conditions de jointure sont utiles dans les deux cas suivants :
- si l'algorithme de jointure automatique n'aboutit pas. Ce cas est facile à diagnostiquer, car un message d'erreur explicite est affiché à la validation de la requête. Il suffit parfois de rajouer un lien vers une des tables dont les liens ne sont pas décrits dans le dictionnaire pour résoudre ce cas (les autres resteront déterminés automatiquement).
- si l'algoritme de jointure lie les tables d'une façon non conforme à ce qui est attendu. En effet, dans des cas complexes, plusieurs liens peuvent exister entre des tables ; or l'algorithme s'arrête au premier lien trouvé. Pour vérifier que la jointure est conforme à ce que l'on attendait, on peut utiliser le bouton Infos / Liens, qui donne le détail des liens trouvés.
Bloc numéro 1
Nombre lignes (champ NBRLIG) |
Renseignez le nombre de lignes maximum retournées par la requête. La valeur par défaut est 0. Le nombre maximum est 100. |
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. |
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. |
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. |
Tableau Sélections
Critères de sélection (champ SEL) |
Permet de saisir des critères de sélection, qui sont des expressions logiques portant sur des champs des tables, et pouvant inclure des constantes, des fonctions, des opérateurs. Seuls les lignes des tables satisfaisant à ces conditions seront extraites. L'éditeur de formule permet de simplifier l'écriture de telles expressions. |
Tableau Liens
Expression de lien (champ LNK) |
Utilisez ce champ pour définir les liens qui ne sont pas définis dans le dictionnaire, ou qui doivent être considérés en priorité. La structure du lien doit correspondre à la clé du fichier à lier. Il doit y avoir autant de champs séparés par des points-virgules que de parties de clé. En effet, la syntaxe exacte est : [F:ABV1]CLE=expression1 ; expression2..., où : [F:ABV1]CLE est la clé de la table liée. Cliquez sur le menu Actions pour accéder à la fonction Choix table, qui propose la liste de toutes les tables présentes dans la première section. La sélection d'une des tables déclenche l'affichage du premier index de la table. Pour utiliser un autre index, vous pouvez utiliser la fonction Choix d'un index, accessible par le menu Actions, qui vous proposera de choisir parmi la liste de tous les index de la table précédemment sélectionnée. expression1, expression2 sont les expressions permettant de donner des valeurs aux différents champs de la clé définie précédemment (si la clé est en une partie, il n'y a qu'une expression, sinon, les expressions sont séparées par un point-virgule). Vous pouvez également utiliser la fonction Choix d'un champ, qui permet de renseigner les différentes valeurs de la clé avec des champs de l'une des tables concernées. Après le choix de la clé, qui fait apparaître le nombre de points-virgules définissant les partie de clé à renseigner, cette fonction vous permet de remplir successivement toutes les parties manquantes. Il est à noter que vous pouvez définir des parties de clés constantes. Du point de vue de la base de données, cette syntaxe définit des jointures externes gauches. Il est à noter qu'une deuxième syntaxe vous permet de définir des jointures strictes (ce qui peut avoir un intérêt sur le plan des performances). On ajoute alors un tilde (~) à la syntaxe qui devient : [F:ABV1]CLE=expression1 ; expression2... |
Onglet Accès
Cet onglet permet de définir les conditions d'accès à la requête et aux données extraites.
Type de requête (champ ALLUSR) |
Utilisez ce champ pour gérer l'affichage d'une requête en consultation, avec les comportements suivants :
|
Groupe (champ GRP) |
Utilisez ce champ pour créer une classification des critères disponibles pour les requêtes. |
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). |
Objet (champ OBJLNK) |
Permet de déterminer des filtres d'habilitation appliqués à la constitution de la requête. Ces filtres sont les filtres par site, par rôle, et par code accès. Les principes du filtrage sont les suivants :
Ceci suppose bien entendu que la table sur laquelle sont fait les filtres fasse partie de la requête générée. On entend par là la table où se trouvent les champs code accès, code site, et le cas échéant le champ défini par les rôles accordés à l'utilisateur. Il ne s'agit pas nécessairement de la table principale de la requête : une requête sur des lignes de documents peut être filtrée, par exemple, en fonction des autorisations liées aux champs des tables liées à l'en-tête du document. Attention : ces filtres sont appliqués uniquement lors du calcul de la requête, et en aucun cas lors de la consultation. Ceci peut être sensible si la requête est partagée, par exemple, ou si les filtres par site d'un utilisateur ont évolué entre le moment où la requête a été calculée et le moment où on la visualise. |
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. |
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