Delen via


De ER-functie ORDERBY

De functie ORDERBY retourneert de opgegeven lijst als een recordlijstwaarde nadat deze is gesorteerd op basis van de opgegeven argumenten. Deze argumenten kunnen worden gedefinieerd als een expressie.

Syntaxis 1

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

Syntaxis 2

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

Notitie

Deze syntaxis wordt ondersteund voor Microsoft Dynamics 365 Finance versie 10.0.25 en hoger.

Argumenten

location: Tekenreeks

De locatie waar de sortering moet worden uitgevoerd. De volgende opties zijn geldig:

  • "Query"
  • "InMemory"

list: Recordlijst

Het geldige pad van een gegevensbron van het gegevenstype Recordlijst.

expression 1: Veld

Het geldige pad van een veld van de gegevensbron waarnaar wordt verwezen door het argument list van de aangeroepen functie. Het veld waarnaar wordt verwezen, moet een veld van het primitieve gegevenstype zijn. Dit argument is verplicht.

expression N: Veld

Het geldige pad van een veld van de gegevensbron waarnaar wordt verwezen door het argument list van de aangeroepen functie. Het veld waarnaar wordt verwezen, moet een veld van het primitieve gegevenstype zijn. Deze aanvullende argumenten zijn optioneel.

Retourwaarden

Recordlijst

De resulterende lijst met records.

Gebruiksaanwijzingen

Syntaxis 1

Gegevens worden altijd gesorteerd in het geheugen van de toepassingsserver. Zie voorbeeld 1 voor meer informatie.

Syntaxis 2

In het geheugen sorteren

Als het argument location wordt opgegeven als InMemory, wordt het sorteren van gegevens uitgevoerd in het geheugen van een toepassingsserver. Zie voorbeeld 2 voor meer informatie.

Sorteren in database

Als het argument location wordt opgegeven als Query, worden gegevens gesorteerd op databaseniveau. In dit geval moet het argument list verwijzen naar een van de volgende ER-gegevensbronnen (Electronic Reporting) waarmee de toepassingsbron wordt opgegeven waarvoor een directe databasequery kan worden ingesteld:

  • Gegevensbron van het type Tabelrecords
  • Relatie van een gegevensbron van het type Tabelrecords
  • Gegevensbron van het type Berekeningsveld

De argumenten expression 1 en expression N moeten verwijzen naar velden van een ER-gegevensbron waarmee de relevante velden van de toepassingsbron worden opgegeven waarvoor ook een directe databasequery kan worden ingesteld.

Als er geen directe databasequery kan worden ingesteld, treedt een validatiefout op in de ontwerper voor ER-modeltoewijzing. Het bericht dat wordt weergegeven, geeft aan dat de ER-expressie die de functie ORDERBY bevat, niet kan worden uitgevoerd tijdens runtime.

Voor betere prestaties is het raadzaam de optie Query te gebruiken wanneer de sortering is geconfigureerd voor toepassingsgegevensbronnen die het grote aantal records kunnen bevatten (bijvoorbeeld voor transactionele toepassingstabellen).

Notitie

De functie ORDEBY zelf kan niet worden vertaald naar een directe databasequery. Daarom kan geen query worden uitgevoerd op een ER-gegevensbron die deze functie bevat. Het kan ook niet worden gebruikt in het bereik van ER-functies zoals FILTER en ALLITEMSQUERY, waar alleen gegevensbronnen kunnen worden gebruikt waarop een query kan worden uitgevoerd.

Zie voorbeeld 3 en voorbeeld 4 voor meer informatie.

Vergelijkbaarheid

Aangezien de SQL-database-engine en de Finance-toepassingsserver een andere classificatiewaarde kunnen gebruiken voor één teken, kan het sorteerresultaat van dezelfde lijst met records verschillen wanneer een Tekenreeks-veld wordt gebruikt voor sortering. Zie voorbeeld 5 voor meer informatie.

Voorbeeld 1: standaarduitvoering in geheugen

Als u de gegevensbron DS invoert van het type Berekend veld en deze de expressie SPLIT ("C|B|A", "|") bevat, retourneert de expressie FIRST( ORDERBY( DS, DS. Value)).Value de tekstwaarde A.

Voorbeeld 2: expliciete uitvoering in geheugen

Wanneer Leverancier als een ER-gegevensbron van het type Tabelrecords wordt geconfigureerd waarmee wordt verwezen naar de tabel VendTable, retourneren zowel de expressie ORDERBY (Vendor, Vendor.'name()') als de expressie ORDERBY ("InMemory", Vendor, Vendor.'name()') een lijst met leveranciers die in oplopende volgorde op naam is gesorteerd.

Als u de expressie ORDERBY ("Query", Vendor, Vendor.'name()') configureert in de ER-modeltoewijzingsontwerper, treedt er een validatiefout op tijdens het ontwerpen, omdat het pad Vendor.'name()' verwijst naar een toepassingsmethode met logica die niet kan worden vertaald naar een directe databasequery.

Voorbeeld 3: databasequery

Als TaxTransaction wordt geconfigureerd als een ER-gegevensbron van het type Tabelrecords waarmee wordt verwezen naar de tabel TaxTrans, sorteert de expressie ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode) records op het niveau van de toepassingsdatabase en wordt een lijst met belastingtransacties geretourneerd die in oplopende volgorde op belastingcode wordt gesorteerd.

Voorbeeld 4: gegevensbronnen waarop een query kan worden uitgevoerd

Als TaxTransaction wordt geconfigureerd als een ER-gegevensbron van het type Tabelrecords waarmee wordt verwezen naar de tabel TaxTrans, kan de ER-gegevensbron TaxTransactionFiltered worden geconfigureerd zodat deze de expressie FILTER(TaxTransaction, TaxCode="VAT19") bevat waarmee transacties voor een opgegeven belastingcode worden opgehaald. Omdat op de geconfigureerde ER-gegevensbron TaxTransactionFiltered een query kan worden uitgevoerd, kan de expressie ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate) worden geconfigureerd om de lijst met gefilterde belastingtransacties te retourneren die in oplopende volgorde op transactiedatum wordt gesorteerd.

Als u TaxTransactionOrdered configureert als een ER-gegevensbron van het type Berekend veld dat de expressie ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate) bevat en een ER-gegevensbron van het type Berekend veld dat de expressie FILTER(TaxTransactionOrdered, TaxCode="VAT19") bevat, treedt er een validatiefout op tijdens het ontwerpen in de ER-modeltoewijzingsontwerper. Deze fout treedt op omdat het eerste argument van de functie FILTER naar een ER-gegevensbron moet verwijzen waarop een query kan worden uitgevoerd, maar op de gegevensbron TaxTransactionOrdered die de functie ORDERBY bevat, kan geen query worden uitgevoerd.

Voorbeeld 5: vergelijkbaarheid

Vereisten

  1. Voer gegevensbron DS1 in van het type Berekend veld met de expressie SPLIT ("D1|_D2|D3", "|").
  2. Open de pagina Waarden van financiële dimensies en selecteer de dimensie CostCenter.
  3. Voer de volgende dimensiewaarden in: D1, D2 en D3.

In het geheugen sorteren

  1. Configureer gegevensbron DS2 van het type Berekend veld met de expressie ORDERBY("InMemory", DS1, DS1.Value).
  2. Met de expressie FIRST(DS2).Value wordt de tekstwaarde "D1" geretourneerd, met de expressie INDEX(DS2, COUNT(DS2)).Value de tekstwaarde "_D2" en met de expressie STRINGJOIN(DS2, DS2.Value, "|") de tekstwaarde "D1|D3|_D2".

Sorteren in database

  1. Voer gegevensbron DS3 in van het type Tabelrecords waarmee wordt verwezen naar de entiteit FinancialDimensionValueEntity.
  2. Configureer gegevensbron DS4 van het type Berekend veld met de expressie FILTER(DS3, DS3.FinancialDimension="CostCenter").
  3. Configureer gegevensbron DS5 van het type Berekend veld met de expressie ORDERBY(DS4, DS4.DimensionValue).
  4. Met de expressie FIRST(DS5).Value wordt de tekstwaarde "_D2" geretourneerd, met de expressie INDEX(DS5, COUNT(DS5)).Value de tekstwaarde "D3" en met de expressie STRINGJOIN(DS5, DS5.Value, "|") de tekstwaarde "D2|D1|D3".

Aanvullende bronnen

Lijstfuncties