Dela via


Funktionen ORDERBY ER

ORDERBY-funktionen returnerar den angivna listan som ett värde för postlista efter att den har sorterats enligt de angivna argumenten. Du kan definiera följande argument som uttryck.

Syntax 1

ORDERBY (list, expression 1[, expression 2, …, expression N])

Syntax 2

ORDERBY (location, list, expression 1[, expression 2, …, expression N])

Notering

Den här syntaxen stöds för Microsoft Dynamics 365 Finance version 10.0.25 och senare.

Argument

location: Sträng

Platsen där sorteringen ska köras. Följande alternativ är giltig:

  • "Fråga"
  • "InMemory"

list: Post-lista

Den giltiga sökvägen av en datakälla för datatypen Postlista.

expression 1: Fält

Den giltiga sökvägen för ett fält i datakällan som refereras av list-argumentet för den anropade funktionen. Det refererade fältet måste vara ett fält av den primitiva datatypen. Detta argument krävs.

expression N: Fält

Den giltiga sökvägen för ett fält i datakällan som refereras av list-argumentet för den anropade funktionen. Det refererade fältet måste vara ett fält av den primitiva datatypen. Dessa ytterligare argument är valfria.

Returvärden

Postlista

Den resulterande listan med poster.

Användningsanteckningar

Syntax 1

Datasortering sker alltid i programserverns minne. Mer information finns i exempel 1.

Syntax 2

Sortera i minne

När argumentet location anges som InMemory görs datasortering i en programservers minne. Mer information finns i exempel 2.

Sortera i databas

När argumenten location anges som Fråga utförs datasortering på databasnivå. I det här fallet list måste argumentet peka på en av följande datakällor för elektronisk rapportering (ER) som anger programkällan som en direkt databasfråga kan skapas för:

  • Datakällan In för typen tabellposter
  • Relationen till en datakälla för tabellposter
  • Datakälla av typen Beräknat fält

Argumenten expression 1 och expression N måste peka på en av följande ER-datakällor för som anger relevanta fält för programkällan som en direkt databasfråga också kan skapas för.

Om det inte går att upprätta en direkt databasfråga, uppstår ett valideringsfel i ER-modellmappningsdesignern. Meddelandet som du tar emot anger att ER-uttrycket som innehåller ORDERBY-funktionen inte kan köras under körning.

Vi rekommenderar att du använder alternativet Fråga när sorteringen är konfigurerad för programdatakällor som kan innehålla det stora antalet poster (till exempel för transaktionsprogramregister).

Notering

Själva ORDEBY funktionen kan inte översättas till en direkt databasfråga. Därför är en ER-datakälla som innehåller den här funktionen inte frågebar. Den kan inte heller användas inom ER-funktionernas område, t.ex. FILTER och ALLITEMSQUERY, där endast frågebara datakällor kan användas.

Mer information finns i exempel 3 och exempel 4.

Jämförbarhet

Eftersom SQL-databasmotorn och Ekonomi-appservern kan använda ett annat rankningsvärde för ett enskilt tecken, kan sorteringsresultatet för samma lista med poster skilja sig när fältet Sträng används för sortering. Mer information finns i exempel 5.

Exempel 1: Standardkörningen för inminnet

Om du anger datakällans DS av typen Beräknat fält och den innehåller uttrycket SPLIT ("C|B|A", "|"), kommer uttrycket FIRST( ORDERBY( DS, DS. Value)).Value att returnera textvärdet "A".

Exempel 2: Explicit körning för inminnet

Om Leverantör konfigureras som en ER-datakälla av typen Tabellposter som refererar till tabellen VendTable kommer både uttrycket ORDERBY (Vendor, Vendor.'name()') och uttrycket ORDERBY ("InMemory", Vendor, Vendor.'name()') returnera en lista med leverantörerna sorterade efter namn i stigen ordning.

När du konfigurerar uttrycket ORDERBY ("Query", Vendor, Vendor.'name()') i ER-modellmappningsdesignern inträffar ett valideringsfel vid designtiden, eftersom sökvägen Vendor.'name()' refererar till en programmetod som har logik som inte kan översättas till en direkt databasfråga.

Exempel 3: databasfråga

Om TaxTransaction har konfigurerats som en ER-datakälla av typen Tabellposter som refererar till tabellen TaxTrans sorterar uttrycket ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode) poster på appdatabasnvå och returnerar en lista över momskod i stigande ordning.

Exempel 4: frågningsbara datakällor

Om TaxTransaction har konfigurerats som en ER-datakälla av typen Tabellposter som refererar till tabellen TaxTrans kan ER-datakällan TaxTransactionFiltered konfigureras så att den innehåller uttrycket FILTER(TaxTransaction, TaxCode="VAT19") som hämtar transaktioner för en specificerad momskod. Eftersom den konfigurerade TaxTransactionFiltered ER-datakällan kan frågas, kan uttrycket ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate) konfigureras att returnera listan med filtrerade momstransaktioner sorterade efter transaktionsdatum i stigande ordning.

Om du konfigurerar TaxTransactionOrdered som en ER-datakälla för den beräknade fälttypen som innehåller uttrycket ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate) och en ER-datakälla för typen beräknade fält som innehåller uttrycket FILTER(TaxTransactionOrdered, TaxCode="VAT19") inträffar ett valideringsfel vid designtiden i ER-modellmappningsdesignern. Detta fel inträffar eftersom det första argumentet för funktionen FILTER måste hänvisa till en frågebar ER-datakälla, men datakällan TaxTransactionOrdered som innehåller funktionen ORDERBY kan inte frågas.

Exempel 5: Kontinuitet

Förutsättningar

  1. Ange DS1-datakälla av typen beräknat fält som innehåller uttrycket SPLIT ("D1|_D2|D3", "|").
  2. Öppna sidan Värden för ekonomisk dimension och välj dimension CostCenter.
  3. Ange följande dimensionsvärden: D1, ‑D2 och D3.

Sortera i minne

  1. Konfigurera datakälla DS2-datakälla av typen beräknat fält som innehåller uttrycket ORDERBY("InMemory", DS1, DS1.Value)
  2. Lägg märke till att uttrycket FIRST(DS2).Value returnerar textvärdet "D1", uttrycket INDEX(DS2, COUNT(DS2)).Value returnerar textvärdet "_D2" och uttrycket STRINGJOIN(DS2, DS2.Value, "|") returnerar textvärdet "D1|D3|_D2".

Sortera i databas

  1. Ange datakälla DS3 av typen Tabellregister som refererar till entiteten FinancialDimensionValueEntity.
  2. Konfigurera datakälla DS4-datakälla av typen beräknat fält som innehåller uttrycket FILTER(DS3, DS3.FinancialDimension="CostCenter")
  3. Konfigurera datakälla DS5-datakälla av typen beräknat fält som innehåller uttrycket ORDERBY(DS4, DS4.DimensionValue)
  4. Lägg märke till att uttrycket FIRST(DS5).Value returnerar textvärdet "_D2", uttrycket INDEX(DS5, COUNT(DS5)).Value returnerar textvärdet "D3" och uttrycket STRINGJOIN(DS5, DS5.Value, "|") returnerar textvärdet "_D2|D1|D3".

Ytterligare resurser

Lista över funktioner