Del via


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

  1. Angiv DS1-datakilde af typen Beregnet felt, der indeholder udtrykket SPLIT ("D1|_D2|D3", "|").
  2. Åbn siden Økonomiske dimensionsværdier, og vælg dimensionen CostCenter.
  3. Angiv følgende dimensionsværdier: D1, _D2 og D3.

Sortering i hukommelsen

  1. Konfigurer DS2-datakilde af typen Beregnet felt, der indeholder udtrykket ORDERBY("InMemory", DS1, DS1.Value).
  2. Bemærk, at udtrykket FIRST(DS2).Value returnerer tekstværdien "D1", udtrykket INDEX(DS2, COUNT(DS2)).Value returnerer tekstværdien "_D2", og udtrykket STRINGJOIN(DS2, DS2.Value, "|") returnerer tekstværdien "D1|D3|_D2".

Sortering i database

  1. Angiv datakilden DS3 af typen Tabelposter, som refererer til enheden FinancialDimensionValueEntity.
  2. Konfigurer DS4-datakilde af typen Beregnet felt, der indeholder udtrykket FILTER(DS3, DS3.FinancialDimension="CostCenter").
  3. Konfigurer DS5-datakilde af typen Beregnet felt, der indeholder udtrykket ORDERBY(DS4, DS4.DimensionValue).
  4. Bemærk, at udtrykket FIRST(DS5).Value returnerer tekstværdien "_D2", udtrykket INDEX(DS5, COUNT(DS5)).Value returnerer tekstværdien "D3", og udtrykket STRINGJOIN(DS5, DS5.Value, "|") returnerer tekstværdien "_D2|D1|D3".

Yderligere ressourcer

Listefunktioner