Création de lignes à partir des données

Dans cette section :

Comment :

Une requête TABLE normale trie les rangées d'un rapport selon la phrase BY utilisée. Les données récupérées sont triées dans l'ordre croissant ou décroissant, comme demandé. Les rangées peuvent être limitées par une phrase de présélection à un sous-ensemble particulier, mais :

Contrairement, la phrase FML FOR crée une matrice dans laquelle vous pouvez structurer votre rapport rangée par rangée. Grâce à cette organisation, vous avez plus de contrôle sur les données incorporées dans un rapport, ainsi que sur sa présentation. Vous pouvez :


Haut de page

x
Syntaxe : Récupérer les valeurs des champs FOR à partir d'une source de données

Voici la syntaxe pour spécifier des rangées :

FOR fieldname [AS 'coltitle'] value [OR value OR...] [AS 'text'] 
[LABEL label] OVER
.
.
.
[value [OR value ...]] [AS 'text'] [LABEL label]
END

où :

fieldname

est le champ FOR du rapport FML.

'coltitle'

est le titre de colonne pour le champ FOR dans la sortie de rapport.

value

est la valeur (également connu sous le nom de valeur de balise) qui décrit les données récupérées pour cette rangée du rapport.

AS 'text'

Vous permet d'attribuer un nom à une valeur de balise, qui remplace celle dans la sortie. Saisissez le texte entre guillemets simples.

étiquette

Attribue une étiquette à la ligne pour référence dans une expression RECAP. Le label peut compter jusqu'à 66 caractères et ne peut pas contenir d'espaces vierges ou de caractères spéciaux. Chaque label doit être unique.

Même si vous attribuez un label explicite, le label de position (R1, R2, etc,) est retenu à l'intérieur.

Par défaut, une valeur de balise pour un champ FOR, par exemple 1010, ne peut être ajoutée qu'une fois à la matrice FML. Cependant, si vous souhaitez ajouter la même valeur d'un champ FOR à la matrice plus qu'une fois, vous pouvez activer le paramètre FORMULTIPLE (la définition par défaut est OFF). Pour plus d'informations, reportez-vous à Utiliser la même valeur du champ FOR dans des rangées multiples.

Pour plus d'informations sur les fonctions FMLFOR, FMLLIST, FMLCAP, et FMLINFO, qui renvoient les valeurs de balises utilisées dans une requête FML, consultez Utilisation des Fonctions.



Exemple : Création de lignes à partir des valeurs dans une source de données

Supposez que vous avez une source de données simple avec des données financières pour chaque compte appartenant à une société, comme suit :

CHART OF ACCOUNTS
 
ACCOUNT          DESCRIPTION
 
1010             CASH ON HAND
1020             DEMAND DEPOSITS
1030             TIME DEPOSITS
1100             ACCOUNTS RECEIVABLE
1200             INVENTORY
.                     .
.                     .
.                     .

En utilisant la phrase FOR dans FML, vous pouvez lancer la requête TABLE suivante dans laquelle chaque valeur de ACCOUNT est représentée par une balise (1010, 1020, .), et s'affiche en tant que ligne distincte.

TABLE FILE LEDGER
SUM AMOUNT
FOR ACCOUNT
1010 OVER
1020 OVER
1030 OVER
1100 OVER
1200
END

La sortie est montrée comme ce qui suit :

      AMOUNT
      ------
1010   8,784
1020   4,494
1030   7,961
1100  18,829
1200  27,307

Haut de page

x
Création de rangées à partir d'enregistrements multiples

Comment :

Il y a différentes façons de combiner des valeurs multiples de votre source de données dans une rangée de rapport FML. Vous pouvez utiliser:

Par défaut, une valeur du champ FOR ne peut être comprise que dans une rangée unique de la matrice FML. Cependant, en activant le paramètre FORMULTIPLE, vous pouvez inclure la même valeur de données dans des rangées multiples de la matrice FML. Par exemple, la même valeur peut exister comme valeur solitaire dans une rangée unique, faire partie d'une gamme dans une autre rangée et être utilisée dans le calcul d'une troisième rangée. Pour plus d'informations, reportez-vous à Utiliser la même valeur du champ FOR dans des rangées multiples.

En plus de ces méthodes, vous pouvez extraire des balises multiples pour une rangée d'un fichier externe.



x
Syntaxe : Ajouter les valeurs des rangées avec la phrase OR

Pour ajouter les valeurs de deux balises ou plus dans une seule rangée de rapport, utilisez la phrase OR dans la phrase FOR. La syntaxe est :

FOR fieldname 
value1 OR value2 [OR valuen...] [AS 'text'] [LABEL label] [OVER]
.
.
.

où :

fieldname

Est un nom de champ dans la source de données.

value1, value2, valuen

