Saltar para o conteúdo principal

Ligação a tabela

Referência de configuração: Ligação a tabela

Visão geral​

O componente Ligação a tabela cria uma relação entre duas features. Em vez de uma lista estática de opções, o menu pendente é preenchido dinamicamente com os registos de outra feature. É assim que se criam relações de chave estrangeira no OutDo.

Exemplo: Uma feature "Encomendas" com uma coluna de Ligação a tabela que aponta para "Clientes" — ao criar uma encomenda, o utilizador escolhe um cliente a partir da lista de clientes.

Associar a outra feature​

Configuração principal​

DefiniçãoDescrição
Tabela interligadaA feature de origem de onde são obtidas as opções
Coluna de IDA coluna da feature de origem cujo valor é guardado (normalmente o ID)
Coluna de textoA coluna da feature de origem apresentada ao utilizador (ex.: "Nome do Cliente")
Permitir múltipla seleçãoPermite selecionar vários registos ligados
Ordenar alfabeticamenteOrdena automaticamente as opções pela coluna de texto (predefinição: ativado)
Texto de placeholderTexto de indicação personalizado para o menu pendente
Valor defaultValor pré-selecionado para novos registos

Estilo de seleção​

DefiniçãoOpções
Estilo de seleçãoMenu pendente (predefinição) — a lista pendente de seleção múltipla padrão. Autocompletar — um campo de pesquisa onde o utilizador escreve para filtrar e escolher uma sugestão, em vez de abrir a lista completa.

O autocompletar só altera a superfície editável (vistas de formulário / default / calendário); as vistas só de leitura (tabela/lista/kanban/documento) não são afetadas em nenhum dos casos.

No telemóvel, a seleção única (nos dois estilos e na edição em linha da tabela) abre uma folha a partir do fundo do ecrã, sempre com o campo de pesquisa, que procura também nas colunas extra.

Filtragem de opções​

DefiniçãoDescrição
Filtrar opçõesUma lista de condições (coluna + operador + origem do valor) avaliadas contra as linhas da feature ligada. Só as linhas que passam todas as condições aparecem como opções selecionáveis.

Os operadores disponíveis dependem do tipo da coluna escolhida: além dos universais Vazio, Não vazio, Em e Não em, aparecem os operadores próprios do componente dessa coluna - por exemplo, uma coluna numérica oferece Maior que, Menor que e Entre, uma coluna de texto oferece Contém. Uma condição criada antes desta funcionalidade continua a funcionar: um operador antigo já gravado (ex.: "Preenchido") mantém-se selecionado, fora desta lista, e continua a ser avaliado normalmente. A filtragem acontece em memória, antes da ordenação alfabética, por isso restringe as opções do menu pendente/autocompletar sem tocar nos dados subjacentes.

Uma condição sem valor preenchido não filtra nada - fica como se não existisse, tal como no diálogo avançado "Os meus filtros".

Para os operadores que precisam de um valor (exceto Entre), cada condição tem um seletor de Origem:

  • Valor fixo (predefinição) - o campo de valor acompanha o tipo da coluna escolhida: uma coluna do tipo Lista ou Ligação a tabela mostra as suas opções, uma coluna numérica mostra um campo numérico (com Mín/Máx para o operador Entre), uma coluna de data mostra um seletor de data. Só volta a ser texto livre quando a coluna não corresponde a nenhum componente tipado (por exemplo, coluna ainda por escolher).
  • Coluna deste registo - o valor vem de outra coluna do registo em edição, criando um filtro em cascata. Não está disponível para o operador Entre: uma coluna do registo dá sempre um único valor, nunca um Mín e um Máx, por isso a origem fica presa em Valor fixo nesse caso. Ver Filtro em cascata (drill-down) abaixo.

Filtro em cascata (drill-down)​

Com a origem Coluna deste registo, o valor de uma condição deixa de ser um texto fixo e passa a vir de outra coluna do próprio registo que está a ser editado. Isto permite construir listas em cascata: escolher um valor num campo restringe automaticamente as opções de outro campo, ligado a uma feature diferente.

