Função de ER VALUEIN
A função VALUEIN
determina se a entrada especificada corresponde a qualquer valor de um item especificado na lista especificada. Devolve um valor Booleano de VERDADEIRO se a entrada especificada corresponder ao resultado da execução da expressão especificada para pelo menos um registo da lista especificada. Caso contrário, devolve um valor Booleano de FALSO.
Sintaxe
VALUEIN (input, list, list item expression)
Argumentos
input
: Campo
O caminho válido de um item de uma origem de dados do tipo de dados Lista de registos. O valor deste item será correspondido.
list
: Lista de registos
O caminho válido de uma origem de dados do tipo de dados Lista de registos.
list item expression
: Booleano
Uma expressão condicional válida que aponta para ou contém um único campo da lista especificada que deve ser utilizada para a correspondência.
Valores de retorno
Booleano
O valor Booleano resultante.
Notas de utilização
Em geral, a função VALUEIN
é traduzida para um conjunto de condições de OR. Se a lista de condições de OR for grande e o comprimento total máximo de uma instrução SQL puder ser ultrapassado, considere a utilização da função VALUEINLARGE
.
(input = list.item1.value) OR (input = list.item2.value) OR …
Em alguns casos, pode ser traduzido para uma instrução SQL de base de dados utilizando o operador EXISTS JOIN
.
Nota
O valor que a função VALUEIN
devolve é utilizado de forma diferente, dependendo se esta função é utilizada para especificar os critérios de seleção para a função FILTER
ou para a função WHERE
.
Exemplo 1
No mapeamento de modelos, defina a origem de dados Lista do tipo Campo calculado. Esta origem de dados contém a expressão SPLIT ("a,b,c", ",")
.
Quando uma origem de dados é chamada, se tiver sido configurada como a expressão VALUEIN ("B", List, List.Value)
, devolve VERDADEIRO. Neste caso, a função VALUEIN
é traduzida para o seguinte conjunto de condições: (("B" = "a") or ("B" = "b") or ("B" = "c"))
, em que ("B" = "b")
é igual a VERDADEIRO.
Quando uma origem de dados é chamada, se tiver sido configurada como a expressão VALUEIN ("B", List, LEFT(List.Value, 0))
, devolve FALSO. Neste caso, a função VALUEIN
é traduzida para a seguinte condição: ("B" = "")
, que não é igual a VERDADEIRO.
O limite superior para o número de carateres no texto de tal condição é de 32.768 carateres. Portanto, não deve criar origens de dados que possam exceder este limite durante a execução. Se o limite for ultrapassado, a aplicação deixa de funcionar e uma exceção é iniciada. Por exemplo, esta situação pode ocorrer se a origem de dados estiver configurada como WHERE (List1, VALUEIN (List1.ID, List2, List2.ID)
e as listas List1 e List2 contiverem um grande volume de registos.
Em alguns casos, a função VALUEIN
é traduzida para uma instrução de base de dados utilizando o operador EXISTS JOIN
. Este comportamento ocorre quando a função FILTER
é utilizada e as seguintes condições são preenchidas:
- A opção PEDIR CONSULTA está desativada para a origem de dados da função
VALUEIN
que se refere à lista de registos. Não serão aplicadas condições adicionais a esta origem de dados durante a execução. - Não fora configuradas expressões aninhadas para a origem de dados da função
VALUEIN
que se refere à lista de registos. - Um item de lista da função
VALUEIN
refere-se a um campo da origem de dados especificada, não a uma expressão ou um método dessa origem de dados.
Considere utilizar esta opção em vez da função WHERE
descrita anteriormente neste exemplo.
Exemplo 2
Defina as seguintes origens de dados no mapeamento de modelos:
- A origem de dados In do tipo Registos de tabelas. Esta origem de dados refere-se à tabela Intrastat.
- A origem de dados Porta do tipo Registos de tabelas. Esta origem de dados refere-se à tabela IntrastatPort.
Quando uma origem de dados chamada foi configurada como a expressão FILTER (In, VALUEIN(In.Port, Port, Port.PortId)
, a seguinte instrução SQL é gerada para devolver registos filtrados da tabela Intrastat.
select … from Intrastat
exists join TableId from IntrastatPort
where IntrastatPort.PortId = Intrastat.Port
Para os campos dataAreaId, a instrução SQL final é gerada utilizando o operador IN
.
Exemplo 3
Defina as seguintes origens de dados no mapeamento de modelos:
- A origem de dados Le do tipo Campo calculado. Esta origem de dados contém a expressão
SPLIT ("DEMF,GBSI,USMF", ",")
. - A origem de dados In do tipo Registos de tabelas. Esta origem de dados refere-se à tabela Intrastat e a opção Transversal à empresa está ativada para a mesma.
Quando uma origem de dados chamada foi configurada como a expressão FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value)
, a declaração SQL final contém a seguinte condição.
Intrastat.dataAreaId IN ('DEMF', 'GBSI', 'USMF')
Recursos adicionais
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários