Синхронизация данных в связанных формах
Пример синхронизации данных в двух связанных формах с помощью процедуры обработки события
Текущая запись
(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) с соответствующим условием отбора записей. При этом на самом деле форма не открывается, просто повторно запрашивается источник данных.
CompEbook.ru Железо, дизайн, обучение и другие