Sorterar en tabell.

Beskrivning

Funktionen Sort sorterar en tabell utifrån en formel.

Formeln utvärderas för varje post i tabellen, och resultaten används för att sortera tabellen. Formeln måste resultera i ett tal, en sträng eller ett booleskt värde. Den kan inte resultera i en tabell eller en post.

Fält i en aktuella posten är tillgängliga i formeln. Du bara referera till dem med deras namn, precis som ett annat värde. Du kan också referera till kontrollegenskaper och andra värden i hela din app. Mer information finns i exemplen nedan och arbeta med postomfång.

Om du vill sortera efter en viss kolumn först och sedan efter en annan, bäddar du in en Sort-formler i varandra. Du kan t.ex. använda den här formeln för att sortera en Contacts-tabell, först efter kolumnen LastName och sedan efter kolumnen FirstName: Sort (Sort (Contacts, LastName), FirstName)

Du kan även använda funktionen SortByColumns om du vill sortera en tabell utifrån en eller flera kolumner.

Parameterlistan för SortByColumns innehåller namnen på de kolumner som du vill sortera efter och sorteringsordningen per kolumn. Sorteringen genomförs i den ordning som parametrarna ligger (först efter den första kolumnen, sedan efter den andra osv). Kolumnnamnen anges som strängar, och kräver dubbla citattecken om ed inkluderas direkt i parameterlistan. Exempel: SortByColumns (CustomerTable, "LastName").

Du kan kombinera SortByColumns med en nedrullningsbar listruta eller vanlig listruta så att användarna kan välja vilken kolumn de ska sortera efter.

Förutom att sortera i stigande eller fallande ordning kan SortByColumns sortera efter en enkolumnstabell med värden. Du kan t.ex. göra en postbaserad sortering efter veckodagarnas namn genom att ange ["måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag", "söndag"] som sorteringsordning. Alla poster som innehåller måndag kommer först, därefter tisdag osv. Poster som inte förekommer i sorteringstabellen placeras i slutet av listan.

Tables är ett värde i PowerApps, precis som en sträng eller en siffra. De kan skickas till och returneras från funktioner. Sort och SortByColumn ändrar inte en tabell, utan använder istället tabellen som ett argument och returnerar en ny tabell som har sorterats. Mer information finns i Arbeta med tabeller.

Delegering

När så är möjligt, delegerar PowerApps filter och sortering till datakällan och bläddrar igenom resultaten på begäran. När du till exempel startar en app som visar en gallerikontroll fylld med data, kommer bara den första uppsättningen poster inledningsvis att föras till enheten. När användaren rullar sidan hämtas ytterligare data ned från datakällan. Resultatet är snabbare starttid för appen och åtkomst till mycket stora datauppsättningar.

Dock är det kanske inte alltid möjligt att delegera. Datakällor varierar i förhållande till vilka funktioner och operatörer som de stödjer med delegering. Om fullständig delegering av en formel inte är möjligt, kommer utvecklingsmiljön att flagga den del som inte kan delegeras med en varning. Om möjligt bör du överväga att ändra formeln för att undvika funktioner och operatörer som inte kan delegeras. I delegeringslistan redovisas vilka datakällor och åtgärder som kan delegeras.

Om delegering inte är möjligt, drar PowerApps endast ned en liten uppsättning poster som den arbetar på lokalt. Filtrerings- och sorteringsfunktioner fungerar på en reducerad uppsättning poster. Det som är tillgängligt i galleriet kanske inte är hela uppsättningen, vilket kan vara förvirrande för användarna.

Mer information finns i Översikt över delegering.

Syntax

Sort (Table, Formula [, SortOrder])

  • Table – obligatoriskt. Tabell som ska sorteras.
  • Formula – obligatoriskt. Den här formeln utvärderas för varje post i tabellen, och resultaten används för att sortera tabellen. Du kan referera till kolumner i tabellen.
  • SortOrder – valfritt. Ange SortOrder.Descending om du vill sortera tabellen i fallande ordning. SortOrder.Ascending är standard.

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

  • Table – obligatoriskt. Tabell som ska sorteras.
  • ColumnName(s) – obligatoriskt. De kolumnnamn som sorteringen ska baseras på, som strängar.
  • SortOrder(s) – valfritt. SortOrder.Ascending eller SortOrder.Descending. SortOrder.Ascending är standard. Om flera ColumnNames tillhandahålls måste alla kolumner utom den sista inkludera SortOrder.

    Obs! För SharePoint- och Excel-datakällor som innehåller kolumnnamn med blanksteg, anges varje utrymme som ”_x0020_”. Ange till exempel "Kolumnens namn" som "Kolumnens_x0020_namn".

SortByColumns (Table, ColumnName, SortOrderTable)

  • Table – obligatoriskt. Tabell som ska sorteras.
  • ColumnName – obligatoriskt. Det kolumnnamn som sorteringen ska baseras på, som strängar.
  • SortOrderTable – obligatoriskt. Enkolumnstabell med värden att sortera efter.

    Obs! För SharePoint- och Excel-datakällor som innehåller kolumnnamn med blanksteg, anges varje utrymme som ”_x0020_”. Ange till exempel "Kolumnens namn" som "Kolumnens_x0020_namn".

