Я создал общую надстройку в Visual Studio 2008 и использую общую
Мастер надстроек и пишу в VB. При запуске надстройки в Access 2003 я хочу
чтобы проверить, есть ли у пользователя открытая база данных, я установил AccessApplication
переменная, чтобы быть объектом приложения в процедуре OnConnection, а затем
при нажатии кнопки я проверяю, является ли AccessApplication.CurrentDB пустым
Если база данных не открыта, Access закроется правильно после нажатия кнопки.
щелкнул.
Но если база данных открыта, то я должен остановить доступ в отладчике VS.
Ниже приведены мои процедуры OnConnection, OnDisconnection и OnClick.
любая помощь в этом вопросе будет принята с благодарностью.
Public Sub OnDisconnection(ByVal RemoveMode As Extensibility.ext_DisconnectMode, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnDisconnection
m_oTestMenu.Delete()
m_oTestBtn.Delete()
m_oTestMenu = Nothing
m_oTestBtn = Nothing
AccessApplication = Nothing
End Sub
Public Sub OnConnection(ByVal application As Object, ByVal connectMode As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnConnection
Dim oCommandBars As Microsoft.Office.Core.CommandBars
On Error GoTo ErrHandler
AccessApplication = CType(application, Microsoft.Office.Interop.Access.Application)
oCommandBars = AccessApplication.CommandBars
' Add the menu to the existing menu list
m_oTestMenu = AddMenu(oCommandBars, "Test", "Test")
' Now create menu options
m_oTestBtn = AddMenuButton(m_oTestMenu, _
"TestBtn", MsoButtonStyle.msoButtonIconAndCaption, "Test Btn", MsoButtonState.msoButtonUp)
' Clean up
oCommandBars = Nothing
Exit Sub
ErrHandler:
oCommandBars = ничего
MsgBox ( "Ошибка")
End Sub
Private Sub m_oTestBtn_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, ByRef CancelDefault As Boolean) Handles m_oTestBtn.Click
Dim AccessDB As dao.Database
On Error GoTo ErrHandler
AccessDB = AccessApplication.CurrentDb
MsgBox("DB Found " & AccessDB.Name)
'Try To Close Everything
AccessDB.Close()
AccessDB = Nothing
AccessApplication.CurrentDb.Close()
AccessApplication = Nothing
Exit Sub
ErrHandler:
MsgBox («Ошибка клика»)
AccessDB = ничего
End Sub