FireDAC.Comp.DataSet.TFDAggregate.Expression
Delphi
property Expression: String read FExpression write SetExpression;
C++
__property System::UnicodeString Expression = {read=FExpression, write=SetExpression};
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
property | published | FireDAC.Comp.DataSet.pas FireDAC.Comp.DataSet.hpp |
FireDAC.Comp.DataSet | TFDAggregate |
Description
Spécifie l'expression à calculer.
Utilisez la propriété Expression pour spécifier le texte de la formule. La formule doit contenir des fonctions d'agrégation, sinon une exception est déclenchée. Les fonctions d'agrégation suivantes sont supportées :
Fonction |
Description |
---|---|
|
Effectue la somme des valeurs de l'argument. |
|
Renvoie la valeur minimale de l'argument. |
|
Renvoie la valeur maximale de l'argument. |
|
Calcule la valeur moyenne d'un argument, qui est le total de toutes les valeurs, divisé par le nombre de toutes les valeurs non NULL. |
|
Renvoie le nombre de toutes les valeurs non NULL d'un argument, si l'argument est spécifié. Sinon, elle renvoie le nombre de tous les enregistrements. |
|
Renvoie la première valeur de l'argument. |
|
Renvoie la dernière valeur de l'argument. |
Les fonctions d'agrégation opèrent sur des valeurs de champs ou sur des expressions construites à partir de valeurs de champs, constantes et appels de fonctions scalaires, en utilisant la syntaxe d'expressions FireDAC standard. Toutefois, plusieurs restrictions sont appliquées :
Remarques :
- Vous pouvez créer des expressions en utilisant des opérateurs sur des valeurs d'agrégation avec d'autres valeurs d'agrégation ou constantes.
- Vous ne pouvez pas combiner des valeurs d'agrégation avec des valeurs de champs, car de telles expressions sont ambiguës - rien n'indique quel enregistrement doit fournir la valeur de champ.
- Vous ne pouvez pas imbriquer des fonctions d'agrégation.
L'expression est automatiquement évaluée par FireDAC et le résultat est assigné à la propriété Value. Tous les calculs sont effectués pour le groupe d'enregistrements en cours. Utilisez GroupingLevel pour spécifier le regroupement.
Exemple
// count number of records with Discount > 0
FDQuery1.Aggregates[0].Expression := 'COUNT(IIF(Discount > 0, 1, NULL))';
// OK
FDQuery1.Aggregates[0].Expression := 'COUNT(*) * 5';
// INVALID - cannot combine aggregating function with field
FDQuery1.Aggregates[0].Expression := 'AVG(Discount) * Amount';