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
CategoryIDquando o campo subordinado tambémCategoryIDfor . - 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 categoriaCategoryID. -
cboProduct, onde o utilizador seleciona um produto.
Para filtrar os produtos pela categoria selecionada:
Abra o formulário na Vista Estrutura.
Selecione
cboProducte prima F4 para abrir a folha de propriedades.No separador Dados , defina Tipo de Origem da Linha para Tabela/Consulta.
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;Para este exemplo, defina Contagem de colunas como
3, Coluna vinculada a1e Largura das colunas como0";2";0". Estas definições fazem com que a caixa deCategoryIDcombinação retorneProductID, mostreProductNamee oculte.Defina as propriedades de ligação em
cboProduct.Propriedade Value Ligar campos principais cboCategoryLigar campos subordinados CategoryIDGuarde o formulário e mude para a Vista Formulário.
Selecione uma categoria e abra
cboProduct. A lista de produtos mostra apenas os produtos cujoCategoryIDvalor corresponde ao valor decboCategory.
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
Ligar mais de um campo
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.