ER-funktionen ORDERBY
Funktionen ORDERBY
returnerer den angivne liste som en Postliste-værdi, efter at den er sorteret i henhold til de angivne argumenter. Disse argumenter kan defineres som udtryk.
Syntaks 1
ORDERBY (list, expression 1[, expression 2, …, expression N])
Syntaks 2
ORDERBY (location, list, expression 1[, expression 2, …, expression N])
Bemærk!
Denne syntaks understøttes i Microsoft Dynamics 365 Finance version 10.0.25 og nyere.
Argumenter
location
: Streng
Den placering, hvor sorteringen skal køres. Der findes følgende gyldige indstillinger:
- "Query"
- "InMemory"
list
: Postliste
Den gyldige sti til en datakilde af datatypen Postliste.
expression 1
: Felt
Den gyldige sti til et felt i datakilden, som list
-argumentet for den kaldte funktion refererer til. Det felt, der refereres til, skal være et felt af den primitive datatype. Dette argument skal udfyldes.
expression N
: Felt
Den gyldige sti til et felt i datakilden, som list
-argumentet for den kaldte funktion refererer til. Det felt, der refereres til, skal være et felt af den primitive datatype. Disse yderligere argumenter er valgfrie.
Returnerede værdier
Liste over poster
Den resulterende liste over poster.
Bemærkninger til brug
Syntaks 1
Datasortering udføres altid i hukommelsen på programserveren. Du kan finde flere detaljer i eksempel 1.
Syntaks 2
Sortering i hukommelsen
Når argumentet location
angives som InMemory, udføres datasortering i hukommelsen på en programserver. Du kan finde flere detaljer i eksempel 2.
Sortering i database
Når argumentet location
angives som Query, udføres datasortering på databaseniveau. I dette tilfælde skal argumentet list
pege på en af følgende datakilder for elektronisk rapportering (ER), der angiver den programkilde, som en direkte databaseforespørgsel kan oprettes for:
- Datakilde af typen Tabelposter
- Relation af en datakilde af typen Tabelposter
- Datakilde af typen Beregnet felt
Argumenterne expression 1
og expression N
skal pege på felter for en ER-datakilde, der angiver de relevante felter i programkilden, som en direkte databaseforespørgsel også kan oprettes for.
Hvis der ikke kan oprettes en direkte databaseforespørgsel, opstår der en valideringsfejl i ER-modeltilknytningsdesigneren. Den meddelelse, du modtager, angiver, at det ER-udtryk, der inkluderer ORDERBY
-funktionen, ikke kan køres på kørselstidspunktet.
Hvis du vil opnå en bedre ydeevne, anbefales det, at du bruger indstillingen Query, når sorteringen konfigureres for programdatakilder, der kan indeholde det store antal poster (f.eks. til tabeller i transaktionsapplikationer).
Bemærk!
Selve ORDEBY
-funktionen kan ikke oversættes til en direkte databaseforespørgsel. Derfor kan der ikke forespørges på en ER-datakilde, der indeholder denne funktion. Det kan heller ikke bruges i området for ER-funktioner som FILTER og ALLITEMSQUERY, hvor der kun kan bruges datakilder, der kan forespørges.
Yderligere oplysninger finder du i eksempel 3 og eksempel 4.
Sammenlignelighed
Da SQL-databaseprogrammet og finansprogramserveren kan bruge en anden rangeringsværdi for et enkelt tegn, kan sorteringsresultatet af samme postliste variere, når et strengfelt bruges til sortering. Du kan finde flere detaljer i eksempel 5.
Eksempel 1: Standardudførelse i hukommelsen
Hvis du indtaster datakilden DS af typen Beregnet felt, og den indeholder udtrykket SPLIT ("C|B|A", "|")
, returnerer udtrykket FIRST( ORDERBY( DS, DS. Value)).Value
tekstværdien "A".
Eksempel 2: Eksplicit udførelse i hukommelsen
Hvis Vendor er konfigureret som en datakilde af typen Tabelposter, der henviser til tabellen VendTable, vil både udtrykket ORDERBY (Vendor, Vendor.'name()')
og ORDERBY ("InMemory", Vendor, Vendor.'name()')
returnere en liste over leverandører, der er sorteret efter navn i stigende rækkefølge.
Når du konfigurerer udtrykket i ORDERBY ("Query", Vendor, Vendor.'name()')
i ER-modeltilknytningsdesigneren, opstår der en valideringsfejl på designtidspunktet, fordi stien Vendor.'name()'
refererer til en programmetode, der har logik, der ikke kan oversættes til en direkte databaseforespørgsel.
Eksempel 3: Databaseforespørgsel
Hvis TaxTransaction er konfigureret som en ER-datakilde af Tabelpost-typen, der henviser til tabellen TaxTrans, sorterer udtrykket ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode)
poster på programdatabaseniveau og returnerer en liste over momsposteringer, der er sorteret efter momskode i stigende rækkefølge.
Eksempel 4: Datakilder, der kan forespørges på
Hvis TaxTransaction er konfigureret som en ER-datakilde for Tabelpost-typen, der henviser til tabellen TaxTrans, kan ER-datakilden TaxTransactionFiltered konfigureres, så den indeholder udtrykket FILTER(TaxTransaction, TaxCode="VAT19")
, der skal hente posteringer for en angivet momskode. Da den konfigurerede TaxTransactionFiltered ER-datakilde kan forespørges, kan udtrykket ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate)
konfigureres til at returnere listen over filtrerede momsposteringer, der sorteres efter posteringsdato i stigende rækkefølge.
Hvis du konfigurerer TaxTransactionOrdered som en ER-datakilde af typen Beregnet felt, som indeholder udtrykket ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate)
, og en ER-datakilde af typen Beregnet felt, der indeholder udtrykket FILTER(TaxTransactionOrdered, TaxCode="VAT19")
, opstår der en valideringsfejl på designtidspunktet i ER-modeltilknytningsdesigneren. Denne fejl opstår, fordi det første argument for funktionen FILTER skal henvise til en ER-datakilde, der kan forespørges på, men den TaxTransactionOrdered-datakilde, der indeholder funktionen ORDERBY
, kan ikke forespørges.
Eksempel 5: Sammenlignelighed
Forudsætninger
- Angiv DS1-datakilde af typen Beregnet felt, der indeholder udtrykket
SPLIT ("D1|_D2|D3", "|")
. - Åbn siden Økonomiske dimensionsværdier, og vælg dimensionen CostCenter.
- Angiv følgende dimensionsværdier: D1, _D2 og D3.
Sortering i hukommelsen
- Konfigurer DS2-datakilde af typen Beregnet felt, der indeholder udtrykket
ORDERBY("InMemory", DS1, DS1.Value)
. - Bemærk, at udtrykket
FIRST(DS2).Value
returnerer tekstværdien "D1", udtrykketINDEX(DS2, COUNT(DS2)).Value
returnerer tekstværdien "_D2", og udtrykketSTRINGJOIN(DS2, DS2.Value, "|")
returnerer tekstværdien "D1|D3|_D2".
Sortering i database
- Angiv datakilden DS3 af typen Tabelposter, som refererer til enheden FinancialDimensionValueEntity.
- Konfigurer DS4-datakilde af typen Beregnet felt, der indeholder udtrykket
FILTER(DS3, DS3.FinancialDimension="CostCenter")
. - Konfigurer DS5-datakilde af typen Beregnet felt, der indeholder udtrykket
ORDERBY(DS4, DS4.DimensionValue)
. - Bemærk, at udtrykket
FIRST(DS5).Value
returnerer tekstværdien "_D2", udtrykketINDEX(DS5, COUNT(DS5)).Value
returnerer tekstværdien "D3", og udtrykketSTRINGJOIN(DS5, DS5.Value, "|")
returnerer tekstværdien "_D2|D1|D3".