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