Criar caixas de combinação e caixas de listagem em cascata no Access

Aplica-se A
Access para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Utilize controlos em cascata quando o valor selecionado numa caixa de combinação ou caixa de listagem determinar as opções noutra. Por exemplo, selecionar uma categoria de produto pode limitar uma lista de produtos a produtos nessa categoria.

As propriedades Ligar Campos Principais eLigar Campos Subordinados permitem ao Access filtrar automaticamente uma caixa de combinação ou caixa de listagem dependente. Não precisa de criar um procedimento de evento Depois de Atualizar apenas para repetir a consulta do controlo dependente.

Compreender os campos principal e subordinado

Defina as propriedades de ligação na caixa de combinação dependente ou na caixa de listagem.

Propriedade Descrição
Ligar campos principais O campo ou controlo no formulário que fornece o valor utilizado para filtrar o controlo dependente.
Ligar campos subordinados O campo na origem de linha do controlo dependente que o Access compara com o valor principal.

Quando o valor principal é alterado, o Access atualiza o controlo dependente e apresenta apenas linhas com valores de campos subordinados correspondentes.

Antes de criar a ligação, certifique-se de que:

  • O controlo principal devolve o valor que o campo subordinado contém. Por exemplo, uma caixa de combinação de categoria deverá devolver CategoryID quando o campo subordinado também CategoryIDfor .
  • O campo subordinado está incluído na Origem da Linha do controlo dependente. O campo subordinado pode ser ocultado na lista, mas tem de fazer parte da origem da linha.
  • Os campos principal e subordinado utilizam tipos de dados compatíveis.

Para obter mais informações sobre como criar controles de lista e definir suas fontes de linha, consulte Adicionar uma caixa de listagem ou caixa de combinação.

Filtrar produtos por categoria

Suponha que um formulário de encomenda contém estas caixas de combinação:

  • cboCategory, onde o utilizador seleciona uma categoria de produto. Seu valor é o da categoria CategoryID.
  • cboProduct, onde o utilizador seleciona um produto.

Para filtrar os produtos pela categoria selecionada:

  1. Abra o formulário na Vista Estrutura.

  2. Selecione cboProducte prima F4 para abrir a folha de propriedades.

  3. No separador Dados , defina Tipo de Origem da Linha para Tabela/Consulta.

  4. Defina Origem da Linha para uma consulta ou instrução SQL que inclua o campo utilizado para ligar os controlos. Por exemplo:

    SELECT ProductID, ProductName, CategoryID
    FROM Products
    ORDER BY ProductName;
    
  5. Para este exemplo, defina Contagem de colunas como 3, Coluna vinculada a 1e Largura das colunas como 0";2";0". Estas definições fazem com que a caixa de CategoryIDcombinação retorneProductID, mostre ProductNamee oculte.

  6. Defina as propriedades de ligação em cboProduct.

    Propriedade Value
    Ligar campos principais cboCategory
    Ligar campos subordinados CategoryID
  7. Guarde o formulário e mude para a Vista Formulário.

  8. Selecione uma categoria e abra cboProduct. A lista de produtos mostra apenas os produtos cujo CategoryID valor corresponde ao valor de cboCategory.

O Access pode utilizar o campo oculto CategoryID para filtrar as linhas porque o campo permanece na origem da linha.

Utilizar caixas de listagem em cascata

As propriedades Ligar Campos Principais eLigar Campos Subordinados funcionam da mesma forma com as caixas de listagem. Defina as propriedades na caixa de listagem dependente e certifique-se de que a respetiva origem de linha inclui o campo subordinado.

Pode utilizar caixas de combinação ligadas e caixas de listagem para cenários como:

  • Departamentos, equipas e funcionários
  • Clientes e encomendas
  • Projetos e tarefas
  • Categorias de produtos e produtos

Se os registos estiverem relacionados por mais do que um campo, introduza nomes separados por vírgulas em ambas as propriedades de ligação. O Access faz corresponder os campos pela respetiva posição em cada lista.

Por exemplo:

Propriedade Value
Ligar campos principais CompanyID, LocationID
Ligar campos subordinados CompanyID, LocationID

Ambas as listas têm de conter o mesmo número de entradas. Cada campo principal tem de ter um tipo de dados compatível com o campo subordinado na posição correspondente.

Utilizar controlos em cascata em formulários contínuos

As caixas de combinação ligadas e as caixas de listagem também funcionam em formulários contínuos. O Access filtra o controlo dependente para cada registo visível ao utilizar o valor principal desse registo. Não precisa do código de evento para repetir a consulta de cada linha de forma independente.

Resolver problemas de controlos em cascata

Problema O que verificar
As propriedades de ligação não aparecem no separador Dados . Certifique-se de que o Access está atualizado para a Versão 2609 (compilação 20430.20092) ou posterior.
O controlo dependente está vazio. Confirme que o controlo principal tem um valor, que existem registos correspondentes, que o campo subordinado está incluído na origem da linha e que os valores principal e subordinado utilizam tipos de dados compatíveis.
O controlo dependente mostra escolhas inesperadas. Confirme se as propriedades de ligação estão definidas no controlo dependente e se o controlo principal devolve o valor chave armazenado no campo subordinado.
Uma ligação de múltiplos campos não funciona. Certifique-se de que ambas as propriedades contêm o mesmo número de campos, por ordem correspondente, com tipos de dados compatíveis.

Os controlos em cascata existentes que utilizam VBA ou macros continuam a funcionar. Utilize as propriedades de ligação como uma alternativa declarativa quando apenas precisa de filtrar um controlo de valores disponíveis no formulário.

Atualizar Acesso

Para verificar se há uma compilação mais recente do Canal Atual, selecione Opçõesde Atualização> daConta>de Arquivo>Atualizar Agora. Depois de instalar a compilação mais recente, a funcionalidade ainda poderá demorar mais tempo a ser apresentada à medida que a implementação se expande.