VALUEIN ER-funksjonen
VALUEIN
-funksjonen bestemmer om de angitte inndataene samsvarer med en verdi for et angitt element i den angitte listen. Den returnerer en boolsk verdi av SANN hvis de angitte inndataene samsvarer med resultatet av å kjøre det angitte uttrykket for minst én post i den angitte listen. Hvis ikke returneres den boolske verdien USANN.
Syntaks
VALUEIN (input, list, list item expression)
Argumenter
input
: Felt
Den gyldige banen til et element i en datakilde i Postliste-typen. Verdien for dette elementet samsvares.
list
: Postliste
Den gyldige banen til en datakilde av Postliste-datatypen.
list item expression
: Boolsk
Et gyldig betingelsesuttrykk som enten henviser til eller inneholder ett enkelt felt i den angitte listen som skal brukes for den samsvarende.
Returverdier
Boolsk
Den resulterende boolske verdien.
Bruksnotater
Generelt oversettes VALUEIN
-funksjonen til et sett med OR-betingelser. Hvis listen over OR-betingelser er stor, og den maksimal totale lengde på en SQL-setning kan overstiges, bør du vurdere å bruke VALUEINLARGE
-funksjonen.
(input = list.item1.value) OR (input = list.item2.value) OR …
I noen tilfeller kan den oversettes til en database SQL-setning ved hjelp av EXISTS JOIN
-operatoren.
Notat
Verdien som VALUEIN
-funksjonen returnerer, brukes på ulik måte, avhengig av om denne funksjonen brukes til å angi utvalgskriterier for FILTER
-funksjonen eller WHERE
-funksjonen.
Eksempel 1
Du definerer Liste-datakilden for Beregnet felt-typen i modelltilordningen. Denne datakilden inneholder uttrykket SPLIT ("a,b,c", ",")
.
Når en datakilde kalles og den er konfigurert som VALUEIN ("B", List, List.Value)
-uttrykket, returneres SANN. I dette tilfellet oversettes VALUEIN
-funksjonen til følgende sett med betingelser: (("B" = "a") or ("B" = "b") or ("B" = "c"))
, der ("B" = "b")
er lik SANN.
Når en datakilde kalles og den er konfigurert som VALUEIN ("B", List, LEFT(List.Value, 0))
-uttrykket, returneres USANN. I dette tilfellet oversettes VALUEIN
-funksjonen til følgende betingelse: ("B" = "")
, som ikke er lik SANN.
Den øvre grensen for antall tegn i teksten i en slik betingelse er 32 768 tegn. Du bør derfor ikke opprette datakilder som kan overstige denne grensen ved kjøretid. Hvis grensen overskrides, slutter programmet å kjøre, og et unntak blir registrert. Denne situasjonen kan for eksempel oppstå hvis datakilden er konfigurert som WHERE (List1, VALUEIN (List1.ID, List2, List2.ID)
, og List1 og List2-listene inneholder et stort antall poster.
I noen tilfeller kan VALUEIN
-funksjonen oversettes til en databasesetning ved hjelp av EXISTS JOIN
-operatoren. Denne virkemåter skjer når FILTER
-funksjonen brukes og følgende betingelser er oppfylt:
- BE OM SPØRRING-valget er deaktivert for datakilden for
VALUEIN
-funksjonen som refererer til listen over poster. Ingen flere betingelser brukes på denne datakilden ved kjøretid. - Ingen nestede uttrykk konfigureres for datakilden for
VALUEIN
-funksjonen som refererer til listen over poster. - Et listeelement for
VALUEIN
-funksjonen refererer til et felt for den angitte datatypen, ikke til et uttrykk eller en metode for datakilden.
Vurder å bruke dette alternativet i stedet for WHERE
-funksjonen som er beskrevet tidligere i dette eksemplet.
Eksempel 2
Du definerer de følgende datakildene i modelltilordningen:
- I-datakilden for Tabellposter-typen. Denne datakilden refererer til Intrastat-tabellen.
- Port-datakilden for Tabellposter-typen. Denne datakilden refererer til IntrastatPort-tabellen.
Når en datakilde kalles opp som er konfigurert som uttrykket FILTER (In, VALUEIN(In.Port, Port, Port.PortId)
, genereres følgende SQL-setning for å returnere filtrerte poster i Intrastat-tabellen.
select … from Intrastat
exists join TableId from IntrastatPort
where IntrastatPort.PortId = Intrastat.Port
For dataAreaId-feltene genereres den endelige SQL-setningen ved hjelp av IN
-operatoren.
Eksempel 3
Du definerer de følgende datakildene i modelltilordningen:
- Le-datakilden for Beregnet felt-typen. Denne datakilden inneholder uttrykket
SPLIT ("DEMF,GBSI,USMF", ",")
. - I-datakilden for Tabellposter-typen. Denne datakilden refererer til Intrastat-tabellen, og alternativet Kryssfirma er aktivert for den.
Når en datakilde kalles opp som er konfigurert som uttrykket FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value)
, inneholder den endelige SQL-setningen følgende betingelse.
Intrastat.dataAreaId IN ('DEMF', 'GBSI', 'USMF')