2013-07-08 3 views
0

У меня есть много ведомых БД, которые запрашиваются мастер-БД. Я хотел бы иметь возможность контролировать и быстро получать доступ к подчиненным БД, их формам и всем, из одной формы основной БД.Внедрение другой БД доступа в форме

Я надеялся, что могу просто создать элемент управления вкладкой в ​​форме в основной БД, причем каждое окно MS Access подчиненного БД встроено в каждую страницу этой вкладки.

Возможно ли это?

+0

Нет, это невозможно напрямую. – Rikalous

ответ

0

Вы не можете вставить окно приложения внутри подформы. Чтобы использовать формы других 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, чтобы вы только отслеживали некоторые данные. Преимущество здесь в том, что вы можете сами решить, что хотите делать, когда отображаются данные - другое решение означает, что вы открываете форму со всей ее «домашней функциональностью» в ведомой БД без контроля над содержимым.

1

Вам нужно будет разработать способ создания формы, которая показывает, что вас интересует, и подключить экземпляр формы к каждому ведомому БД и поместить его на каждую вкладку.

Смежные вопросы