Il existe plusieurs formules MyReport permettant d'écrire soit même des formules Excel : ExcelEntier, ExcelTexte, ...
Exemple : Je veux calculer le nombre de valeurs dans un listing (Zone : "MonListing") égale à la valeur d'un champ "MonChamp" Dans un champ "MonDeuxiemeChamp", je peux faire la formule "ExcelEntier( countif(MonListing, [[MonChamp]]) )" Ce champ créera les formules Excel : "=NB.Si(MonListing, B2)", "=NB.Si(MonListing, B3)", …
Attention
Toutes les formules Excel doivent être écrites en anglais dans MyReport Builder.
Il est possible d'utiliser la notation L1C1 ou la notation absolue, mais il ne faut pas mélanger les deux notations dans une formule :
Pour écrire une formule de ce type "=NB.SI(B:B;LC(-1))", Il faut :
Soit passer par des Zones pour les références absolues soit "=NB.SI(ZoneColonneB;LC(-1))"
Ce qui coté MyBuilder s'écrira ExcelEntier(countif(ZoneColonneB,RC[-1]))
Soit tout passer en relatif : ExcelEntier(countif(C[-2],RC[-1]))
Soit tout passer en absolue : ExcelEntier(countif(B:B,C2))
Le champ Report utilise des champs Modèle
Le champ Report utilise directement le champ modèle sans utiliser de fonction (non calculé). Le champ report récupère directement les valeurs du champ Modèle.
Le champ report est un champ calculé
Si la formule du champ utilise des champs de différentes requêtes (mode multi-requêtes) : le champ est calculé par MyReport.
Si la formule du champ est entièrement compatible SQL, et qu'il n'utilise que des champs calculables SQL, la formule est calculée et agrégée dans la requête SQL.
Sinon, la formule est calculée et agrégée par MyReport.
Le champ Report utilise des champs Report
Si la formule est entièrement compatible Excel (et que tous les champs report utilisés sont visibles), la formule sera calculée par Excel.
Si la formule du champ est entièrement compatible SQL, et le champ n'utilise que des champs calculable SQL:
Le champ Report utilise des opérations (Rang, Variation, Pourcentage,...) la formule est calculée et agrégée par MyReport.
Le champ Report n'utilise pas d'opération (Rang, Variation, Pourcentage,...) la formule est calculée et agrégée dans la requête SQL.
Sinon, la formule est calculée et agrégée par MyReport.
Si le champ utilise une opération (cumul, pourcentage, rang, différence, variation) : il est calculé par MyReport.
Si le champ calculable Excel est utilisé dans un tri sur indicateur, la procédure de base est appliquée en interdisant les calculs Excel.
Si le champ est dans un sous-report. La procédure de base est appliquée en interdisant les calculs Excel.
Si un champ calculé MyReport ou SQL utilise un champ report calculable Excel, ce dernier est redéterminé, en lui interdisant le mode Excel.
Si le champ est agrégé, non calculé et utilise un champ modèle calculé MyReport (donc provenant d'un modèle non chargé) : tous les champs report agrégés sont forcément calculés par MyReport.
Si le report a un champ agrégé calculé MyReport et un champ agrégé calculé SQL, MyReport tente de calculer et agréger le champ SQL via MyReport.
Si ce dernier n’est pas calculable ou agrégeable via MyReport (utilisation d’une fonction SQLX ou SQLXAgrege), le Report est invalide avec le message:
Le champ agrégé "Champ agrégé SQL" ne peut pas être calculé : - Il utilise une fonction forçant son calcul en SQL - Les champs agrégés ou les filtres agrégés suivants utilisent des fonctions nécessitant un calcul par MyReport : "Champ agrégé MyReport" Vous devez soit modifier la formule du champ "Champ agrégé SQL" pour qu'il soit calculé par MyReport, soit les formules des autres champs et filtre agrégés en forçant leurs calculs en SQL
Si le report a un champ agrégé qui utilise un champ modèle SQL, et un champ agrégé MyReport, MyReport calcule le champ SQL via la requête SQL sans son agrégation, et tente d’agréger le champ modèle SQL via MyReport.
Si ce dernier n’est pas agrégeable MyReport (utilisation de la fonction SQLXAgrege), le Report est invalide avec le message :
Le champ agrégé "Champ agrégé SQL" ne peut pas être calculé : - Il utilise une fonction forçant son calcul en SQL - Les champs agrégés ou les filtres agrégés suivants utilisent des fonctions nécessitant un calcul par MyReport :"Champ agrégé MyReport" Vous devez soit modifier la formule du champ "Champ agrégé SQL" pour qu'il soit calculé par MyReport, soit les formules des autres champs et filtre agrégés en forçant leurs calculs en SQL