[AccessD] Access Lock File problem

Dan Waters dwaters at usinternet.com
Wed May 27 12:19:22 CDT 2009


Janet,

I'd suggest automatically compacting the BE.  The code below will open your
BE file, and then close it.  If the BE file has Compact on Close checked, it
will be compacted when it closed.

1) In your BE mdb file, check 'Compact on Close'.
2) Create a new Access database called AutoCompactBE.mdb.  Put it in an
appropriate place on your server.
3) Create a standard module in that database.
4) Paste in the code below.  Enter in the path to your BE.
5) From the code window, check the reference for 'Microsoft Scripting
Runtime'.
6) Create an AutoExec macro that runs the CompactBE function.
7) Create a Windows scheduled task to open the AutoCompactBE.mdb file at a
time each night when no one else is logged in.
8) Test!

Code for standard module:

'----------------------------------------------
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Function CompactBE()
On Error GoTo EH

    Dim stgPathBEFile As String
    Dim stgPathBELDB As String
    Dim appAccess As Access.Application
    Dim fso As FileSystemObject
    Dim stg As String
    Dim rst As DAO.Recordset

'    Stop
    
'    stg = "SELECT BEFullPath FROM tblBEFullPath"
'    Set rst = DBEngine(0)(0).OpenRecordset(stg, dbOpenSnapshot)
'    stgPathBEFile = rst("BEFullPath")
'    rst.Close
'    Set rst = Nothing

    stgPathBEFile = "C:\Folder\Folder\YourBackendFile.mdb"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    '-- If the BE file is in use then the BE can't be compacted
    stgPathBELDB = Replace(stgPathBEFile, "mdb", "ldb")
    If fso.FileExists(stgPathBELDB) Then
        Access.Application.Quit acQuitSaveNone
        Exit Function
    End If

    Set appAccess = New Access.Application
    
    appAccess.OpenCurrentDatabase stgPathBEFile, False
    
    Sleep 5000
    
    '-- When the BE closes it will auto-compact.
    appAccess.CloseCurrentDatabase
    
    Sleep 5000
            
    appAccess.Quit acQuitSaveNone
    Set appAccess = Nothing
    
    DoEvents
    
    Access.Application.Quit acQuitSaveNone

    Exit Function
    
EH:
    Access.Application.Quit acQuitSaveNone
    
End Function
'------------------------------------------------

Good Luck!
Dan

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Janet Erbach
Sent: Wednesday, May 27, 2009 11:25 AM
To: Access Developers discussion and problem solving
Subject: [AccessD] Access Lock File problem

Dear Forum Folks:

We have an access order management application here that has a front-end
installed on 10 computers and a back-end that resides on the server.  We
compact/backup the back-end mdb every day - usually with no problem.  But
the compact/back-end, of course requires that only ONE computer can be
accessing the back-end mdb, and every once in awhile the person running the
compact forgets to close out the app on one of the computers.  When that
happens it seems like the lock file gets 'locked' for good;  even after
making sure EVERYONE is out of the app, access thinks the mdb is locked.

The only solution I've found so far is to re-boot the server and then delete
the lock file.  This seems like an in-elegant and time-wasting solution to
me;  is there some setting I'm missing in Access that's causing this issue?
Is there some other way I can release the ldb file without having to
re-boot?

Thanks!

Janet Erbach
IT Prognosticator
Natural Healthy Concepts
-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com





More information about the AccessD mailing list