Exempel

I följande exempel använder vi datakällan IceCream, vilken innehåller de data som visas i den här tabellen:

Formel Beskrivning Resultat
Sort (IceCream, Smak)

SortByColumns (IceCream, "Smak")
Sorterar IceCream efter kolumnen Smak. Kolumnen Smak innehåller strängar, så tabellen sorteras alfabetiskt. Sorteringsordningen är stigande som standard.
Sort (IceCream, Quantity)

SortByColumns (IceCream, "Kvantitet")
Sorterar IceCream efter kolumnen Kvantitet. Kolumnen Kvantitet innehåller tal, så tabellen sorteras numeriskt. Sorteringsordningen är stigande som standard.
Sort (IceCream, Kvantitet, SortOrder.Descending)

SortByColumns (IceCream, "Kvantitet", SortOrder.Descending)
Sorterar IceCream efter kolumnen Kvantitet. Kolumnen Kvantitet innehåller tal, så sorteringen är numerisk. Sorteringsordningen har angetts som fallande.
Sort (IceCream, Kvantitet + OnOrder) Sorterar IceCream efter summan i kolumnerna Kvantitet och OnOrder för varje enskild post. Summan är ett tal, så tabellen sorteras numeriskt. Sorteringsordningen är stigande som standard. Eftersom vi sorterar efter en formel och inte kolumnernas rådata så finns det ingen motsvarighet till SortByColumns.
Sort (Sort (IceCream, OnOrder), Kvantitet)

SortByColumns (IceCream, "OnOrder", Ascending, "Kvantitet", Ascending)
Sorterar först IceCream efter kolumnen OnOrder och sedan efter kolumnen Kvantitet. Observera att "Pistaschmandel" hamnade före "Vanilj" i den första sorteringen, som utgick från OnOrder, varefter de fick sin slutliga plats utifrån Kvantitet.
SortByColumns (IceCream, "Smak", [ "Pistaschmandel", "Jordgubb" ]) Sorterar IceCream efter kolumnen Smak baserat på den enkolumnstabell som innehåller "Pistaschmandel" och "Jordgubb". Poster där Smak har värdet "Pistaschmandel" visas först i resultatet, följt av poster som innehåller "Jordgubb". När det gäller värden i kolumnen Smak som saknar matchning, t.ex. "Vanilj", så visas de efter de objekt som kunde matchas.

Steg för steg

Om du vill köra dessa exempel själv skapar du datakällan IceCream som en samling:

  1. Lägg till en knapp och ge dess egenskap OnSelect egenskapen följande formel:
    ClearCollect (IceCream, {Smak: "Choklad", Kvantitet: 100, OnOrder: 150 }, {Smak: "Vanilj", Kvantitet: 200, OnOrder: 20 }, {Smak: "Jordgubb", Kvantitet: 300, OnOrder: 0 }, {Smak: "Mintchoklad", Kvantitet: 60, OnOrder: 100 }, {Smak: "Pistaschmandel", Kvantitet: 200, OnOrder: 10})

  2. Förhandsgranska appen, välj knappen och återgå sedan till standardarbetsytan genom att trycka på Esc.

  3. Om du vill visa den samling som du just har skapat väljer du SamlingarArkiv-menyn och återgår sedan till standardarbetsytan genom att trycka på Esc.

Sortera

  1. Lägg till en knapp och ge dess OnSelect-egenskap följande formel:
    ClearCollect (SortByFlavor, Sort (IceCream, Smak))

    Den föregående formeln skapar en andra samling, med namnet SortByFlavor, som innehåller samma data som Ice Cream. Den nya samlingen innehåller dock data som sorterats alfabetiskt i stigande ordning efter kolumnen Smak.

  2. Tryck på F5, välj den nya knappen och tryck på Esc.

  3. Om du vill visa båda samlingarna väljer du SamlingarArkiv-menyn och återgår sedan till standardarbetsytan genom att trycka på Esc.

  4. Upprepa de senaste tre stegen, men ändra namnet på den samling som du vill skapa och ersätt formeln Sort formel med en annan formel från tabellen med exempel tidigare i det här avsnittet där Sort används.

SortByColumns

  1. Lägg till en knapp och ge dess OnSelect-egenskap följande formel:
    ClearCollect (SortByQuantity, SortByColumns (IceCream, "Kvantitet", Ascending, "Smak", Descending))

    Den föregående formeln skapar en tredje samling, med namnet SortByQuantity, som innehåller samma data som Ice Cream. Den nya samlingen innehåller dock data som sorterats numeriskt i stigande ordning efter kolumnen Kvantitet och sedan i fallande ordning efter kolumnen Smak.

  2. Tryck på F5, välj den nya knappen och tryck på Esc.

  3. Om du vill visa alla tre samlingarna väljer du SamlingarArkiv-menyn och återgår sedan till standardarbetsytan genom att trycka på Esc.

  4. Upprepa de senaste tre stegen, men ändra namnet på den samling som du vill skapa och ersätt formeln SortByColumns formel med en annan formel från tabellen med exempel tidigare i det här avsnittet där SortByColumns används.