De functies Sort en SortByColumns
Van toepassing op: Canvas-apps Bureaublad-stromen Modelgestuurde apps Power Pages Power Platform CLI
Deze functies sorteren een tabel.
Notitie
PAC CLI pac power-fx-opdrachten ondersteunen de SortByColumns functie niet.
Omschrijving
De functie Sort sorteert een tabel op basis van een formule.
De formule wordt geëvalueerd voor elke record van de tabel en de resultaten worden gebruikt om de tabel te sorteren. De formule moet resulteren in een getal, tekenreeks of booleaanse waarde. De formule kan niet resulteren in een tabel of record.
Velden van de momenteel verwerkte record zijn beschikbaar in de formule. Gebruik de operator ThisRecord of verwijs gewoon met de naam naar velden, zoals u dat ook bij andere waarden zou doen. De operator As kan ook worden gebruikt om een naam te geven aan de record die wordt verwerkt, wat kan helpen uw formule begrijpelijker te maken en geneste records toegankelijk te maken. Meer informatie vindt u in de voorbeelden hieronder en in werken met recordbereik.
Als u eerst op één kolom wilt sorteren en vervolgens op een andere, sluit u een Sort-formule in een andere formule in. U kunt bijvoorbeeld deze formule gebruiken om een tabel Contactpersonen eerst te sorteren op de kolom Achternaam en vervolgens op de kolom Voornaam: Sort( Sort( Contactpersonen, Achternaam ), Voornaam ).
De functie SortByColumns kan ook worden gebruikt om een tabel te sorteren die is gebaseerd op een of meer kolommen.
De lijst met parameters voor SortByColumns bevat de namen van de kolommen waarop u wilt sorteren en de sorteerrichting per kolom. Sorteren wordt uitgevoerd in de volgorde van de parameters (eerst gesorteerd op de eerste kolom, daarna op de tweede, enzovoort). Kolomnamen worden opgegeven als tekenreeksen, waarbij dubbele aanhalingstekens vereist zijn indien rechtstreeks opgenomen in de lijst met parameters. Bijvoorbeeld: SortByColumns( CustomerTable, "LastName" ).
U kunt SortByColumns combineren met een besturingselement Drop down of List box zodat gebruikers de kolom kunnen selecteren waarop zij willen sorteren.
Naast sorteren in oplopende of aflopende volgorde, kan SortByColumns sorteren op basis van een tabel met één kolom met waarden. U kunt bijvoorbeeld records sorteren op basis van de naam van een weekdag door [ "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag", "zondag" ] op te geven als sorteervolgorde. Alle records met maandag komen dan eerst, gevolgd door dinsdag, enzovoort. Gevonden records die niet in de sorteertabel worden weergegeven, worden aan het einde van de lijst geplaatst.
Tabellen zijn een waarde in Power Apps,.Net als een tekenreeks of getal. Ze kunnen worden doorgegeven aan en geretourneerd uit functies. Sort en SortByColumn wijzigen een tabel niet. In plaats daarvan nemen ze een tabel als argument en retourneren ze een nieuwe tabel die is gesorteerd. Zie werken met tabellen voor meer informatie.
Delegering
Indien mogelijk, draagt Power Apps de filter- en sorteerbewerkingen over aan de gegevensbron en worden de resultaten op aanvraag weergegeven. Als u bijvoorbeeld een app start die een Galerie-besturingselement weergeeft dat is gevuld met gegevens, wordt in eerste instantie alleen de eerste reeks records naar het apparaat overgebracht. Als de gebruiker verder scrolt, worden extra gegevens naar de gegevensbron overgebracht. Het resultaat is een snellere start voor de app en toegang tot zeer grote gegevenssets.
Het overdragen is echter niet altijd mogelijk. Gegevensbronnen ondersteunen verschillende functies en operators als het om overdragen gaat. Als een volledige overdracht van een formule niet mogelijk is, wordt in de auteursomgeving het aandeel dat niet kan worden overgebracht, gemarkeerd met een waarschuwing. U kunt eventueel de formule aanpassen om functies en operators te vermijden die niet kunnen worden overgedragen. De overdrachtlijst bevat details over de gegevensbronnen en bewerkingen die kunnen worden overgedragen.
Als overdracht niet mogelijk is, haalt Power Apps slechts een kleine set records op om lokaal te bewerken. De filter- en sorteerfuncties werken dan op een beperkte set records. In de Galerie zijn dan niet alle gegevens beschikbaar, wat verwarrend kan zijn voor de gebruikers.
Zie het overdrachtoverzicht voor meer informatie.
Syntaxis
Sorteren( Tabel, Formule [, Sorteervolgorde ] )
- Tabel - Verplicht. De tabel die u wilt sorteren.
- Formule - Verplicht. Deze formule wordt geëvalueerd voor elke record van de tabel en de resultaten worden gebruikt om de tabel te sorteren. U kunt verwijzen naar kolommen in de tabel.
- SortOrder - Optioneel. Geef SortOrder.Descending op om de tabel in aflopende volgorde te sorteren. SortOrder.Ascending is de standaardwaarde.
SorterenOpKolommen( Tabel, KolomNaam1 [, SorteerVolgorde1, KolomNaam2, SorteerVolgorde2, ... ] )
Tabel - Verplicht. De tabel die u wilt sorteren.
Kolomnamen - Verplicht. De namen van de kolommen waarop moet worden gesorteerd, als tekenreeksen.
SortOrders - Optioneel. Sorteervolgorde.Oplopend of Sorteervolgorde.Aflopend. SortOrder.Ascending is de standaard. Als meerdere Kolomnamen worden opgegeven, moeten alle kolommen behalve de laatste een Sorteervolgorde bevatten.
Notitie
Bij kolomnamen met spaties in SharePoint- en Excel-gegevensbronnen, moet u de spaties vervangen door "_x0020_". Geef 'Naam kolom' bijvoorbeeld op als 'Naam_x0020_kolom'.
SortByColumns( Tabel, Kolomnaam, SortOrderTabel )
Tabel - Verplicht. De tabel die u wilt sorteren.
Kolomnaam - Verplicht. De naam van de kolom waarop moet worden gesorteerd, als tekenreeksen.
SortOrderTable - Verplicht. Eén kolomtabel met waarden om op te sorteren.
Notitie
Bij kolomnamen met spaties in SharePoint- en Excel-gegevensbronnen, moet u de spaties vervangen door "_x0020_". Geef 'Naam kolom' bijvoorbeeld op als 'Naam_x0020_kolom'.
Voorbeelden
Voor de volgende voorbeelden gebruiken we de IceCream-gegevensbron, die de gegevens in deze tabel bevat:
Formule | Beschrijving | Resultaat |
---|---|---|
Sorteren(IJs, Smaak) SortByColumns(IJs, "Smaak") |
Sorteert IceCreamjes op de kolom Smaak. De kolom Smaak bevat tekenreeksen. Hierdoor wordt de tabel alfabetisch gesorteerd. Standaard wordt oplopend gesorteerd. | |
Sorteren(IJs, hoeveelheid) SortByColumns(IJs, "hoeveelheid") |
Sorteert IceCreamjes op de kolom Aantal. De kolom Aantal bevat getallen. Hierdoor wordt de tabel numeriek gesorteerd. Standaard wordt oplopend gesorteerd. | |
Sorteren(IJs, hoeveelheid, Sorteervolgorde.Aflopend) SortByColumns(IJs, "hoeveelheid", SortOrder.Descending) |
Sorteert IceCreamjes op de kolom Aantal. De kolom Aantal bevat getallen. De sortering verloopt dus numeriek. De sorteervolgorde is opgegeven als aflopend. | |
Sorteren(IJs, hoeveelheid + OpBestelling) | Sorteert IceCreamjes op de som van de kolommen Aantal en OpBestelling voor elke afzonderlijke record. De som is een getal. Hierdoor wordt de tabel numeriek gesorteerd. Standaard wordt oplopend gesorteerd. Omdat we op een formule sorteren en niet op onbewerkte kolomwaarden, is er geen equivalent waarin we SortByColumns kunnen gebruiken. | |
Sorteren( Sorteren( IJs, OpBestelling ), hoeveelheid ) SortByColumns(IJs, "Op volgorde", SortOrder.Ascending, "hoeveelheid", SortOrder.Ascending) |
Sorteert IceCreamjes eerst op de kolom OpBestelling en vervolgens op de kolom Aantal. Opmerking: "Pistache" was hoger vermeld dan "Vanille" bij de eerste sortering op basis van OpBestelling. Daarna verschoven beide waarden naar hun juiste plaats op basis van Aantal. | |
SortByColumns(IJs, "Smaak", [ "Pistache", "Aardbei" ] ) | Sorteert IceCreamjes op de kolom Smaak op basis van de tabel met één kolom die "Pistache" en "Aardbei" bevat. Records met een Smaak "Aardbei" wordt eerst weergegeven in het resultaat, gevolgd door records die "Pistache" bevatten. Waarden in de kolom Smaak zonder overeenkomst, zoals "Vanille", worden weergegeven na de items die wel een overeenkomst hebben. |
Stapsgewijs
Als u deze voorbeelden zelf wilt uitvoeren, maakt u de gegevensbron IceCreamjes als een verzameling:
- Voeg een knop toe en stel de bijbehorende eigenschap OnSelect in op deze formule:
ClearCollect(IJs, { Smaak: "Chocolade", hoeveelheid: 100, Op bestelling: 150 }, { Smaak: "Vanille", hoeveelheid: 200, Op bestelling: 20 }, { Smaak: "Aardbei", hoeveelheid: 300, Op bestelling: 0 }, { Smaak: "Muntchocolade", hoeveelheid: 60, Op bestelling: 100 }, { Smaak: "Pistache", hoeveelheid: 200, Op bestelling: 10 } ) - Bekijk een voorbeeld van de app, klik op de knop en druk op Esc om terug te keren naar de standaardwerkruimte.
- Selecteer Collections in het menu File om de verzameling weer te geven die u zojuist hebt gemaakt en druk op Esc om terug te keren naar de standaardwerkruimte.
Sort
Voeg een andere knop toe en stel de eigenschap OnSelect ervan in op deze formule:
ClearCollect(SorterenOpSmaak, Sorteren(IJs, Smaak))De vorige formule maakt een tweede verzameling, met de naam SorterenOpSmaak, die dezelfde gegevens als IJsjes bevat. De nieuwe verzameling bevat echter de gegevens die alfabetisch in oplopende volgorde gesorteerd zijn op de kolom Smaak.
Druk op F5, selecteer de nieuwe knop en druk op Esc.
Selecteer Collections in het menu File om beide verzamelingen weer te geven en druk op Esc om terug te keren naar de standaardwerkruimte.
Herhaal de laatste drie stappen, maar wijzig de naam van de verzameling die u wilt maken en vervang de formule Sort door een andere formule uit de tabel met voorbeelden eerder in deze sectie die gebruikmaakt van Sort.
SortByColumns
Voeg een andere knop toe en stel de eigenschap OnSelect ervan in op deze formule:
ClearCollect(SorterenOpAantal, SorterenOpKolom(IJs, "Aantal", Sorteervolgorde.Oplopend, "Smaak", Sorteervolgorde.Aflopend))De vorige formule maakt een derde verzameling, met de naam SorterenOpAantal, die dezelfde gegevens als IJsjes bevat. De nieuwe verzameling bevat echter de gegevens, numeriek gesorteerd op de kolom Aantal in oplopende volgorde en vervolgens op de kolom Smaak in aflopende volgorde.
Druk op F5, selecteer de nieuwe knop en druk op Esc.
Selecteer Collections in het menu File om alle drie verzamelingen weer te geven en druk op Esc om terug te keren naar de standaardwerkruimte.
Herhaal de laatste drie stappen, maar wijzig de naam van de verzameling die u wilt maken en vervang de formule SortByColumns door een andere formule uit de tabel met voorbeelden eerder in deze sectie die gebruikmaakt van SortByColumns.