Cette fonction permet de créer et de modifier des vues, en décrivant ses caractéristiques dans le dictionnaire de données du dossier. Il sera possible de créer des vues sur des tables de différents dossiers.

La validation de cette description permet alors de créer la vue dans la base de données, ou d'en modifier les caractéristiques.

Une vue est ensuite utilisable en lecture seulement. La programmation autour d'une vue est similaire à celle d'une table. Elle aura sa propre classe [F]. Les instructions suivantes sont disponibles pour les vues :

  • (local) File, close (local) File, Filter, For ... Next, Read, Columns, Link

Une vue est accessible par Crystal Report et par l'éditeur de formule.

La restauration, ou la validation d'une table détruit les vues basées sur cette table. Lors de la restauration, les vues et les tiggers sont re-générés automatiquement par le superviseur. Par contre, suite à la validation forcée d'une table, on doit lancer la validation des vues du dossier courant et des autres dossiers portant sur cette table.

Une vue permet par exemple :

  • d'éviter d'ouvrir explicitement une table d'un autre dossier, par exemple, pour les dossiers historisés. Une vue est créée pour chaque table non historisée ; de cette manière, les fonctions de consultation ainsi que les états fonctionnent indifféremment sur le dossier principal ou le dossier historisé.
  • de développer des états accédant à des données de plusieurs dossiers
  • d'accéder à des fonctionnalités SQL jusqu'alors inaccessibles : union, group by, fonctions SQL

Pré-requis

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Gestion de l'écran

La définition d'une vue se fait à l'aide de 3 onglets : un onglet de définition de la requête, l'onglet de définition des champs, et l'onglet de définition des clés.

En-tête

Champs

Les champs suivants sont présents dans cet onglet :

Le code de la vue doit être composé de 1 à 10 caractères (lettres ou chiffres mais commençant obligatoirement par une lettre). C'est un identificateur unique pour l'ensemble des vues du dictionnaire des données. Une vue ne peut pas porter le même nom qu'une table du dictionnaire, puisqu'à la validation, le superviseur génère les fichiers *.srf et *.fde. les mots réservés d'adonix sont interdits.

  • Abréviation (champ ABRVUE)

L'abréviation de la vue doit être composée de 1 à 3 caractères (lettres ou chiffres mais commençant obligatoirement par une lettre). Cet identificateur peut ne pas être unique pour l'ensemble des abréviations des vues du dictionnaire de données. Les mots réservés d'Adonix sont interdits.

  • Intitulé (champ INTITSAI)

Saisissez la description de la fiche concernée.

Cet intitulé long est utilisé en titre dans les écrans et les états.

  • Actif (champ ENAFLG)

 

Fermer

 

Onglet Requête

Présentation

Cet onglet permet d'écrire la requête.

La requête doit être écrite au minimum dans le langage de la base de données courante du dossier. Mais pour toute vue standard livrée, un script est livré pour chasue base. Au moment de la validation de la vue, que le fichier *.viw est créé avec le script adapté à la base de données du dossier courant ; celui-ci est créé dans le répertoire FIL, sur le serveur de données.

Si l'on veut préciser dans la requête des champs soumis à un code activité, de même qu'un nom de dossier, il est recommander d'utiliser une formule. En effet, il est préférable de ne pas mettre le dossier "en dur" dans la requête, afin de permettre le fonctionnement dans un autre dossier, suite à une copie de cette vue.

Exemple, code activité dimensionné de 1 à 3 pour le champ LIEN, et formule sur dossier :

Select CLENUM1_0, CLENUM2_0, LIEN_0
%string$(find(func AFNC.ACTIV("ZZM"),2,3)<>0,", LIEN_1")%
%string$(find(func AFNC.ACTIV("ZZM"),3)<>0,", LIEN_2")%
From %nomap+"."%ZZMB

Pour avoir de plus amples renseignements sur les règles d'écriture de la requête, on lira l'aide du champ. 

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Caractéristiques

