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
- Ange DS1-datakälla av typen beräknat fält som innehåller uttrycket
SPLIT ("D1|_D2|D3", "|")
. - Öppna sidan Värden för ekonomisk dimension och välj dimension CostCenter.
- Ange följande dimensionsvärden: D1, ‑D2 och D3.
Sortera i minne
- Konfigurera datakälla DS2-datakälla av typen beräknat fält som innehåller uttrycket
ORDERBY("InMemory", DS1, DS1.Value)
- Lägg märke till att uttrycket
FIRST(DS2).Value
returnerar textvärdet "D1", uttrycketINDEX(DS2, COUNT(DS2)).Value
returnerar textvärdet "_D2" och uttrycketSTRINGJOIN(DS2, DS2.Value, "|")
returnerar textvärdet "D1|D3|_D2".
Sortera i databas
- Ange datakälla DS3 av typen Tabellregister som refererar till entiteten FinancialDimensionValueEntity.
- Konfigurera datakälla DS4-datakälla av typen beräknat fält som innehåller uttrycket
FILTER(DS3, DS3.FinancialDimension="CostCenter")
- Konfigurera datakälla DS5-datakälla av typen beräknat fält som innehåller uttrycket
ORDERBY(DS4, DS4.DimensionValue)
- Lägg märke till att uttrycket
FIRST(DS5).Value
returnerar textvärdet "_D2", uttrycketINDEX(DS5, COUNT(DS5)).Value
returnerar textvärdet "D3" och uttrycketSTRINGJOIN(DS5, DS5.Value, "|")
returnerar textvärdet "_D2|D1|D3".