Introduction aux formules
Aspose.Tasks for .NET API prend en charge la lecture et l’écriture de formules dans les fichiers Microsoft Project (MPP).
Les formules sont utilisées pour calculer des valeurs personnalisées pour les tâches, les ressources et les champs du projet en fonction des données de projet existantes.
La Formula propriété de la ExtendedAttributeDefinition
class fournit une interface pour l’affectation et la lecture des formules.
Si une chaîne de formule invalide est affectée, une FormatException
est levée.
Cette page fournit une introduction à la grammaire utilisée dans les formules, aux opérateurs pris en charge, aux fonctions et aux exemples.
Grammaire des formules
Microsoft Project utilise la grammaire suivante pour les formules, que suit également Aspose.Tasks :
1 Formula -> Formula Binary_Op Primary | Primary
2 Primary -> (Formula) | Unary_Op Primary | Function | ValidFieldName | ValidDoubleValue | "StringLiteral"
3 Function -> ValidFunctionName(Args)
4 Args -> Args Delimiter Formula | Formula | |
5 Delimiter -> , | ; // Note: Delimiter is culture-specific in XML format ( , or ; ) and persistent in MPP ( , )
6 Binary_Op -> + | - | * | / | & | MOD | ^ | = | <> | < | > | AND | OR
7 Unary_Op -> NOT | + | -
Éléments pris en charge
1. Champs
Vous pouvez utiliser n’importe quel nom de champ valide de Microsoft Project (par ex., [Duration]
, [Actual Duration]
, [Standard Rate]
).
2. Opérateurs
Les formules prennent en charge :
- Opérateurs arithmétiques :
+
,-
,*
,/
,MOD
,^
- Opérateurs de comparaison :
=
,<>
,<
,>
- Opérateurs logiques :
AND
,OR
,NOT
- Concaténation de chaînes :
&
3. Fonctions
La plupart des fonctions standard de Microsoft Project sont prises en charge, notamment :
- Fonctions de date et d’heure (par ex.,
DateDiff
,Now
) - Fonctions mathématiques (par ex.,
Round
,Abs
,IIf
) - Fonctions de chaîne (par ex.,
Len
,Instr
,Left
,Right
)
Exemples
Exemple 1 : arithmétique simple
1var attr = ExtendedAttributeDefinition.CreateTaskDefinition(
2 CustomFieldType.Number,
3 ExtendedAttributeTask.Number1,
4 "WorkPerDay");
5
6attr.Formula = "[Work] / [Duration]";
Cette formule calcule le travail moyen par jour pour une tâche.
Exemple 2 : expression conditionnelle
1var attr = ExtendedAttributeDefinition.CreateTaskDefinition(
2 CustomFieldType.Text,
3 ExtendedAttributeTask.Text1,
4 "TaskStatus");
5
6attr.Formula = "IIf([% Complete] = 100, \"Done\", \"In Progress\")";
Cette formule définit la valeur du champ personnalisé sur “Terminé” si la tâche est terminée, sinon sur “En cours”.
Gestion des erreurs
- Si une formule est syntactiquement incorrecte, une
FormatException
sera levée lors de son affectation. - Si une formule fait référence à champ ou fonction inexistants, cela peut provoquer une erreur lors du calcul.
- Les délimiteurs spécifiques à la culture (
;
contre,
) doivent être pris en compte lors de la manipulation des fichiers projet XML. Dans fichiers MPP, le délimiteur est toujours une virgule,
.