Compartilhar via


Função de ER VALUEIN

A função VALUEIN determina se a entrada especificada corresponde a algum valor de um item especificado na lista especificada. Ela retorna um valor Booliano de TRUE se a entrada especificada corresponder ao resultado da execução da expressão especificada para pelo menos um registro da lista especificada. Caso contrário, ela retorna um valor Booliano de FALSE.

Sintaxe

VALUEIN (input, list, list item expression)

Argumentos

input: Campo

O caminho válido de um item de uma fonte de dados do tipo Lista de registros. O valor desse item será correspondido.

list: Lista de registros

O caminho válido de uma fonte de dados do tipo Lista de registros.

list item expression: Booliano

Uma expressão condicional válida que aponta para ou contém um único campo da lista especificada que deve ser usado na correspondência.

Valores de retorno

Booliano

O valor Booliano resultante.

Notas de uso

Em geral, a função VALUEIN é convertida em um conjunto de condições OR. Se a lista de condições OU for grande e o tamanho máximo total de uma instrução SQL puder ser excedido, use a função VALUEINLARGE.

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

Em alguns casos, ela pode ser convertida em uma instrução SQL de banco de dados usando o operador EXISTS JOIN.

Observação

O valor que a função VALUEIN retorna é usado de forma diferente, dependendo de essa função ser usada para especificar os critérios de seleção da função FILTER ou da função WHERE.

Exemplo 1

No seu mapeamento de modelo, você define a fonte de dados Lista do tipo Campo calculado. Essa fonte de dados contém a expressão SPLIT ("a,b,c", ",").

Quando uma fonte de dados é chamada, se tiver sido configurada como a expressão VALUEIN ("B", List, List.Value), ela retorna TRUE. Nesse caso, a função VALUEIN é convertida no seguinte conjunto de condições: (("B" = "a") or ("B" = "b") or ("B" = "c")), onde ("B" = "b") é igual a TRUE.

Quando uma fonte de dados é chamada, se tiver sido configurada como a expressão VALUEIN ("B", List, LEFT(List.Value, 0)), ela retorna FALSE. Nesse caso, a função VALUEIN é convertida na seguinte condição: ("B" = ""), que não é igual a TRUE.

O limite superior para o número de caracteres no texto dessa condição é de 32.768 caracteres. Portanto, você não deve criar fontes de dados que possam exceder esse limite no tempo de execução. Se o limite for excedido, o aplicativo interrompe a execução e uma exceção é gerada. Por exemplo, essa situação poderá ocorrer se a fonte de dados for configurada como WHERE (List1, VALUEIN (List1.ID, List2, List2.ID) e as listas List1 e List2 contiverem muitos registros.

Em alguns casos, a função VALUEIN é convertida em uma instrução de banco de dados usando o operador EXISTS JOIN. Esse comportamento ocorre quando a função FILTER é usada e as seguintes condições são atendidas:

  • A opção SOLICITAR CONSULTA é desativada para a fonte de dados da função VALUEIN que se refere à lista de registros. Nenhuma condição adicional será aplicada a essa fonte de dados no tempo de execução.
  • Nenhuma expressão aninhada é configurada para a fonte de dados da função VALUEIN que se refere à lista de registros.
  • Um item de lista da função VALUEIN se refere a um campo da fonte de dados especificada, não a uma expressão ou um método dessa fonte de dados.

Use esta opção, em vez da função WHERE descrita anteriormente neste exemplo.

Exemplo 2

Você define as seguintes fontes de dados no mapeamento de modelo:

  • A fonte de dados In do tipo Registros de tabela. Essa fonte de dados se refere à tabela Intrastat.
  • A fonte de dados Port do tipo Registros de tabela. Essa fonte de dados se refere à tabela IntrastatPort.

Quando uma fonte de dados que tenha sido configurada como a expressão FILTER (In, VALUEIN(In.Port, Port, Port.PortId) é chamada, a seguinte instrução SQL é gerada para retornar registros filtrados da tabela Intrastat.

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

Para campos dataAreaId, a instrução SQL final é gerada usando o operador IN.

Exemplo 3

Você define as seguintes fontes de dados no mapeamento de modelo:

  • A fonte de dados Le do tipo Campo calculado. Essa fonte de dados contém a expressão SPLIT ("DEMF,GBSI,USMF", ",").
  • A fonte de dados In do tipo Registros de tabela. Essa fonte de dados se refere à tabela Intrastat e a opção Interempresarial é ativada para ela.

Quando uma fonte de dados que tenha sido configurada como a expressão FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value) é chamada, a instrução SQL final contém a seguinte condição.

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

Recursos adicionais

Funções lógicas

Funções VALUEINLARGE