Ir para o conteúdo

Função de Tempo de Execução Mvsql - Enum()

Resumo

A Função Enum em App Builder substitui a Chave Primária pela expressão Enum. A função Enum só pode ser usada para procurar valores em tabelas que tenham uma única Chave Primária definida (não mais do que uma PK) e que tenham uma de suas colunas marcadas como o tipo de uso Enum.

Um ENUM é um objeto de string com um valor escolhido de uma lista de valores permitidos que são enumerados explicitamente na especificação da coluna no momento da criação da tabela. A função Enum em App Builder pode ser usado para manter as regras criadas na camada de lógica de negócios legíveis por humanos. Usando Enum em App Builder é útil ao criar qualquer aplicativo no qual várias pessoas trabalharão, para ajudar a simplificar o entendimento das regras.

Quando a Função Enum é usada no mvSQL em uma cláusula Where ou uma instrução IIF, o painel SQL resultante na tela Business SQL para a Regra exibirá o valor da Chave Primária UUID (da tabela onde a coluna Enum reside). Isso pode ser útil ao confirmar que a Regra está substituindo os dados corretos.

Nota

A função Enum não pode ser usada em regras de migração.

Você deve preencher os dados da coluna Enum para que a função funcione corretamente (na Camada de Lógica de Negócios ou na Camada de UI do Aplicativo).

Sintaxe

enum(<LookupTableName>,'<EnumValue>')

Exemplo de Enum sendo usado em uma cláusula Where com múltiplos valores:

TableID IN (Enum(LookupTableName, 'EnumValue'), Enum(LookupTableName, 'EnumValue'), Enum(LookupTableName, 'EnumValue'), ...)

Parâmetros

Nome da Tabela de Pesquisa

O nome da tabela na qual procuraremos o valor enumerado.

Valor Enumerado

O valor na coluna do tipo enumerado. Deve ser uma string.

Devoluções

A Chave Primária é substituída pelo valor enum pesquisado na tabela de consulta em tempo de execução. O tipo com o qual ela é substituída depende do tipo da Chave Primária da tabela de consulta que está sendo examinada.

Observações

A função enum é normalmente usada na cláusula where, mas pode ser usada em outras partes da instrução mvSQL.

Exemplos

Exemplo #1

Neste exemplo, Enum é usado na tabela Status, depois adicionado a uma Regra de Lógica de Negócios existente (o Objeto Status (Origem)) e depois exposto à IU do Aplicativo no Painel de Várias Linhas de Status.

  1. Adicione a coluna Enum à tabela Status, defina o Tipo de Dados Lógicos como String e o Uso como Enum

    Enumtabledefinition

  2. Clique no botão Results para a tabela Status e especifique os valores para a coluna Enum

  3. Você pode criar uma nova Regra para aproveitar o valor Enum ou modificar uma existente. Neste exemplo, adicionaremos a coluna Enum à Regra Status (Source) existente

    EnumbusineSSLogic

  4. Com a coluna Enum adicionada a uma Regra, podemos adicioná-la à Camada de UI do Aplicativo para expô-la lá. Aqui, adicionamos como um Controle ao Painel de Várias Linhas de Status:

    Enumapp

Exemplo #2

Neste exemplo, Enum é usado na tabela EmployeeType e então adicionado a uma nova Rule usando a função Enum em uma cláusula Where (no mvSQL).

  1. Adicione a coluna Enum à tabela EmployeeType, defina o Logical Data Type como String e o Usage como Enum

    janela 2018 10 10 10 28 32

  2. Clique no botão Results para a tabela EmployeeType e especifique os valores para a coluna Enum. Como alternativa, você pode configurar uma página de configuração no aplicativo onde os usuários podem especificar esses valores ou expor a coluna como um controle para a interface do usuário do aplicativo e inserir os dados lá.

    janela 2018 10 10 10 25 17

  3. Você pode usar a função Enum em uma regra existente, mas neste exemplo criaremos uma nova regra visando a tabela Employee

    2018 10 10 13 48 23 window

  4. Na regra, adicionaremos a função Enum a uma cláusula Where no mvSQL

    janela 2018 10 10 10 25 49

Exemplo #3

Enum(EmployeeTypeLookup, 'Fulltime')

retorna a Chave Primária da EmployeeTypeLookupTable. Ex:

'17457c85-b0c9-4d45-8681-5ee566429ddd'

Usado em uma declaração mvSQL, a declaração típica onde isso seria usado é:

select * from Employee where EmployeeTypeId = enum(EmployeeTypeLookup,'Fulltime')

em vez de:

select * from Employee where EmployeeTypeId = '17457c85-b0c9-4d45-8681-5ee566429ddd'