Le Code Activité et le Module permettent de savoir si la vue décrite dans le dictionnaire doit effectivement être créée dans la base de données du dossier. Elle l'est si les deux conditions ci-dessous sont réalisées simultanément :

 le champ code activité est vide, ou bien le code activité (définie dans la vue correspondante) est effectivement activé.

 le module auquel la vue est rattachée a été déclaré actif pour le dossier.

Une vue affectée d'un code activité commençant par X, Y, ou Z, est réputée être spécifique et ne sera en aucun cas affectée par un changement de version (ces codes activités peuvent être mis au niveau des lignes).

  • Accès non sécurisé (champ SECURE)

Cette case à cocher permet de restreindre l'accès à la table de données au seul dossier propriétaire de la table et à certains dossiers autorisés. Cette notion est identique pour la vue. Une modification de ce champ nécessite une revalidation de la table, pour être pris en compte dans la base de donnée.

  • non sécurisé : tous les dossiers de la solution peuvent accéder à la table pour lire ou écrire des données de cette table. C'est le cas :
    • des tables système,
    • des tables dictionnaire,
    • de certaines tables superviseur,
  • sécurisé : l'accès à cette table se fait en fonction des droits du dossier d'appel. Un dossier peut être :
    • non habilité,
    • habilité en lecture,
    • habilité en lecture écriture. C'est le cas des tables fonctionnelles et de la plupart des tables superviseur.

Les dossiers habilités sont :

  • le dossier dans lequel la table est définie (les tables système étant dans le dossier de référence de la solution : dans le cas de Sage X3, ce dossier s'appelle X3),
  • les dossiers parents du dossier,
  • un dossier habilité (via la fonction Gestion des dossiers, onglet "Liens", bloc "Dossiers de la solution").
  • les dossiers d'autres solutions ayant un accès par liens (via la même fonction).

SEEINFOLa politique de sécurité pour la table étant considérée comme du paramétrage, cette case à cocher n'est pas mise à jour par patch. A la validation de la table, le fait que cette case soit cochée provoque la création d'un fichier de configuration (d'extension ".cfg") avec le code suivant :

$SECURITY
{  "LEVEL0" }
End

Si d'autres directives manuelles existent dans le fichier de configuration, elles sont respectées. Des directives peuvent en effet être ajoutées par mise à jour du bloc "Fichier de configuration"dans l'onglet correspondant de la Gestion des tables).

  • Module (champ MODULE)

Le Code Activité et le Module permettent de savoir si la vue décrite dans le dictionnaire doit effectivement être créée dans la base de données du dossier. Elle l'est si les deux conditions ci-dessous sont réalisées simultanément :

 le champ code activité est vide, ou bien le code activité (définie dans la vue correspondante) est effectivement activé.

 le module auquel la vue est rattachée a été déclaré actif pour le dossier.

Une vue affectée d'un code activité commençant par X, Y, ou Z, est réputée être spécifique et ne sera en aucun cas affectée par un changement de version (ces codes activités peuvent être mis au niveau des lignes).

  • Groupe validation (champ GRUCFM)

 

Tableau Tables et vues utilisées

  • Code (champ OBCCOD)

 

 

Oracle

  • champ TEX1

 

Sql Server

  • champ TEX2

 

Fermer

 

Onglet Champs

Présentation

Cet onglet permet de définir l'ensemble des champs de la vue dans un tableau déroulant. Il doit y avoir entière compatibilité entre la description des champs dans la requête et dans cet onglet ( nombre, ordre et type des champs ). Ce contrôle est effectué lors de la validation de la vue. Ces champs peuvent existés dans le dictionnaire des tables; cen'est toutefois pas une obligation.

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Tableau Champs

  • Champs (champ FLDVUE)

On définit dans cette colonne le nom de zone de la vue telle qu'elle sera définie dans le progiciel (un champ de nom NOMCHAMP défini dans une vue d'abréviation ABV pourra être accédé par la syntaxe [F:ABV]NOMCHAMP).

Pour les champs créés en spécifique, le nom de zone doit commencer par X_, Y_ ou Z_.

Pour un champ dimensionné (NOMCHAMP_0, NOMCHAMP_1, NOMCHAMP_2…), on ne définit qu'une seule zone NOMCHAMP.

