Fonction ORDERBY ER
La fonction ORDERBY
renvoie la liste spécifiée sous la forme d’une Liste des enregistrements après avoir été triée selon les arguments spécifiés. Ces arguments peuvent être définis comme expressions.
Syntaxe 1
ORDERBY (list, expression 1[, expression 2, …, expression N])
Syntaxe 2
ORDERBY (location, list, expression 1[, expression 2, …, expression N])
Note
Cette syntaxe est prise en charge pour Microsoft Dynamics 365 Finance version 10.0.25 et ultérieures.
Arguments
location
: Chaîne
L’emplacement où le tri doit être exécuté. Les options suivantes sont valides :
- « Requête »
- « InMemory »
list
: Liste d’enregistrements
Chemin d’accès valide d’une source de données du type de données Liste d’enregistrements.
expression 1
: Champ
Chemin valide d’un champ de la source de données référencé par l’argument list
de la fonction appelée. Le champ référencé doit être un champ du type de données primitif. Cet argument est obligatoire.
expression N
: Champ
Chemin valide d’un champ de la source de données référencé par l’argument list
de la fonction appelée. Le champ référencé doit être un champ du type de données primitif. Ces arguments supplémentaires sont facultatifs.
Valeurs de retour
Liste d’enregistrements
Liste des enregistrements résultante.
Notes d’utilisation
Syntaxe 1
Le tri des données se fait toujours dans la mémoire du serveur d’application. Pour plus d’informations, voir exemple 1.
Syntaxe 2
Tri en mémoire
Quand l’argument location
est spécifié comme InMemory, le tri des données est effectué dans la mémoire d’un serveur d’application. Pour plus d’informations, voir exemple 2.
Tri dans la base de données
Quand l’argument location
est spécifié comme Requete, le tri des données est effectué au niveau de la base de données. Dans ce cas, l’argument list
doit pointer vers l’une des sources de données Gestion des états électroniques suivantes qui spécifie la source d’application pour laquelle une requête directe de base de données peut être établie :
- Source de données du type Enregistrements de la table
- Relation d’une source de données du type Enregistrements de la table
- Source de données du type Champ de calcul
Les arguments expression 1
et expression N
doivent pointer vers les champs d’une source de données Gestion des états électronique qui spécifie les champs pertinents de la source d’application pour laquelle une requête directe de base de données peut être également établie.
Si une requête de base de données directe ne peut pas être établie, une erreur de validation se produit dans le concepteur de modèle de mappage de gestion des états électroniques. Le message que vous recevez indique que l’expression ER qui inclut la fonction ORDERBY
ne peut pas être exécutée au moment de l’exécution.
Pour de meilleures performances, nous vous recommandons d’utiliser l’option Requete lorsque le tri est configuré pour les sources de données d’application susceptibles de contenir un grand nombre d’enregistrements (par exemple, pour les tables d’application transactionnelles).
Note
La fonction ORDEBY
elle-même ne peut pas être traduite en une requête directe de base de données. Par conséquent, une source de données de gestion des états électroniques qui contient cette fonction n’est pas interrogeable. Elle ne peut pas non plus être utilisée dans le cadre de fonctions de gestion des états électroniques telles que FILTER et ALLITEMSQUERY, où seules les sources de données interrogeables peuvent être utilisées.
Pour plus de détails, voir exemple 3 et exemple 4.
Comparabilité
Puisque le moteur de base de données SQL et le serveur d’applications Finance peuvent utiliser une valeur de classement différente pour un seul caractère, le résultat du tri de la même liste d’enregistrements peut différer lorsqu’un champ Chaîne est utilisé pour le tri. Pour plus d’informations, voir exemple 5.
Exemple 1 : exécution par défaut en mémoire
Si vous entrez une source de données DS de type Champ calculé, et qu’elle contient l’expression SPLIT ("C|B|A", "|")
, l’expression FIRST( ORDERBY( DS, DS. Value)).Value
renvoie la valeur de texte « A ».
Exemple 2 : exécution explicite en mémoire
Si Fournisseur est configuré comme source de données d’états électroniques de type Enregistrements de table qui fait référence à la table VendTable, l’expression ORDERBY (Vendor, Vendor.'name()')
et l’expression ORDERBY ("InMemory", Vendor, Vendor.'name()')
renvoient une liste de fournisseurs qui est triée par nom dans l’ordre croissant.
Lorsque vous configurez l’expression ORDERBY ("Query", Vendor, Vendor.'name()')
dans le concepteur de mappage du modèle de gestion des états électroniques, une erreur de validation se produit au moment de la conception, car le chemin Vendor.'name()'
fait référence à une méthode d’application dont la logique ne peut pas être traduite en une requête de base de données directe.
Exemple 3 : requête de base de données
Si TaxTransaction est configuré comme une source de données de gestion des états électroniques de type Enregistrements de table qui fait référence à la table TaxTrans, l’expression ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode)
trie les enregistrements au niveau de la base de données de l’application et renvoie une liste des transactions fiscales qui est triée par code fiscal dans l’ordre croissant.
Exemple 4 : Sources de données interrogeables
Si TaxTransaction est configuré comme source de données de gestion des états électroniques de type Enregistrements de table qui fait référence à la table TaxTrans, la source de données de gestion des états électroniques TaxTransactionFiltered peut être configurée de sorte qu’elle contienne l’expression FILTER(TaxTransaction, TaxCode="VAT19")
qui récupérera les transactions pour un code fiscal spécifié. Parce que la source de données de gestion des états électroniques configurée TaxTransactionFiltered est interrogeable, l’expression ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate)
peut être configurée pour renvoyer la liste des transactions fiscales filtrées qui est triée par date de transaction dans l’ordre croissant.
Si vous configurez TaxTransactionOrdered en tant que source de données de gestion des états électroniques du type Champ calculé qui contient l’expression ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate)
et une source de données de gestion des états électroniques de type Champ calculé qui contient l’expression FILTER(TaxTransactionOrdered, TaxCode="VAT19")
, une erreur de validation se produit au moment de la conception dans le concepteur de mappage de modèle de gestion des états électroniques. Cette erreur se produit, car le premier argument de la fonction FILTER doit faire référence à une source de données de gestion des états électroniques interrogeable, mais la source de données TaxTransactionOrdered qui contient la fonction ORDERBY
n’est pas interrogeable.
Exemple 5 : Comparabilité
Conditions préalables
- Saisissez la source de données DS1 du type Champ calculé qui contient l’expression
SPLIT ("D1|_D2|D3", "|")
. - Ouvrez la page Valeurs des dimensions financières et sélectionnez la dimension CostCenter.
- Saisissez les valeurs de dimension suivantes : D1, _D2 et D3.
Tri en mémoire
- Configurez la source de données DS2 du type Champ calculé qui contient l’expression
ORDERBY("InMemory", DS1, DS1.Value)
. - Remarquez que l’expression
FIRST(DS2).Value
renvoie la valeur du texte « D1 », l’expressionINDEX(DS2, COUNT(DS2)).Value
renvoie la valeur du texte « D2 », et l’expressionSTRINGJOIN(DS2, DS2.Value, "|")
renvoie la valeur du texte « D1D3D2 ».
Tri dans la base de données
- Saisissez la source de données DS3 du type Enregistrements de la table qui fait référence à l’entité FinancialDimensionValueEntity.
- Configurez la source de données DS4 du type Champ calculé qui contient l’expression
FILTER(DS3, DS3.FinancialDimension="CostCenter")
. - Configurez la source de données DS5 du type Champ calculé qui contient l’expression
ORDERBY(DS4, DS4.DimensionValue)
. - Remarquez que l’expression
FIRST(DS5).Value
renvoie la valeur du texte « _D2 », l’expressionINDEX(DS5, COUNT(DS5)).Value
renvoie la valeur du texte « D3 », et l’expressionSTRINGJOIN(DS5, DS5.Value, "|")
renvoie la valeur du texte « _D2|D1|D3 ».