Синхронизация данных в связанных формах

Пример синхронизации данных в двух связанных формах с помощью процедуры обработки события Текущая запись (Current) можно увидеть в модуле формы "Поставщики" (Supplier). В форме есть кнопка Просмотр товаров (Review Products), при нажатии на которую выводится форма "Список товаров" (Product List), показывающая товары данного поставщика. Естественно, что при переходе к новой записи в форме "Поставщики" (Supplier), записи в форме "Список товаров" (Product List) тоже должны быть сменены. Процедура выглядит следующим образом:

 Private Sub Form_Current() On Error GoTo Err_Form_Current 

' Отображение товаров текущего поставщика при открытии формы "Список ' товаров".

 Dim strDocName As String Dim strLinkCriteria As String strDocName = "Список товаров" strLinkCriteria = "[КодПоставщика] = Forms![Поставщики]![КодПоставщика]" If IsNull(Me![Название]) Then Exit Sub Elself IsLoaded("Список товаров") Then DoCmd.OpenForm strDocName, , , strLinkCriteria End if Exit_Form_Current: Exit Sub Err_Form_Current: MsgBox Err.Description Resume Exit_Form_Current End Sub 

Если текущая запись в форме "Поставщики" (Supplier) пустая, т. е. добавляется новая запись, то сразу выполняется выход из процедуры. Если текущая запись отображает конкретного поставщика, то проверяется, загружена ли форма "Список товаров" (Product List). Если форма загружена, то меняется набор записей в ней. Делается это с помощью макрокоманды ОткрытьФорму(OpenForm) с соответствующим условием отбора записей. При этом на самом деле форма не открывается, просто повторно запрашивается источник данных.