Campos Lookup

Um campo lookup pode exibir um valor amigável para o usuário que está vinculado a outro valor em outra tabela ou lista de valores. Por exemplo, o campo lookup pode exibir o nome de um cliente que está vinculado ao respectivo número de ID do cliente em uma tabela ou lista de outro item.

Ao inserir um valor no campo lookup, o usuário escolhe a partir de uma lista de valores. Isso pode tornar a entrada de dados mais rápida e precisa.

Os dois tipos de campos lookup que você pode criar são: um campo lookup baseado em item lookup e uma lista de valores.

Campo lookup baseado em item lookup

No framework, você pode adicionar um campo a um item para buscar informações na tabela de outro item. Por exemplo, no Cadastro Álbuns do aplicativo de demonstração existe o campo lookup Artista.

albums_edit_form_jampy.png

Para definir o valor do campo, o usuário deve clicar no botão à direita do campo de entrada e selecionar um registro do Cadastro ‘’Artistas’’ que será exibido. Então o valor desse campo será o ID do registro. Outra forma de definir o valor do campo é usar a digitação antecipada (typeahead), se a opção Typeahead estiver marcada no Diálogo do Editor de Campo:

Lookup field

Para tais campos, Item Lookup e Campo Lookup devem ser especificados no Diálogo do Editor de Campo:

A consulta SQL que é gerada no servidor, quando o método open é chamado e o parâmetro expanded é definido como verdadeiro (padrão), utiliza a cláusula JOIN para obter os valores de lookup para tais campos. Assim, cada um desses campos tem um par de valores: o primeiro valor armazena uma referência a um registro na tabela do item de lookup (o valor do seu campo de chave primária), e o segundo valor contém o valor do campo lookup nesse registro.

Para acessar esses valores, use as seguintes propriedades dos campos lookup:

Cliente

Servidor

Descrição

value

value

Um valor, que é armazenado na tabela do item, que é uma referência a um registro na tabela do item de lookup.

lookup_value

lookup_value

Um valor do campo de lookup na tabela do item de lookup.

Às vezes, há a necessidade de ter dois ou mais valores do mesmo registro na tabela do item de lookup. Por exemplo, o registro “Faturas” no Demo tem vários campos de lookup (“Cliente”, “Endereço de Cobrança”, “Cidade de Cobrança”, e assim por diante) que possuem informações sobre um cliente, todas armazenadas em um único registro na tabela do item “Clientes”, descrevendo esse cliente. Para evitar a criação de campos desnecessários na tabela do item “Faturas”, armazenando a mesma referência a um registro, e criando JOIN s para cada um desses campos, todos os campos de lookup exceto “Clientes” têm o valor Campo Mestre apontando para o campo “Clientes”. Esses campos não têm campos correspondentes na tabela subjacente do banco de dados dos itens. O valor da sua propriedade de valor é sempre igual à propriedade de valor do campo mestre, e a consulta SQL gerada no servidor, quando o método open é chamado, utiliza uma única cláusula JOIN para todos esses campos.

Master field example

Quando o usuário clica no botão à direita do campo de entrada ou usa o tipo de pesquisa (typeahead), o aplicativo cria uma cópia do item de lookup do campo, define o atributo lookup_field para o campo, e dispara o evento on_field_select_value. Escreva esse manipulador de evento para especificar os campos que serão exibidos, configurar filtros para o item de lookup, antes que ele seja aberto e exibido para que o usuário selecione um valor para o campo.

O campo de lookup no item de lookup também pode ser um campo de lookup, por exemplo:

tracks_lookup_field_jampy.png

Para configurar tal campo, use os atributos Lookup field 2 e Lookup field 3.

Lista de valores

Às vezes, a fonte de um campo de lookup pode ser definida como uma lista de valores. Por exemplo, o campo MediaType no Cadastro Tracks do Projeto Demo tem o atributo Lookup value list configurado para a lista de lookup MediaTypes:

Definição do campo MediaType

Use o Lookup List Dialog da tarefa para definir tais listas de lookup.

Veja também

Campos de seleção

Listas de seleção