Vous devez définir ici le type de la zone. Les principaux types sont :

A : Alphanumérique
C : Entier court
L : Entier long
DCB : Décimal
D : Date
M : Menu local
MM : Menu local avec filtre
ACB : clob
ABB : blob

 D'autres types prédéfinis existent. Ils font généralement référence à une table annexe (devise, section,...). La touche F12 vous permet d'en obtenir la liste.

Il n'est pas possible d'utiliser ici, les types de donnés relatifs aux textes traduits : AX1, AX2, AX3.

  • 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 :

  • soit un intitulé pouvant être choisi dans une liste déroulante communément appelée combo box
  • soit une liste de boutons de choix.

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.

  • 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 :

Longueur

Taille mémoire

Caractères maximum

 0

 1020

 510

 1

 2044

 1022

 2

 4092

 2046

 3

 8188

 4094

 n

 1024*(2^n) - 4

 512*(2^n) - 2

Un code activité permet :

  • de rendre optionnel un élément du dictionnaire si la valeur associée au code activité est nulle.
  • de signer les éléments spécifiques dès lors qu'ils sont marqués par un code commençant par X, Y ou Z.
  • de dimensionner un nombre de lignes maximum lorsque le code activité marque des éléments d'un tableau.

Ainsi, si le code activité est non actif, l'élément marqué ne sera pas utilisable, et le code associé (s'il y en a) ne sera pas généré ni activable.

  • Dim (champ DIME)

Dimension de la zone dans la vue. La dimension peut également être affectée en fonction du code activité.

  • Intitulé (champ FLDINTSAI)

Saisissez la description de la fiche concernée.

Cet intitulé long est utilisé en titre dans les écrans et les états.

  • Options (champ OPTION)

Ces options sont matérialisées par des caractères qui peuvent se concaténer lorsque plusieurs options sont nécessaires. Il est possible de choisir ces options grâce à une fenêtre de sélection. On trouvera une description détaillée de toutes les options possibles.

Fermer

 

Icône Actions

Ajout

 

Fermer

 

Onglet Clés

Présentation

Cet onglet permet de définir l'ensemble des clés disponibles pour un order by sur la vue. Attention, il n'y a pas de création d'index pour la vue.

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Tableau Clés

  • No (champ NUMLIG)

 

  • Code clé (champ CODCLE)

Ce champ correspond au nom sous lequel la clé est connu dans l'ordre Order By. Une norme est utilisée dans toutes les vues de l'applicatif : elle consiste à nommer les clés en utilisant l'abréviation de la vue, suivi de 0 pour la première clé , de 1 pour la deuxième clé, etc.…Pour le spécifique, faites commencer ce code par l'une des trois lettres : X,Y ou Z.

  • Descripteur clé (champ DESCLE)

On saisit ici la liste des champs composant l'index, séparé par un '+' s'il y a plusieurs champs.
Un champ trié en descendant est précédé du signe "-".
Le premier champ composant un index est sans signe et est forcément ascendant.

  • Homonymes (champ KEYDUP)

Ce champ est par défaut initialisé à Oui. Il est possible de le mettre à Non. Dans ce cas, un message d'avertissement prévient qu'il ne doit pas y avoir de clés en double sur l'index de cette vue. Si c'était le cas, il n'y aurait pas d'erreur mais une simple boucle For ne détecterait pas les homonymes.

Il est donc recommandé de le laisser à Oui sauf dans des cas très particuliers où l'option Non permet de supporter les instructions "Read Next/Prev" sur des vues.

Un code activité permet :

  • de rendre optionnel un élément du dictionnaire si la valeur associée au code activité est nulle.
  • de signer les éléments spécifiques dès lors qu'ils sont marqués par un code commençant par X, Y ou Z.
  • de dimensionner un nombre de lignes maximum lorsque le code activité marque des éléments d'un tableau.

Ainsi, si le code activité est non actif, l'élément marqué ne sera pas utilisable, et le code associé (s'il y en a) ne sera pas généré ni activable.

Fichier de configuration

  • champ FICCFG

