Como sincronizar duas caixas de combinação num formulário no Microsoft Access

Este artigo descreve que a propriedade AfterUpdate executa um procedimento de evento quando seleciona uma categoria na primeira caixa de combinação.

Número original da BDC: 289670

Nota

Necessita de competências básicas de macro, programação e interoperabilidade. Este artigo aplica-se a uma base de dados do Microsoft Access (.mdb/.accdb) e a um projeto do Microsoft Access (.adp).

Resumo

Este artigo descreve como sincronizar duas caixas de combinação para que, quando seleciona um item na primeira caixa de combinação, a seleção limite as escolhas na segunda caixa de combinação.

Nota

Este artigo explica uma técnica demonstrada no ficheiro de exemplo, FrmSmp00.mdb.

Mais Informações

O exemplo seguinte utiliza a base de dados de exemplo Northwind.mdb. A primeira caixa de combinação lista as categorias de produtos disponíveis e a segunda caixa de combinação lista os produtos disponíveis para a categoria selecionada na primeira caixa de combinação:

A Microsoft fornece exemplos de programação apenas a título informativo, sem qualquer garantia expressa ou implícita, incluindo, sem limitações, as garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que o utilizador está familiarizado com a linguagem de programação demonstrada e as ferramentas utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às suas necessidades específicas.

  1. Abra a base de dados de exemplo Northwind.mdb.

  2. Crie um novo formulário que não se baseie em nenhuma tabela ou consulta com as seguintes caixas de combinação e, em seguida, guarde o formulário como Categorias e Produtos.

    Combo Box 1
    -------------------------------
    Name:          Categories
    RowSourceType: Table/Query
    RowSource:     Categories
    ColumnCount:   2
    ColumnWidths:  0";1"
    BoundColumn:   1
    AfterUpdate:   [Event Procedure]
    
    Combo Box 2
    --------------------------
    Name:          Products
    RowSourceType: Table/Query
    ColumnWidths:  2"
    Width:         2"
    

    Nota

    Se estiver num projeto do Access, o RowSourceType será Table/View/StoredProc.

  3. Adicione o seguinte código ao procedimento de evento AfterUpdate da caixa de combinação Categorias:

    Me.Products.RowSource = "SELECT ProductName FROM" & _
       " Products WHERE CategoryID = " & Me.Categories & _
       " ORDER BY ProductName"
    Me.Products = Me.Products.ItemData(0)
    
  4. Veja o formulário Categorias e Produtos na vista Formulário.

    Nota

    Quando seleciona uma categoria na primeira caixa de combinação, a segunda caixa de combinação é atualizada para listar apenas os produtos disponíveis para a categoria selecionada.

Notas

Neste exemplo, a segunda caixa de combinação é preenchida com os resultados de uma instrução SQL. Esta instrução SQL localiza todos os produtos que têm um CategoryID que corresponde à categoria selecionada na primeira caixa de combinação.

Sempre que uma categoria é selecionada na primeira caixa de combinação, a AfterUpdate propriedade executa o procedimento de evento, que define a propriedade da RowSource segunda caixa de combinação. Esta ação atualiza a lista de produtos disponíveis na segunda caixa de combinação. Sem este procedimento, o conteúdo da segunda caixa de combinação não seria alterado.