Вы не можете вставить окно приложения внутри подформы. Чтобы использовать формы других dbs, вы можете создать там стандартный модуль и вставить открытую функцию, которая возвращает объект формы. Так что если у вас есть форма «frmTest» в подчиненном дб, который вы непосредственно хотите открыть в мастер дб вы можете написать публичную функцию так:
Public Function GetFrmTest1() As Form_frmTest
Set GetFrmTest1 = New Form_frmTest
End Function
Этот метод работает только если у вас есть код в модуле , если это не так, вы можете использовать общий «Access.Form» как тип вместо «Form_frmTest».
В мастер-db вы можете открыть эту форму сейчас. Для этого вы можете открыть справочное окно в редакторе VBA и нажать «Обзор», затем выполнить поиск местоположения ведомого db и добавить его в качестве ссылки.
В мастер дб теперь вы можете открыть его с:
Dim frm As Access.Form ' Here you can only use the generic Form object
Set frm = GetFrmTest1
frm.Visible = True
Это откроет внешний вид вашей основной БД. Но, конечно, вам нужна функция, чтобы вернуть объект формы в основную базу данных в любом ведомом db. Вы также можете вернуть любую форму с одной функцией, как это:
Public Function GetForm(strFormName As String) As Access.Form
Select Case strFormName
Case "frmTest1"
Set GetForm = Form_frmTest1
Case "frmTest2"
Set GetForm = Form_frmTest2
...
End Select
End Function
В результате вы можете использовать формы каждого подчиненного дб в основной БД, но вы должны сделать навигацию по своему усмотрению.
Другая возможность - создать новые формы в master db и добавить только связанные таблицы в ведомые dbs, чтобы вы только отслеживали некоторые данные. Преимущество здесь в том, что вы можете сами решить, что хотите делать, когда отображаются данные - другое решение означает, что вы открываете форму со всей ее «домашней функциональностью» в ведомой БД без контроля над содержимым.
Нет, это невозможно напрямую. – Rikalous