Access 2002

«Зависимая» подчиненная форма           


«Зависимая» подчиненная форма через свойства LinkChildFields и LinkMasterFields связывается с текстовым полем, заполняемым «главной» подчиненной формой. В нашем примере этим свойствам присвоены значения OrderlD и txtLink соответственно. В результате, когда пользователь переходит от строки к строке в форме frmSubformSynchOrders, форма frmNestedOrderDetail показывает записи с тем же значением поля OrderlD, что и в выбранной строке из формы frmSubformSynchOrders.

Эту схему можно расширять до бесконечности. Если бы с таблицей tblOrderDetails была связана еще одна подчиненная таблица, можно было бы поместить для нее в форму frmSubformSynch еще одну подчиненную форму и связать ее с формой frmNestedOrderDetail так же, как та связана с frmSubformSynchOrders. Обработчики событий Current и AfterUpdate формы frmNestedOrderDetail заполняли бы еще одно скрытое текстовое поле в главной форме, с которым связана последняя подчиненная форма.

Зачем нужно вызывать тот же самый код обработчиков событий Current и AfterUpdate формы? Поскольку процедура события Current запускается только при переходе к новой записи, код процедуры обработки этого события не будет вызван, если вы добавите новую запись в одну подчиненную форму и, щелкнув мышью, сразу перейдете в другую подчиненную форму. В этом случае нужно, чтобы код запускался даже до перехода к новой записи. Событие AfterUpdate возникает при выходе из подчиненной формы и таким образом приводит к обновлению связывающих полей, даже если переход к новой записи не был осуществлен. В предыдущем издании книги данный пример не содержал этого дополнительного фрагмента кода, вследствие чего в формах могли остаться одиночные записи или несоответствующие данные.

Комментарии закрыты