Partilhar via


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

Funções de lógica

Funções VALUEINLARGE