ACC: Problems Quitting Microsoft Access (164455)
The information in this article applies to:
- Microsoft Access for Windows 95 7.0
- Microsoft Access 97
This article was previously published under Q164455 Moderate: Requires basic macro, coding, and interoperability
skills.
SYMPTOMS When you click Exit on the File menu in Microsoft Access,
Access does not quit.
This article assumes that you are familiar
with Visual Basic for Applications and with creating Microsoft Access
applications using the programming tools provided with Microsoft Access. For
more information about Visual Basic for Applications, please refer to your
version of the "Building Applications with Microsoft Access" manual.
CAUSE There are two possible causes for this problem:
- You are using Microsoft Access as an automation server, and
you have not closed all references to Microsoft Access or Data Access Objects
(DAO).
- You have not explicitly closed all DAO recordsets or query
definitions in your Microsoft Access database. If you are using Visual Basic
for Applications code to manipulate recordsets, QueryDefs, or recordset clones
(on forms), in some cases you must explicitly close the object; otherwise,
Microsoft Access does not close.
RESOLUTION When you use Microsoft Access as an automation server,
invoke the Quit method to explicitly close the Microsoft Access object when you
are finished with it in your code, and then set its object variable equal to
Nothing, for example:
Sub CloseAccess()
Dim objAccess As Object
Set objAccess = CreateObject("Access.Application")
objAccess.Visible = True
Msgbox "Microsoft Access is open; this procedure will now close it."
objAccess.Quit
Set objAccess = Nothing
End Sub
When you create Recordset or QueryDef objects in code, explicitly close
the object when you are finished with it. Microsoft Access automatically closes
those types of objects under most circumstances; however, if you explicitly
close the object in your code, you can avoid occasional instances when the
object remains open. The following sample code opens and closes a Recordset and
a QueryDef object in the Northwind sample database:
Sub CloseObjects()
Dim db As Database
Dim rs As Recordset
Dim qd As QueryDef
Set db = CurrentDb
Set rs = db.OpenRecordset("Employees", dbOpenTable)
Set qd = db.QueryDefs("Invoices")
rs.MoveLast
MsgBox "The Employees recordset is open." & vbcr & _
"The last Employee ID is " & rs![EmployeeID] & "."
Msgbox "The Invoices query definition is open." & vbcr & _
"The first field in the query is " & qd.Fields(0).Name
' Explicitly close the Recordset and QueryDef objects.
rs.Close
qd.Close
End Sub
REFERENCES For more information about using Microsoft Access as an
automation server, search the Help Index for "Automation," and please see the
following articles in the Microsoft Knowledge Base: 147816
ACC: Using Microsoft Access as an Automation Server
145707
ACC: Using Automation to Print Microsoft Access Reports
Modification Type: | Minor | Last Reviewed: | 10/11/2006 |
---|
Keywords: | kbprb kbProgramming kbusage KB164455 |
---|
|