Exemplo — fase e sub-fase de um projeto:

  • Feature Fase, com a coluna nome.
  • Feature Sub-fase, com as colunas nome e fase mãe (Ligação a tabela → Fase).
  • Feature Projeto, com as colunas fase (Ligação a tabela → Fase) e sub-fase (Ligação a tabela → Sub-fase).

Na coluna sub-fase do Projeto, cria-se a condição:

ColunaOperadorOrigemColuna deste registo
Fase mãeIgual aColuna deste registoFase

Resultado: ao escolher a fase de um projeto, a lista de opções de sub-fase mostra só as sub-fases dessa fase.

Comportamento:

  • Funciona tanto no formulário do registo como na edição direta da célula na tabela.
  • Se a coluna-fonte ainda estiver vazia (a fase por escolher), a lista de sub-fases aparece vazia — obriga a preencher os campos de cima para baixo.
  • Ao mudar a coluna-fonte (ex.: trocar de fase), se a sub-fase já escolhida deixar de pertencer à nova fase, a seleção é limpa automaticamente.
  • Uma opção já gravada nunca desaparece silenciosamente do ecrã: se o filtro passar a excluí-la (ou a coluna-fonte estiver vazia), continua visível — marcada "(fora do filtro)" — até ser substituída ou limpa pela mudança da fase.

Condições criadas antes desta funcionalidade continuam com a origem em "Valor fixo" e o valor gravado intacto — nada muda para quem já usa filtros de valor fixo.

Colunas de apresentação adicionais​

Até 2 colunas adicionais da feature ligada podem ser mostradas como texto secundário em cada item do menu pendente e nos chips da vista de tabela (compostas no rótulo, separadas por " · "). Útil quando a coluna de texto sozinha não chega para distinguir dois registos semelhantes — por exemplo, mostrar a cidade de um cliente junto ao nome.

Pré-visualização (Peek)​

DefiniçãoDescrição
Permitir pré-visualizaçãoMostra um pequeno ícone junto ao valor selecionado (vista de formulário) que abre um popover leve, só de leitura, com os campos principais da linha referenciada — sem sair do formulário atual.

Criação e edição em linha​

DefiniçãoDescrição
Mostrar botão de adicionarMostra um botão para criar um novo registo na feature ligada sem sair do formulário atual
Mostrar botão de editarMostra um botão para editar o registo ligado selecionado
Mostrar no formulárioMostra os botões de adicionar e editar no formulário do registo (ligado por omissão)
Mostrar na tabelaMostra os botões de adicionar e editar na célula da tabela, também com edição em linha (ligado por omissão)

Estes botões aparecem junto ao menu pendente e abrem o formulário da feature ligada num diálogo — permitindo aos utilizadores adicionar novos clientes, produtos ou qualquer entidade referenciada sem sair do ecrã atual.

Na vista de tabela, os mesmos botões aparecem na célula, à direita do chip, e mantêm-se quando a coluna tem edição em linha. O + cria o novo registo e liga-o logo nessa célula, mesmo que esteja vazia; o lápis abre o registo ligado.

Integridade referencial​

Protege a consistência dos dados quando os registos são referenciados:

DefiniçãoDescrição
Forçar integridade referencialImpede a eliminação de registos ligados que estejam referenciados por esta coluna
Ação ao eliminar registo relacionadoO que acontece quando um registo referenciado é eliminado — "restrict" impede a eliminação
Mensagens de erro personalizadasTexto personalizado apresentado quando as restrições de integridade são violadas

Exemplo: Se uma encomenda referencia um cliente, ativar a integridade referencial impede a eliminação desse cliente enquanto a encomenda existir. O utilizador vê um erro a explicar quais os registos que dependem dele.

Ligação inversa​

A secção Ligação inversa das definições cria, num clique, uma coluna Ligação inversa na feature ligada, que lista os registos desta feature que apontam para cada registo de lá. Depois de criada, a secção mostra a coluna e o botão Abrir.

Apresentação nas vistas​

Nos formulários, a Ligação a tabela aparece como um menu pendente pesquisável. Os utilizadores podem escrever para filtrar as opções. Nas tabelas, o valor é apresentado num chip; quando existem colunas de apresentação adicionais, são acrescentadas ao mesmo chip, separadas por " · ". Nas listas, é apresentado o valor da coluna de texto da feature ligada.