On peut saisir dans ce bloc un texte décrivant la configuration technique de vue dans la base de données. Ce texte est enregistré dans un fichier "nom de vue.cfg" dans le répertoire FIL de l'application. Ce fichier est utilisé par l'instruction "valfil". On consultera l'annexe technique dédiée pour plus d'informations.

Fermer

 

Boutons spécifiques

Crée ou met à jour la vue dans la base de données à partir du dictionnaire, par l'instruction "create view". Un contrôle syntaxique de la requête est effectué par rapport à la base de donnée du dossier.

Les fichiers créés dans le répertoire FIL sont :

  • *.srf :  contient la liste des champs. un flag "#V" est positionné en ligne 3 pour distinguer les vues, des tables.
  • *.fde : généré par valfil -n
  • *.viw : contient la description de la requête avec le script correspondant à la base de donnée du dossier.
  • *.cfg : fichier de configuration, généré si le clob associé est renseigné ou si l'accès est sécurisé.

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

Permet de recopier la structure de la vue vers un autre dossier. Attention, seule la description de la vue dans le dictionnaire est recopiée : la vue n'est pas créée dans le dossier destinataire (il faudra valider cette description pour que la vue soit créée).

Barre de menu

Option / Source .srf

Cela permet de visualiser le fichier *.srf correspondant à la table courante dans l'application courante.
Cette option est notamment intéressante lorsqu'on est sur un serveur sur lequel on n'a pas les droits sur le répertoire FIL.

Option / Source viw

Cela permet de visualiser le fichier *.viw contenant le source de la vue dans l'application courante.
Cette option est notamment intéressante lorsqu'on est sur un serveur sur lequel on n'a pas les droits sur le répertoire FIL.

Messages d'erreur

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

Il existe déjà une table du même nom

On ne peut pas créer une vue dont le nom est déjà donné pour une table. En effet, il faut une unicité toute table et vue confondue car le système crée un fichier *.srf et *.fde.

Taille du fichier trop grande

Taille limitée sur le fichier de configuration.

Type de donnée non géré

on ne peut pas créer une vue avec un champ de type AXX ( texte traduisible )

Longueur incorrecte

la longueur est incorrecte en fonction du type interne du champ.

  • libellé : longueur doit être <= 30
  • entier court : longueur doit être <= 4
  • entier long : longueur doit être <= 8
  • décimal : partie entière + partie décimale <= 32
  • alphanumérique : longueur doit être <= 250
  • blob, clob :  longueur doit être <= 20


Option incorrecte

On a tenté de saisir une option qui n'existe pas.

Option incompatible avec le format x (Type de donnée y)

Quand on précise un format sur un type de donnée alpha, il ne faut pas utiliser les options A et #.

Abréviation déjà existante ...

message d'avertissment, lorsqu'on tente de saisir une abréviation sur une vue qui est déjà existante pour une autre vue ou une table. Il est effectivement recommandé d'avoir des abréviations uniques.

Remarques

Une vue est créée dans la base de données du dossier où elle est installée au moment de sa validation. Toutes les fonctions X3 utilisées dans une telle vue (par la syntaxe %formule%) sont évaluées lors de la validation de la vue et transmises à la base comme des constantes.

A la création d'un dossier ou lors de sa validation, l'opération qui va valider les vues est déclenchée depuis le dossier X3 qui est différent de celui où la vue est installée. Il faut donc prendre les précautions suivantes:

  • dans les formules, éviter d'utiliser des fonctions (syntaxe func) pour calculer des constantes qui seront ensuite insérées à la création de la vue, à moins d'être absolument certain que la fonction en question est disponible dans tous les dossiers (y compris le dossier X3) et rend la même valeur.
  • privilégier la déclaration de tables ou de vue sans préciser dans quel dossier elle se trouve (et notamment pas nomap ou adxmother dont la définition peut varier en fonction du dossier.

SEEWARNING Si ces précautions ne peuvent pas être évitées, il faut absolument penser à revalider manuellement les vues qui posent problème dans le dossier lui-même après les opérations de validation de dossier.

Tables mises en oeuvre

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre