Delen via


De ER-functie FILTER

De functie FILTER retourneert de opgegeven lijst als een waarde van het type Recordlijst nadat de query is gewijzigd zodat deze filtert op de opgegeven voorwaarde.

Syntaxis

FILTER (list, condition)

Argumenten

list: Recordlijst

Het geldige pad van een gegevensbron van het gegevenstype Recordlijst.

condition: Booleaanse waarde

Een geldige voorwaardelijke expressie die wordt gebruikt om records van de opgegeven lijst te filteren.

Retourwaarden

Recordlijst

De resulterende lijst met records.

Gebruiksaanwijzingen

Deze functie verschilt van de functie WHERE omdat de opgegeven voorwaarde wordt toegepast op een ER-gegevensbron (Elektronische rapportage) van het type Tabelrecords op het databaseniveau. De lijst en de voorwaarde kunnen worden gedefinieerd met behulp van tabellen en relaties.

Als een of beide argumenten die zijn geconfigureerd voor deze functie (list en condition) niet toestaan dat deze aanvraag wordt omgezet in de directe SQL-aanroep, wordt een uitzondering gegenereerd tijdens het ontwerpen. Deze uitzondering informeert de gebruiker dat list of condition niet kan worden gebruikt om een query op de database uit te voeren.

Notitie

De functie FILTER zal zich anders gedragen dan de functie WHERE wanneer de functie VALUEIN wordt gebruikt om de selectiecriteria op te geven.

  • Als de functie VALUEIN wordt gebruikt in het bereik van de functie WHERE en het tweede argument van VALUEIN verwijst naar een gegevensbron die geen records retourneert, wordt rekening gehouden met de Booleaanse waarde onwaar die VALUEIN retourneert. Daarom retourneert de expressie WHERE(Vendors, VALUEIN(Vendors.VendGroup, VendGroups, VendGroups.VendGroup)) geen leverancierrecords als degegevensbron VendGroups geen records van leveranciersgroepen retourneert.
  • Als de functie VALUEIN wordt gebruikt in het bereik van de functie FILTER en het tweede argument van VALUEIN verwijst naar een gegevensbron die geen records retourneert, wordt de Booleaanse waarde onwaar die VALUEIN retourneert, genegeerd. Daarom retourneert de expressie FILTER(Vendors, VALUEIN(Vendors.VendGroup, VendGroups, VendGroups.VendGroup)) alle leverancierrecords van de gegevensbron Vendors, zelfs als de gegevensbron VendGroups geen records van leveranciersgroepen retourneert.

Voorbeeld 1

Als Leverancier als een ER-gegevensbron wordt geconfigureerd die naar de tabel VendTable verwijst, wordt met FILTER (Vendors, Vendors.VendGroup = "40") de lijst met leveranciers geretourneerd die behoren tot de leveranciersgroep 40.

Voorbeeld 2

Als Leverancier is geconfigureerd als een ER-gegevensbron die verwijst naar de tabel VendTable en als parmVendorBankGroup is geconfigureerd als een ER-gegevensbron die een waarde van het gegevenstype Tekenreeks retourneert, retourneert de expressie FILTER ( Vendor.'<Relations'.VendBankAccount, Vendor.'<Relations'.VendBankAccount.BankGroupID = parmVendorBankGroup) een lijst met alleen de leveranciersaccounts die behoren tot een specifieke bankgroep.

Voorbeeld 3

U voert gegevensbron DS van het type Berekend veld in en deze bevat de expressie SPLIT ("A,B,C", ","). Vervolgens voert u een andere expressie FILTER( DS, DS.Value = "B") in. Wanneer u deze expressie probeert op te slaan in de ER-formuleontwerper, wordt de volgende uitzondering gegenereerd: "Validatiefout: er kunnen geen query's worden uitgevoerd op de lijstexpressie van de FILTER-functie."

Aanvullende resources

Lijstfuncties