Синхронизация двух полей со списком в форме в Microsoft Access

В этой статье описывается, что свойство AfterUpdate выполняет процедуру события при выборе категории в первом поле со списком.

Оригинальный номер базы знаний: 289670

Примечание.

Требуются базовые навыки работы с кодом, макросами и взаимодействия. Эта статья относится к базе данных Microsoft Access (.mdb/.accdb) и к проекту Microsoft Access (ADP).

Сводка

В этой статье описывается, как синхронизировать два поля со списком, чтобы при выборе элемента в первом поле со списком выбор ограничивает выбор во втором поле со списком.

Примечание.

В этой статье описывается метод, демонстрирующийся в примере файла, FrmSmp00.mdb.

Дополнительные сведения

В следующем примере используется пример Northwind.mdb базы данных. В первом поле со списком перечислены доступные категории продуктов, а во втором — доступные продукты для категории, выбранной в первом поле со списком:

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена.

  1. Откройте пример Northwind.mdb базы данных.

  2. Создайте новую форму, которая не основана ни на одной таблице или запросе со следующими полями со списком, а затем сохраните форму как категории и продукты.

    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"
    

    Примечание.

    Если вы находитесь в проекте Access, RowSourceType будет иметь значение Table/View/StoredProc.

  3. Добавьте следующий код в процедуру события AfterUpdate в поле со списком Категории:

    Me.Products.RowSource = "SELECT ProductName FROM" & _
       " Products WHERE CategoryID = " & Me.Categories & _
       " ORDER BY ProductName"
    Me.Products = Me.Products.ItemData(0)
    
  4. Просмотрите форму "Категории и продукты" в представлении "Форма".

    Примечание.

    При выборе категории в первом поле со списком второе поле со списком обновляется, чтобы вывести список только доступных продуктов для выбранной категории.

Заметки

В этом примере второе поле со списком заполняется результатами инструкции SQL. Эта инструкция SQL находит все продукты с идентификатором CategoryID, соответствующим категории, выбранной в первом поле со списком.

При выборе категории в первом поле со списком AfterUpdate свойство выполняет процедуру события, которая задает свойство второго поля RowSource со списком. При этом список доступных продуктов обновляется во втором поле со списком. Без этой процедуры содержимое второго поля со списком не изменится.