Delen via


De ER-functie VALUEIN

De functie VALUEIN bepaalt of de opgegeven invoer overeenkomt met een waarde van een opgegeven item in de opgegeven lijst. Het resultaat is de Booleaanse waardeTRUE als de opgegeven invoer overeenkomt met het resultaat van het uitvoeren van de opgegeven expressie voor ten minste één record van de opgegeven lijst. Anders wordt de Booleaanse waarde FALSE geretourneerd.

Syntaxis

VALUEIN (input, list, list item expression)

Argumenten

input: Veld

Het geldige pad van een item van een gegevensbron van het type Recordlijst. De waarde van dit item wordt vergeleken.

list: Recordlijst

Het geldige pad van een gegevensbron van het gegevenstype Recordlijst.

list item expression: Booleaanse waarde

Een geldige voorwaardelijke expressie die verwijst naar één veld (of deze bevat) van de opgegeven lijst die moet worden gebruikt voor de vergelijking.

Retourwaarden

Booleaanse waarde

De resulterende Booleaanse waarde.

Gebruiksaanwijzingen

In het algemeen wordt de functie VALUEIN omgezet in een reeks OF-voorwaarden. Als de lijst met OR-voorwaarden groot is en de maximale totale lengte van een SQL-instructie mogelijk wordt overschreden, kunt u de functie VALUEINLARGE gebruiken.

(input = list.item1.value) OR (input = list.item2.value) OR …

In sommige gevallen kan deze worden vertaald in een database-SQL-instructie met behulp de operator EXISTS JOIN.

Notitie

De waarde die de functie VALUEIN retourneert, wordt op verschillende manieren gebruikty, afhankelijk van of deze functie wordt gebruikt om de selectiecriteria voor de functie FILTER of de functie WHERE op te geven.

Voorbeeld 1

In uw modeltoewijzing definieert u de gegevensbron Lijst van het type Berekend veld. Deze gegevensbron bevat de expressie SPLIT ("a,b,c", ",").

Wanneer een gegevensbron wordt aangeroepen die is geconfigureerd als de expressie VALUEIN ("B", List, List.Value), wordt TRUE geretourneerd. In dit geval wordt de functie VALUEIN omgezet in de volgende reeks voorwaarden: (("B" = "a") or ("B" = "b") or ("B" = "c")), waarbij ("B" = "b") gelijk is aan TRUE.

Wanneer een gegevensbron wordt aangeroepen die is geconfigureerd als de expressie VALUEIN ("B", List, LEFT(List.Value, 0)), wordt FALSE geretourneerd. In dit geval wordt de functie VALUEIN omgezet in de volgende voorwaarde: ("B" = ""), wat niet gelijk aan TRUE.

De bovengrens voor het aantal tekens in de tekst van een dergelijke voorwaarde is 32.768 tekens. Daarom moet u geen gegevensbronnen maken die deze limiet tijdens de uitvoering mogelijk overschrijden. Als de limiet wordt overschreden, stopt de uitvoering van de toepassing en treedt een uitzondering op. Deze situatie kan zich bijvoorbeeld voordoen als de gegevensbron is geconfigureerd als WHERE (List1, VALUEIN (List1.ID, List2, List2.ID) en de lijsten List1 en List2 een groot aantal records bevatten.

In sommige gevallen moet de functie VALUEIN worden omgezet in een database-instructie met behulp van de operator EXISTS JOIN. Dit probleem treedt op wanneer de functie FILTER wordt gebruikt en aan de volgende voorwaarden wordt voldaan:

  • De optie VRAGEN OM QUERY is uitgeschakeld voor de gegevensbron van de functie VALUEIN die naar de lijst met records verwijst. Er worden tijdens de uitvoering geen extra voorwaarden op deze gegevensbron toegepast.
  • Er worden geen geneste expressies geconfigureerd voor de gegevensbron van de functie VALUEIN die naar de lijst met records verwijst.
  • Een item in de lijst van de functie VALUEIN verwijst naar een veld van de opgegeven gegevensbron, niet een expressie of een methode van die gegevensbron.

Overweeg deze optie te gebruiken in plaats van de functie WHERE, die eerder in dit voorbeeld is beschreven.

Voorbeeld 2

U definieert de volgende gegevensbronnen in uw modeltoewijzing:

  • De gegevensbron In van het type Tabelrecords. Deze gegevensbron verwijst naar de tabel Intrastat.
  • De gegevensbron Poort van het type Tabelrecords. Deze gegevensbron verwijst naar de tabel Intrastat IntrastatPort.

Wanneer een gegevensbron wordt aangeroepen die is geconfigureerd als de expressie FILTER (In, VALUEIN(In.Port, Port, Port.PortId), wordt de volgende SQL-instructie gegenereerd om gefilterde records van de tabel Intrastat te retourneren.

select … from Intrastat
exists join TableId from IntrastatPort
where IntrastatPort.PortId = Intrastat.Port

Voor velden van het type dataAreaId wordt de uiteindelijke SQL-instructie gegenereerd via de operator IN.

Voorbeeld 3

U definieert de volgende gegevensbronnen in uw modeltoewijzing:

  • De gegevensbron Le van het type Berekend veld. Deze gegevensbron bevat de expressie SPLIT ("DEMF,GBSI,USMF", ",").
  • De gegevensbron In van het type Tabelrecords. Deze gegevensbron verwijst naar de Intrastat-tabel en de optie Tussen bedrijven is hiervoor ingeschakeld.

Wanneer een gegevensbron wordt aangeroepen die is geconfigureerd als de expressie FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value), bevat de uiteindelijke SQL-instructie de volgende voorwaarde.

Intrastat.dataAreaId IN ('DEMF', 'GBSI', 'USMF')

Aanvullende bronnen

Logische functies

VALUEINLARGE-functies