Runtime

Como configurar o SQL de uma LOV e/ou autocomplete de um campo de uma tela?

RT.FAQ-873
Para customizar o SQL de uma Lista de Valores e/ou AUTOCOMPLETE, basta criar uma propriedade LOOKUP_SQL para o item da interface. Esta propriedade segue herança por domínio, ou seja, é possível informa-la no atributo da entidade. Caso o item da interface tenha uma LOV explícita, então a propriedade também é verificada nesta interface. Neste caso, a propriedade teria que ficar registrada diretamente abaixo do bloco que define a LOV.

Por padrão, o SQL é montado com base nas entidades do modelo. Com esta preferência, o desenvolvedor poderá definir o SQL livremente. O SQL deverá resultar 4 colunas que devem ter os seguintes nomes:

Deve-se tomar cuidado com colunas que podem conter valores nulos - Nestes casos, é importante usar uma função tipo COALESCE ou CASE WHEN.

Exemplo:
select id as id
   , codificador as valor
   , codificador || ' - ' || descricao as descricao
   , codificador || coalesce(descricao, ' ') as pesquisar
from codificadores
where situacao in ( 'D' )
order by codificador

Assim como as expressões WHERE utilizadas para filtrar as lookups de um bloco, esta query pode utilizar as seguintes macros para parametrizar a consulta:

Customização em tempo de execução

O autocomplete de um campo pode ser customizado em tempo de execução, simplesmente configurando a preferência com o mesmo nome global do utilizado no desenvolvimento. Exemplo:
PEDREPR02.CAD_PEDIDOS_REPRESENTACAO_02.FORNECEDOR_GRUPO.LOOKUP_SQL =
select pessoa as valor
, pessoa || ' - ' || nome_completo as descricao
, pessoa || nome_completo as pesquisar
from pessoas


Observações


Melhores práticas

Quando uma entidade é muito referenciada nas interfaces e possui muitas variações nas pesquisas devido a registros de diferentes categorias, sugere-se criar um conjunto de preferências mapeando os SQLs a serem utilizados nas diferentes situações e nas interfaces configurar a propriedade LOOKUP_SQL com o valor da preferência desejada entre colchetes.

Estas preferências deverão ser colocadas log abaixo do SISTEMA utilizando um nome lógico no singular precedido da silga "AC_".

Um exemplo disso é a entidade PESSOAS onde podemos ter um autocomplete diferenciado para pessoas (geral), vendedores, representantes, clientes, fornecedores, pessoas físicas, pessoas jurídicas, etc.:

Ver também