Permet de trier une table.

Description

La fonction Sort permet de trier une table selon une formule.

La formule est évaluée pour chaque enregistrement de la table et les résultats sont utilisés pour trier la table. La formule doit avoir pour résultat un nombre, une chaîne ou une valeur booléenne ; elle ne peut pas produire une table ou un enregistrement.

Les champs de l’enregistrement en cours de traitement sont disponibles dans la formule. Vous y faites simplement référence par nom comme vous le feriez pour toute autre valeur. Vous pouvez également référencer les propriétés de contrôle et d’autres valeurs à partir de votre application. Pour plus d’informations, consultez les exemples ci-dessous et la section relative à l’utilisation des étendues d’enregistrement.

Pour trier une colonne, puis une autre, incorporez une formule Sort dans une autre. Par exemple, vous pouvez utiliser cette formule pour trier une table Contacts d’abord par une colonne LastName, puis par une colonne FirstName : Sort( Sort( Contacts, LastName ), FirstName )

La fonction SortByColumns peut également être utilisée pour trier une table selon une ou plusieurs colonnes.

La liste de paramètres SortByColumns fournit les noms des colonnes à trier et le sens du tri par colonne. Le tri est effectué dans l’ordre des paramètres (d’abord par la première colonne, puis la deuxième, etc.). Les noms de colonnes sont spécifiés sous forme de chaînes et des guillemets doubles sont requis en cas d’inclusion directement dans la liste de paramètres. Par exemple, SortByColumns( CustomerTable, "LastName" ).

Vous pouvez combiner SortByColumns avec un contrôle Liste déroulante ou Zone de liste pour permettre aux utilisateurs de sélectionner la colonne à trier.

En plus du tri croissant ou décroissant, SortByColumns permet d’effectuer un tri basé sur une table de valeurs à une seule colonne. Par exemple, vous pouvez trier les enregistrements en fonction du nom d’un jour de la semaine en indiquant [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] comme ordre de tri. Tous les enregistrements qui incluent Monday sont indiqués en premier, suivis de Tuesday et ainsi de suite. Les enregistrements qui n’apparaissent pas dans la table de tri sont placés à la fin de la liste.

Les tables sont une valeur dans PowerApps, comme une chaîne ou un chiffre. Elles peuvent être transmises et renvoyées par les fonctions. Les fonctions Sort et SortByColumn ne peuvent pas modifier une table ; au lieu de cela, elles prennent une table en tant qu’argument et renvoient une nouvelle table qui a été triée. Pour plus d’informations, voir Utilisation des tables.

Délégation

Lorsque cela est possible, PowerApps délègue les opérations de filtre et de tri à la source de données et parcourt les résultats à la demande. Par exemple, lorsque vous démarrez une application qui affiche un contrôle Gallery contenant des données, seul le premier jeu d’enregistrements s’affiche initialement sur l’appareil. À mesure que l’utilisateur fait défiler la page, des données supplémentaires s’affichent à partir de la source de données. Cela se traduit par un temps de démarrage plus rapide pour l’application, tout en permettant d’accéder à des jeux de données très volumineux.

La délégation n’est cependant pas toujours possible. Les opérateurs et les fonctions pris en charge avec la délégation varient selon les sources de données. Si la délégation complète d’une formule n’est pas possible, l’environnement de programmation marquera la partie qui ne peut pas être déléguée en y ajoutant un avertissement. Lorsque cela est possible, pensez à modifier la formule pour éviter les fonctions et les opérateurs qui ne peuvent pas être délégués. La liste des délégations détaille les sources de données et les opérations pouvant être déléguées.

Si la délégation n’est pas possible, PowerApps extrait seulement un petit jeu d’enregistrements sur lequel travailler en local. Les fonctions de filtre et de tri fonctionneront alors sur un ensemble réduit d’enregistrements. Les éléments disponibles dans la galerie ne sont peut-être pas exhaustifs, ce qui peut entraîner une confusion pour les utilisateurs.

Pour plus d’informations, consultez la vue d’ensemble de la délégation.

Syntaxe

Sort( Table, Formula [, SortOrder ] )

  • Table - Requis. Table à trier.
  • Formula - Requis. Cette formule est évaluée pour chaque enregistrement de la table et les résultats sont utilisés pour trier la table. Vous pouvez référencer des colonnes dans la table.
  • SortOrder - Facultatif. Spécifiez SortOrder.Descending pour trier la table dans l’ordre décroissant. SortOrder.Ascending est la valeur par défaut.

SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • Table - Requis. Table à trier.
  • ColumnName(s) - Requis. Noms de colonnes à trier en tant que chaînes.
  • SortOrder(s) - Facultatif. SortOrder.Ascending ou SortOrder.Descending. SortOrder.Ascending est la valeur par défaut. Si plusieurs ColumnNames sont fournis, toutes les colonnes sauf la dernière doivent inclure un ordre de tri (SortOrder).

    Remarque : pour des sources de données Excel ou SharePoint contenant des noms de colonne avec des espaces, spécifiez chacune d’elles sous la forme « _x0020_ ». Par exemple, spécifiez « Nom de colonne » sous la forme « Nom_x0020_de_x0020_colonne ».

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table - Requis. Table à trier.
  • ColumnName - Requis. Nom de colonne à trier en tant que chaînes.
  • SortOrderTable - Requis. Table de valeurs à une seule colonne à trier.

    Remarque : pour des sources de données Excel ou SharePoint contenant des noms de colonne avec des espaces, spécifiez chacune d’elles sous la forme « _x0020_ ». Par exemple, spécifiez « Nom de colonne » sous la forme « Nom_x0020_de_x0020_colonne ».

Exemples

Dans les exemples suivants, nous allons utiliser la source de données IceCream qui contient les données de cette table :

Formule Description Résultat
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
Trie IceCream par la colonne Flavor. La colonne Flavor contient des chaînes. La table est donc triée par ordre alphabétique. Par défaut, l’ordre de tri est croissant.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
Trie IceCream par la colonne Quantity. La colonne Quantity contient des nombres. La table est donc triée par ordre numérique. Par défaut, l’ordre de tri est croissant.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Trie IceCream par la colonne Quantity. La colonne Quantity contient des nombres. Le tri est donc numérique. L’ordre de tri a été spécifié comme décroissant.
Sort( IceCream, Quantity + OnOrder ) Trie IceCream par la somme de ses colonnes Quantity et OnOrder pour chaque enregistrement individuellement. La somme étant un nombre, la table est triée par ordre numérique. Par défaut, l’ordre de tri est croissant. Étant donné que nous trions avec une formule et non avec les valeurs de colonne brutes, il n’existe aucun équivalent à l’utilisation de SortByColumns.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )
Trie IceCream d’abord par la colonne OnOrder, puis par la colonne Quantity. Notez que « Pistachio » est passé au-dessus de « Vanilla » dans le premier tri basé sur OnOrder, puis les deux ont été déplacés vers l’emplacement approprié en fonction de la valeur de Quantity.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Trie IceCream par la colonne Flavor selon la table à une seule colonne contenant « Pistachio » et « Strawberry ». Les enregistrements qui ont le goût (Flavor) « Pistachio » apparaissent en premier dans le résultat, suivis des enregistrements qui contiennent « Strawberry » (Fraise). Les valeurs de la colonne Flavor qui ne correspondent pas, telles que « Vanilla », apparaissent après les éléments qui ont été mis en correspondance.

Étape par étape

Pour exécuter ces exemples vous-même, créez la source de données IceCream en tant que collection :

  1. Ajoutez un bouton, puis définissez sa propriété OnSelect sur la formule suivante :
    ClearCollect( IceCream, { Flavor: "Chocolate", Quantity: 100, OnOrder: 150 }, { Flavor: "Vanilla", Quantity: 200, OnOrder: 20 }, { Flavor: "Strawberry", Quantity: 300, OnOrder: 0 }, { Flavor: "Mint Chocolate", Quantity: 60, OnOrder: 100 }, { Flavor: "Pistachio", Quantity: 200, OnOrder: 10 } )

  2. Affichez un aperçu de l’application, sélectionnez le bouton, puis appuyez sur Échap pour revenir à l’espace de travail par défaut.

  3. Sélectionnez Collections dans le menu Fichier pour afficher la collection que vous venez de créer, puis appuyez sur Échap pour revenir à l’espace de travail par défaut.

Trier

  1. Ajoutez un autre bouton, puis définissez sa propriété OnSelect sur la formule suivante :
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    La formule précédente crée une deuxième collection, appelée SortByFlavor, qui contient les mêmes données que IceCream. Toutefois, la nouvelle collection contient les données triées par ordre alphabétique par la colonne Flavor dans l’ordre croissant.

  2. Appuyez sur F5, sélectionnez le nouveau bouton, puis appuyez sur Échap.

  3. Sélectionnez Collections dans le menu Fichier pour afficher les deux collections, puis appuyez sur Échap pour revenir à l’espace de travail par défaut.

  4. Répétez les trois dernières étapes, mais en modifiant le nom de la collection que vous souhaitez créer, puis remplacez la formule Sort par une autre formule issue du tableau d’exemples plus haut dans cette section qui utilise Sort.

SortByColumns

  1. Ajoutez un autre bouton, puis définissez sa propriété OnSelect sur la formule suivante :
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) )

    La formule précédente crée une troisième collection, appelée SortByQuantity, qui contient les mêmes données que IceCream. Toutefois, la nouvelle collection contient les données triées par ordre numérique par la colonne Quantity dans l’ordre croissant, puis par la colonne Flavor dans l’ordre décroissant.

  2. Appuyez sur F5, sélectionnez le nouveau bouton, puis appuyez sur Échap.

  3. Sélectionnez Collections dans le menu Fichier pour afficher les trois collections, puis appuyez sur Échap pour revenir à l’espace de travail par défaut.

  4. Répétez les trois dernières étapes, mais en modifiant le nom de la collection que vous souhaitez créer, puis remplacez la formule SortByColumns par une autre formule issue du tableau d’exemples plus haut dans cette section qui utilise SortByColumns.