Del via


ORDERBY ER-funksjonen

ORDERBY-funksjonen returnerer den angitte listen som en postliste-verdi etter at den er sortert i henhold til de angitte argumentene. Disse argumentene kan defineres som uttrykk.

Syntaks 1

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

Syntaks 2

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

Notat

Denne syntaksen støttes for Microsoft Dynamics 365 Finance versjon 10.0.25 og senere.

Argumenter

location: Streng

Plasseringen der sorteringen skal kjøres. Følgende alternativer er gyldige:

  • "Query"
  • "InMemory"

list: Postliste

Den gyldige banen til en datakilde av Postliste-datatypen.

expression 1: Felt

Den gyldige banen til et felt i datakilden som list-argumentet for den kalte funksjonen refererer til. Det refererte feltet må være et felt av den primitive datatypen. Dette argumentet er obligatorisk.

expression N: Felt

Den gyldige banen til et felt i datakilden som list-argumentet for den kalte funksjonen refererer til. Det refererte feltet må være et felt av den primitive datatypen. Disse tilleggsargumentene er valgfrie.

Returverdier

Postliste

Den resulterende listen over oppføringer.

Bruksnotater

Syntaks 1

Datasortering utføres alltid i minnet til appserveren. Hvis du vil ha mer informasjon, kan du se eksempel 1.

Syntaks 2

Sortere i minne

Når location-argumentet er angitt som InMemory, utføres datasortering i minnet til en appserver. Hvis du vil ha mer informasjon, kan du se eksempel 2.

Sortere i database

Når location-argumentetet angitt som Query, utføres datasortering på databasenivå. I dette tilfellet må list-argumentet peke til en av følgende ER-datakilder (Electronic Reporting) som angir appkilden som det kan opprettes en direkte databasespørring for:

  • En datakilde av Tabellposter-typen
  • Relasjon av en datakilde av Tabellposter-typen
  • En datakilde av typen Beregnet felt

Argumentene expression 1 og expression N må peke til felter for en ER-datakilde som angir de relevante feltene for appkilden som en direkte databasespøring også kan etableres for.

Hvis en direkte databasespørring ikke kan opprettes, oppstår det en valideringsfeil i ER-modelltilordningsutformingen. Meldingen du mottar, sier at ER-uttrykket som inneholder funksjonen ORDERBY, ikke kan kjøres under kjøring.

For bedre ytelse anbefaler vi at du bruker Query-alternativet når sorteringen er konfigurert for appdatakilder som kan inneholde et stort antall poster (for eksempel apptabeller for transaksjoner).

Notat

Selve ORDEBY-funksjonen kan ikke oversettes til en direkte databasespørring. Derfor er det ikke mulig å kjøre spørringer mot en ER-datakilde som inneholder denne funksjonen. Den kan heller ikke brukes når det gjelder ER-funksjoner , for eksempel FILTER og ALLITEMSQUERY, der bare datakilder som kan spørres, kan brukes.

Hvis du vil ha mer informasjon , kan du se eksempel 3 og eksempel 4.

Sammenlignbarhet

Siden SQL Database-motoren og Finance-appserveren kan bruke en annen rangeringsverdi for ett enkelt tegn, kan sorteringsresultatet for den samme listen over poster være forskjellig når et Streng-felt brukes til sortering. Hvis du vil ha mer informasjon, kan du se eksempel 5.

Eksempel 1: Standardkjøring i minnet

Hvis du angir datakilde DS av Beregnet felt-typen, og den inneholder uttrykket SPLIT ("C|B|A", "|"), genererer uttrykket FIRST( ORDERBY( DS, DS. Value)).Value tekstverdien "A".

Eksempel 2: Eksplisitt kjøring i minnet

Hvis Leverandør er konfigurert som en ER-datakilde av Tabellposter-typen som refererer til VendTable-tabellen, returnerer både uttrykket ORDERBY (Vendor, Vendor.'name()') og uttrykket ORDERBY ("InMemory", Vendor, Vendor.'name()') en liste over leverandører sortert etter navn i stigende rekkefølge.

Når du konfigurerer uttrykket ORDERBY ("Query", Vendor, Vendor.'name()') i ER-utformingen av modelltilordningen, oppstår det en valideringsfeil ved utformingstidspunktet fordi Vendor.'name()'-banen refererer til en appmetode som har logikk som ikke kan oversettes til en direkte databasespørring.

Eksempel 3: Databasespørring

Hvis TaxTransaction er konfigurert som en ER-datakilde av Tabellpost-typen som refererer til TaxTrans-tabellen, sorterer uttrykket ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode) poster på appdatabasenivået og returnerer en liste over avgiftstransaksjoner som er sortert etter avgiftskode i stigende rekkefølge.

Eksempel 4: Datakilder som kan spørres

Hvis TaxTransaction er konfigurert som en ER-datakilde for Tabellposter-typen som refererer til TaxTrans-tabellen, kan ER-datakilden TaxTransactionFiltered konfigureres slik at den inneholder uttrykket FILTER(TaxTransaction, TaxCode="VAT19"), som vil hente transaksjoner for en angitt avgiftskode. Fordi den konfigurerte ER-datakilden TaxTransactionFiltered kan spørres, kan uttrykket ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate) konfigureres til å returnere listen over filtrerte avgiftstransaksjoner som er sortert etter transaksjonsdato i stigende rekkefølge.

Hvis du konfigurerer TaxTransactionOrdered som en ER-datakilde av typen Beregnet felt som inneholder uttrykket ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate), og en ER-datakilde av typen Beregnet felt som inneholder uttrykket FILTER(TaxTransactionOrdered, TaxCode="VAT19"), oppstår det en valideringsfeil ved utformingstidspunktet i ER-utformingen av modelltilordningen. Denne feilen oppstår fordi det første argumentet til FILTER-funksjonen må refererer til en ER-datakilde som kan spørres, men TaxTransactionOrdered-datakilden som inneholder ORDERBY-funksjonen, kan ikke spørres.

Eksempel 5: Sammenlignbarhet

Forutsetninger

  1. Angi DS1-datakilden av Beregnet felt-typen som inneholder uttrykket SPLIT ("D1|_D2|D3", "|")
  2. Åpne siden Finansdimensjonsverdier, og velg CostCenter-dimensjonen.
  3. Angi følgende dimensjonsverdier: D1, ‑D2 og D3.

Sortere i minne

  1. Konfigurer DS2-datakilden av Beregnet felt-typen som inneholder uttrykket ORDERBY("InMemory", DS1, DS1.Value)
  2. Legg merke til at uttrykket FIRST(DS2).Value returnerer tekstverdien "D1", uttrykket INDEX(DS2, COUNT(DS2)).Value returnerer tekstverdien "_D2", og uttrykket STRINGJOIN(DS2, DS2.Value, "|") returnerer tekstverdien "D1|D3|_D2".

Sortere i database

  1. Angi DS3-datakilden av Tabellposter-typen som refererer til FinancialDimensionValueEntity-enheten.
  2. Konfigurer DS4-datakilden av Beregnet felt-typen som inneholder uttrykket FILTER(DS3, DS3.FinancialDimension="CostCenter")
  3. Konfigurer DS5-datakilden av Beregnet felt-typen som inneholder uttrykket ORDERBY(DS4, DS4.DimensionValue)
  4. Legg merke til at uttrykket FIRST(DS5).Value returnerer tekstverdien "D2", uttrykket INDEX(DS5, COUNT(DS5)).Value returnerer tekstverdien "D3", og uttrykket STRINGJOIN(DS5, DS5.Value, "|") returnerer tekstverdien "_D2|D1|D3".

Tilleggsressurser

Listefunksjoner