Sont les valeurs de balise à récupérer et ajouter.

AS 'text'

Attribue un titre aux valeurs de balise combinées. Saisissez le texte entre guillemets simples (').

étiquette

Attribue une étiquette à la ligne pour référence dans une expression RECAP. Le label peut compter jusqu'à 66 caractères et ne peut pas contenir d'espaces vierges ou de caractères spéciaux. Chaque label doit être unique.

Même si vous attribuez un label explicite, le label de position (R1, R2, etc,) est retenu à l'intérieur.



Exemple : Totalisation de valeurs de ligne

Le modèle suivant ajoute les valeurs de trois balises (1010, 1020, 1030) comme CASH.

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT 
1010 OR 1020 OR 1030  AS 'CASH'                   OVER 
1100                  AS 'ACCOUNTS RECEIVABLE'    OVER
1200                  AS 'INVENTORY'
END

La sortie est montrée comme ce qui suit :

                     AMOUNT
                     ------
CASH                 21,239
ACCOUNTS RECEIVABLE  18,829
INVENTORY            27,307


x
Syntaxe : Identifier une gamme de valeurs avec la phrase TO

Pour ajouter les valeurs d'une gamme de balises dans une seule rangée de rapport, utilisez la phrase TO dans la phrase FOR. La syntaxe est :

FOR fieldname 
value1 TO value2 [AS 'text'] [LABEL label] [OVER]

où :

fieldname

Est un nom de champ dans la source de données.

value1

Est la valeur de balise de la limite inférieure de la rangée.

TO

Est la phrase requise.

value2

Est la valeur de balise de la limite supérieure de la rangée.

AS 'text'

Attribue un titre aux valeurs de balise combinées. Saisissez le texte entre guillemets simples (').

étiquette

Attribue une étiquette à la ligne pour référence dans une expression RECAP. Le label peut compter jusqu'à 66 caractères et ne peut pas contenir d'espaces vierges ou de caractères spéciaux. Chaque label doit être unique.

Même si vous attribuez un label explicite, le label de position (R1, R2, etc,) est retenu à l'intérieur.



Exemple : Identifier une plage de valeurs

Comme les comptes CASH dans le système LEDGER sont identifiés par les balises 1010, 1020 et 1030, vous pouvez spécifier la rangée comme1010 à 1030 :

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT 
1010 TO 1030 AS 'CASH' 
END


x
Syntaxe : Utiliser des caractères de masquage pour récupérer des valeurs de balise

Si le champ de balise comprend le format de caractères (alphanumérique), vous pouvez effectuer une correspondance masquée. Utilisez le symbole du dollar ($) comme le masque. Par exemple,

A$$D

correspond à toute valeur à quatre caractères qui commence par A et qui termine par D. Les deux autres places peut être n'importe quel caractère. Ce caractère est utile pour spécifier un groupe entier de valeurs de balise sans à avoir à les nommer individuellement.



Exemple : Utilisation de caractères de masquage pour faire correspondre un groupe de labels

Dans cet exemple, les quantités associées à tous les comptes à quatre caractères commençant par 10, dont le masque est 10$$, sont utilisées pour créer la ligne CASH du rapport.

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT 
10$$ AS 'CASH'                 OVER 
1100 AS 'ACCOUNTS RECEIVABLE'  OVER
1200 AS 'INVENTORY'
END

La sortie est montrée comme ce qui suit :

                     AMOUNT
                     ------
CASH                 21,239
ACCOUNTS RECEIVABLE  18,829
INVENTORY            27,307


x
Syntaxe : Utiliser la même valeur du champ FOR dans des rangées multiples

Vous pouvez utiliser la même valeur que pour un champ FOR dans différentes lignes, que ce soit toute seule, dans une ligne, ou dans un calcul) en incluant la syntaxe suivante avant ou au sein d'une requête FML :

SET FORMULTIPLE={ON|OFF}

ou

ON TABLE SET FORMULTIPLE {ON|OFF}

où :

ON

Vous permet de faire référence à la même valeur d'un champ FOR dans une ou plusieurs rangée(s) d'une requête FML.

Où FORMULTIPLE égale ON, une valeur récupérée de la source de données est comprise sur chaque ligne de la sortie pour laquelle elle correspond aux références de balise.

OFF

Ne vous permet pas d'inclure une même valeur dans des rangées multiples. OFF est la valeur par défaut.

Où FORMULTIPLE égale OFF, les balises référencées de n'importe laquelle de ces manières (OR, TO, *) sont évaluées d'abord pour une référence d'extrait ou pour les points de terminaison d'une rangée, ensuite pour un masque et finalement dans une rangée. Par exemple, si une valeur est spécifiée comme une référence d'extrait et puis comme faisant partie d'une rangée, la référence exacte s'affiche. Notez que le résultat est imprévisible si une valeur va dans plus d'une rangée dont les balises ont la même priorité (par exemple, une référence exacte et le point de terminaison d'une rangée).

Pour plus d'informations, consultez Reporting dynamique depuis une hiérarchie.



Exemple : Référencement de la même valeur dans plus d'une rangée

Cette requête récupère les valeurs de balise pour les comptes 1010, 1020 et 1030, et liste les valeurs correspondantes individuellement. Ensuite, il regroupe les mêmes valeurs et affiche le total comme TOTAL CASH. De la même façon, les valeurs de balise pour les comptes 1100 et 1200 sont affichées comme éléments détaillés et puis résumées comme TOTAL NON-CASH ASSETS.

SET FORMULTIPLE=ON 
TABLE FILE LEDGER
SUM AMOUNT
FOR ACCOUNT 
1010 AS 'CASH ON HAND'                OVER 
1020 AS 'DEMAND DEPOSITS'             OVER 
1030 AS 'TIME DEPOSITS'               OVER
BAR                                   OVER 
1010 OR 1020 OR 1030 AS 'TOTAL CASH'  OVER 
" "                                   OVER 
1100 AS 'ACCOUNTS RECEIVABLE'         OVER 
1200 AS 'INVENTORY'                   OVER
BAR                                   OVER 
1100 TO 1200 AS 'TOTAL NON-CASH ASSETS'
END

La sortie est montrée comme ce qui suit :

                       AMOUNT
                       ------
CASH ON HAND            8,784
DEMAND DEPOSITS         4,494
TIME DEPOSITS           7,961
                       ------
TOTAL CASH             21,239
                             
ACCOUNTS RECEIVABLE    18,829
INVENTORY              27,307
                       ------
TOTAL NON-CASH ASSETS  46,136


Exemple : Exemple :

Dans cet exemple, les valeurs d'une ligne du rapport FML proviennent d'un fichier externe appelé CASHSTUF, qui comprend les balises suivantes :

1010
1020
1030

La requête TABLE suivante utilise les valeurs de balise du fichier externe, totalisant les sommes dans les comptes 1010, 1020 et 1030 pour faire la ligne CASH du rapport FML :

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT
(CASHSTUF)  AS 'CASH'                 OVER
1100        AS 'ACCOUNTS RECEIVABLE'
END

Notez que le nom de fichier doit être entre paranthèses.


Haut de page

x
Utilisation de la phrase BY dans les requêtes FML

Seulement une phrase FOR est autorisée dans une requête. Elle remplace en partie une phrase BY, qui contrôle le tri de séquence. Cependant, la requête peut aussi inclure jusqu'à 32 phrases BY. En général, les phrases BY spécifient les champs de tri majeurs (extérieurs) dans les rapport FML et la phrase FOR spécifie les champs de tri mineurs (intérieures). Notez que la phrase BY ROWS OVER n'est pas prise en charge dans une requête qui utilise la phrase FOR.


Haut de page

x
Combinaison de phrases BY et FOR dans une requête FML

Dans cet exemple, les résultats de rapport pour ACCOUNT (le critère de tri intérieur) sont triés selon REGION (le critère de tri extérieur) :

DEFINE FILE REGION
CUR_YR=E_ACTUAL;
LAST_YR=.831*CUR_YR;
REGION/A4=IF E_ACTUAL NE 0 OR E_BUDGET NE 0 THEN 'EAST' ELSE 'WEST';
END
 
TABLE FILE REGION
HEADING CENTER
"CURRENT ASSETS FOR REGION <REGION"
" "
SUM CUR_YR LAST_YR 
BY REGION NOPRINT 
FOR ACCOUNT 
10$$ AS 'CASH'                      OVER
1100 AS 'ACCOUNTS RECEIVABLE'       OVER
1200 AS 'INVENTORY'                 OVER
BAR                                 OVER
RECAP CUR_ASSET/I5C = R1 + R2 + R3;
END

La sortie est montrée comme ce qui suit :

          CURRENT ASSETS FOR REGION EAST           
                                                   
                             CUR_YR         LAST_YR
                             ------         -------
CASH                       9,511.00        7,903.64
ACCOUNTS RECEIVABLE               .               .
INVENTORY                         .               .
                     --------------  --------------
CUR_ASSET                     9,511           7,903

Une valeur de champ de tri peut être utilisée dans une commande RECAP pour permettre au modèle d'effectuer différentes actions dans chaque rupture de tri majeure. Par exemple, le calcul suivant calcule une valeur non-zéro uniquement pour la région EAST :

RECAP X=IF REGION EQ 'EAST' THEN .25*CASH ELSE 0; 
AS 'AVAILABLE FOR DIVIDENDS'

Pour plus d'informations, consultez Exécution de calculs interlignes.


WebFOCUS