Fonction VALUEIN ER
La fonction VALUEIN
détermine si l’entrée spécifiée correspond à une valeur quelconque d’un article donné dans la liste spécifiée. Elle renvoie une Booléenne de TRUE si l’entrée spécifiée correspond au résultat de l’exécution de l’expression spécifiée pour au moins un enregistrement de la liste spécifiée. Sinon, elle renvoie une valeur Booléenne de FALSE.
Syntaxe
VALUEIN (input, list, list item expression)
Arguments
input
: Champ
Chemin d’accès valide d’un élément d’une source de données du Liste d’enregistrements. La valeur de cet article est mise en correspondance.
list
: Liste d’enregistrements
Chemin d’accès valide d’une source de données du type de données Liste d’enregistrements.
list item expression
: Booléen
Expression conditionnelle valide qui indique ou contient un champ unique de la liste spécifiée à utiliser pour la mise en correspondance.
Valeurs de retour
Booléen
Valeur Booléenne résultante.
Notes d’utilisation
En général la fonction VALUEIN
est traduite en un ensemble de conditions OR. Si la liste des conditions OR est grande et la longueur totale maximale d’une instruction SQL peut être dépassée, pensez à utiliser la fonction VALUEINLARGE
.
(input = list.item1.value) OR (input = list.item2.value) OR …
Dans certains cas, elle peut être convertie en une instruction SQL de base de données à l’aide de l’opérateur EXISTS JOIN
.
Note
La valeur que la fonction VALUEIN
renvoie est utilisée différemment, selon que cette fonction est utilisée pour spécifier les critères de sélection de la fonction FILTER
ou la fonction WHERE
.
Exemple 1
Dans votre modèle de mise en correspondance, vous définissez la source de données Liste de type Champ calculé. Cette source de données contient l’expression SPLIT ("a,b,c", ",")
.
Lorsqu’une source de données est appelée, si elle a été configurée comme l’expression VALUEIN ("B", List, List.Value)
, elle renvoie TRUE. Dans ce cas, la fonction VALUEIN
est traduite en l’ensemble de conditions suivant : (("B" = "a") or ("B" = "b") or ("B" = "c"))
, où ("B" = "b")
est égal à TRUE.
Lorsqu’une source de données est appelée, si elle a été configurée comme l’expression VALUEIN ("B", List, LEFT(List.Value, 0))
, elle renvoie FALSE. Dans ce cas, la fonction VALUEIN
est traduite en l’ensemble de conditions suivant : ("B" = "")
, qui n’est pas égal à TRUE.
La limite supérieure du nombre de caractères dans le texte d’une telle condition est de 32 768 caractères. Par conséquent, vous ne devez pas créer de sources de données susceptibles de dépasser cette limite au moment de l’exécution. Si la limite est dépassée, l’application arrête de s’exécuter, et une exception est levée. Par exemple, cette situation peut se produire si la source de données est configurée comme WHERE (List1, VALUEIN (List1.ID, List2, List2.ID)
, et les listes List1 et List2 contiennent un grand nombre d’enregistrements.
Dans certains cas, la fonction VALUEIN
est traduite en une instruction de base de données à l’aide de l’opérateur EXISTS JOIN
. Ce comportement se produit lorsque la fonction FILTER
est utilisée et que les conditions suivantes sont remplies :
- L’option DEMANDER UNE REQUÊTE est désactivée pour la source de données de la fonction
VALUEIN
qui fait référence à la liste d’enregistrements. Aucune condition supplémentaire n’est appliquée à cette source de données au moment de l’exécution. - Aucune expression imbriquée n’est configurée pour la source de données de la fonction
VALUEIN
qui fait référence à la liste d’enregistrements. - Un élément de liste de la fonction
VALUEIN
fait référence à un champ, pas à une expression ou à une méthode de la source de données spécifiée.
Envisagez d’utiliser cette option au lieu de la fonction WHERE
comme décrit précédemment dans cet exemple.
Exemple 2
Vous définissez les sources de données suivantes dans la mise en correspondance des modèles :
- Source de données In du type Enregistrements de la table. Cette source de données fait référence à la table Intrastat.
- Source de données Port du type Enregistrements de la table. Cette source de données fait référence à la table IntrastatPort.
Lorsqu’une source de données est appelée qui est configurée comme l’expression FILTER (In, VALUEIN(In.Port, Port, Port.PortId)
, l’instruction SQL suivante est générée pour retourner les enregistrements filtrés de la table Intrastat.
select … from Intrastat
exists join TableId from IntrastatPort
where IntrastatPort.PortId = Intrastat.Port
Pour les champs dataAreaId, l’instruction SQL finale est générée en utilisant l’opérateur IN
.
Exemple 3
Vous définissez les sources de données suivantes dans la mise en correspondance des modèles :
- Source de données Le du type Champ calculé. Cette source de données contient l’expression
SPLIT ("DEMF,GBSI,USMF", ",")
. - Source de données In du type Enregistrements de la table. Cette source de données fait référence à la table Intrastat et l’option Intersociétés est activée pour cela.
Lorsqu’une source de données est appelée qui est configurée comme expression FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value)
, l’instruction SQL finale contient la condition suivante.
Intrastat.dataAreaId IN ('DEMF', 'GBSI', 'USMF')