VALUEIN EB-Funktion
Die Funktion VALUEIN
bestimmt, ob die Eingabe mit einem angegebenen Wert eines angegebenen Artikels in der angegebenen Liste übereinstimmt. Sie gibt den booleschen Wert TRUE zurück, wenn die angegebene Eingabe mit dem Ergebnis der Ausführung des angegebenen Ausdrucks für mindestens einen Datensatz der entsprechenden Liste übereinstimmt. Andernfalls gibt sie den booleschen Wert FALSE zurück.
Syntax
VALUEIN (input, list, list item expression)
Argumente
input
: Feld
Der gültige Pfad des Elementes einer Datenquelle des Typs Datensatzliste. Der Wert dieses Elements, der abgeglichen wird.
list
: Datensatzliste
Der gültige Pfad einer Datenquelle des Datentyps Datensatzliste.
list item expression
: Boolesch
Ein gültiger Bedingungsausdruck , der entweder zu einem Feld zeigt oder ein einzelnes Feld der Liste enthält, die zum Abgleich verwendet werden soll.
Rückgabewerte
Boolesch
Der resultierende boolesche Wert.
Anwendungshinweise
Im Allgemeinen wird die Funktion VALUEIN
zu einem Satz OR-Bedingungen umgerechnet. Wenn die Liste von ODER-Bedingungen groß ist und die maximale Gesamtlänge einer SQL-Anweisung überschritten werden kann, erwägen Sie die Verwendung der VALUEINLARGE
-Funktion.
(input = list.item1.value) OR (input = list.item2.value) OR …
In einigen Fällen kann es in eine SQL-Datenbankanweisung durch Verwendung des Operators EXISTS JOIN
übersetzt werden.
Notiz
Der Wert, den die Funktion VALUEIN
zurückgibt, wird unterschiedlich verwendet, je nachdem, ob diese Funktion zur Angabe der Auswahlkriterien für die Funktion FILTER
oder die Funktion WHERE
verwendet wird.
Beispiel 1
In Ihrer Modellzuweisung definieren Sie die Datenquelle Liste des Typs Berechnetes Feld. Diese Datenquelle enthält den Ausdruck SPLIT ("a,b,c", ",")
.
Beim Aufruf einer Datenquelle, wenn diese als VALUEIN ("B", List, List.Value)
-Ausdruck konfiguriert wurde, wird TRUE zurückgegeben. In diesem Fall wird die Funktion VALUEIN
in den folgenden Satz an Bedingungen umgerechnet: (("B" = "a") or ("B" = "b") or ("B" = "c"))
, wobei ("B" = "b")
TRUE entspricht.
Beim Aufruf einer Datenquelle, wenn diese als VALUEIN ("B", List, LEFT(List.Value, 0))
-Ausdruck konfiguriert wurde, wird FALSE zurückgegeben. In diesem Fall wird die Funktion VALUEIN
in die folgende Bedingung umgerechnet: ("B" = "")
, was nicht TRUE entspricht.
Der obere Grenzwert für die Anzahl der Zeichen im Text einer derartigen Bedingung entspricht 32.768 Zeichen. Daher sollten Sie keine Datenquellen erstellen, die möglicherweise zur Laufzeit diesen Grenzwert überschreiten. Wenn das Limit überschritten wird, wird die Anwendung nicht mehr ausgeführt und eine Ausnahme ausgelöst. Beispielsweise kann diese Situation erfolgen, wenn die Datenquelle als WHERE (List1, VALUEIN (List1.ID, List2, List2.ID)
konfiguriert wird, und die Listen List1 und List2 eine große Anzahl von Datensätzen enthalten.
In einigen Fällen wird die Funktion VALUEIN
in eine Datenbankaussage durch Verwendung des Operators EXISTS JOIN
umgerechnet. Dieses Verhalten tritt auf, wenn die Funktion FILTER
verwendet wird und die folgenden Bedingungen erfüllt sind:
- Die Option BITTEN SIE UM ABFRAGE wird für die Datenquelle der Funktion
VALUEIN
deaktiviert, die die Liste von Datenträgen bezieht. Es werden keine zusätzliche Bedingungen auf diese Datenquelle zur Bearbeitungszeit angewendet. - Es werden keine eingebetteten Ausdrücke für die Datenquelle der Funktion
VALUEIN
konfiguriert, die sich auf die Liste von Datenträgen bezieht. - Ein Listenelement der Funktion
VALUEIN
bezieht sich auf ein Feld der angegebenen Datenquelle, nicht auf einen Ausdruck oder eine Methode dieser Datenquelle.
Erwägen Sie die Nutzung dieser Option anstelle der Funktion WHERE
, die weiter oben in diesem Beispiel beschrieben wird.
Beispiel 2
Die folgenden Datenquellen definieren Sie in Ihrer Modellzuordnung:
- Die Datenquelle In des Typs Tabellendatensätze. Diese Datenquelle bezieht sich auf die Intrastat-Tabelle.
- Die Datenquelle Port des Typs Tabellendatensätze. Diese Datenquelle bezieht sich auf die IntrastatPort-Tabelle.
Wenn eine Datenquelle angerufen wird, die als Ausdruck FILTER (In, VALUEIN(In.Port, Port, Port.PortId)
konfiguriert, wird die nächste SQL-Anweisung generiert, um gefilterte Datensätze der Intrastat-Tabelle zurückzugeben.
select … from Intrastat
exists join TableId from IntrastatPort
where IntrastatPort.PortId = Intrastat.Port
Für dataAreaId-Felder wird die endgültige SQL-Anweisung durch die Verwendung des Operators IN
generiert.
Beispiel 3
Die folgenden Datenquellen definieren Sie in Ihrer Modellzuordnung:
- Die Datenquelle Le des Typs Berechnetes Feld. Diese Datenquelle enthält den Ausdruck
SPLIT ("DEMF,GBSI,USMF", ",")
. - Die Datenquelle In des Typs Tabellendatensätze. Diese Datenquelle bezieht sich auf die Intrastat-Tabelle und die Option Unternehmensübergreifend ist dafür aktiviert.
Wenn eine Datenquelle angerufen wird, die als Ausdruck FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value)
konfiguriert wird, enthält die abschließende SQL-Anweisung die folgende Bedingung.
Intrastat.dataAreaId IN ('DEMF', 'GBSI', 'USMF')