Shared Add In Stops Access 2003 Closing

T

twaddell

I have created a shared add-in in Visual Studio 2008 and using the shared
add-in wizard and am coding in VB. When run the add in in Access 2003 I want
to check if the user has a database open, so I set a AccessApplication
variable to be the application object in the OnConnection procedure and then
on a button click I check if AccessApplication.CurrentDB Is Nothing
If there is no database open Access will close correctly after the button is
clicked.
But if a database is open then I have to stop Access in the VS debugger.

Please find below my OnConnection, OnDisconnection and OnClick procedures
any help in this matter would be greatly appreciated.

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 = Nothing
MsgBox("Error")
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("Click Error")
AccessDB = Nothing
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top