From an Access performance FAQ:
__________________________________________________________________________________________________________________________
(LDB locking which a persistent recordset connection fixes)
When the symptoms encountered indicate that performance is acceptable with a single user in the database but drops significantly when two or more users are in the database, the problem may be caused by interaction with the LDB file.
In Access 2000, when a second and subsequent user tries to access a shared backend database on the server, there seems to be a situation where Access tries to perform a delete on the LDB file (which fails because another user is currently in the file). This attempt is made about 15 times before silently failing and the records are returned from the linked table.
To resolve this issue we need a persistent connection to the back-end from each of the front-end workstations. This can be done using a bound form which is always open or by keeping a recordset open at all times..
__________________________________________________________________________________________________________________________
This is basically the exact symptom that I've come across, and I'm having a little trouble understanding the solution:
__________________________________________________________________________________________________________________________
Global Recordset which is always open
Alternatively you can create a dummy (test) table in the backend file and create code in the front-end file which opens a recordset on this table and persist the recordset until the front-end app is closed. To do so:
Create an empty form. .
Declare a recordset variable in the global declarations section.
__________________________________________________________________________________________________________________________
I haven't worked with forms much (I'm using access pages). Where is the global declarations section? What does it mean by "recordset variable"?
__________________________________________________________________________________________________________________________
In the OnOpen event open a recordset against any table.
__________________________________________________________________________________________________________________________
I don't understand this.
__________________________________________________________________________________________________________________________
In the OnClose event, which will fire when the MDB is closed, close the recordset and Set variable to nothing
Ensure you always open this form when opening the MDB. You will likely want to open this form hidden.
Maintaining persistent connections to linked tables could improve performance significantly because it prevents Microsoft Jet from constantly deleting, creating, and obtaining locking information from the other database's locking information file.
Public rsAlwaysOpen As Recordset
Private Sub Form_Close()
rsAlwaysOpen.Close
Set rsAlwaysOpen = Nothing
End Sub
Private Sub Form_Open(Cancel As Integer)
Set rsAlwaysOpen = CurrentDb.OpenRecordset("DummyTable"
End Sub
__________________________________________________________________________________________________________________________
If someone could help simplify this, it would be much appreciated.
__________________________________________________________________________________________________________________________
(LDB locking which a persistent recordset connection fixes)
When the symptoms encountered indicate that performance is acceptable with a single user in the database but drops significantly when two or more users are in the database, the problem may be caused by interaction with the LDB file.
In Access 2000, when a second and subsequent user tries to access a shared backend database on the server, there seems to be a situation where Access tries to perform a delete on the LDB file (which fails because another user is currently in the file). This attempt is made about 15 times before silently failing and the records are returned from the linked table.
To resolve this issue we need a persistent connection to the back-end from each of the front-end workstations. This can be done using a bound form which is always open or by keeping a recordset open at all times..
__________________________________________________________________________________________________________________________
This is basically the exact symptom that I've come across, and I'm having a little trouble understanding the solution:
__________________________________________________________________________________________________________________________
Global Recordset which is always open
Alternatively you can create a dummy (test) table in the backend file and create code in the front-end file which opens a recordset on this table and persist the recordset until the front-end app is closed. To do so:
Create an empty form. .
Declare a recordset variable in the global declarations section.
__________________________________________________________________________________________________________________________
I haven't worked with forms much (I'm using access pages). Where is the global declarations section? What does it mean by "recordset variable"?
__________________________________________________________________________________________________________________________
In the OnOpen event open a recordset against any table.
__________________________________________________________________________________________________________________________
I don't understand this.
__________________________________________________________________________________________________________________________
In the OnClose event, which will fire when the MDB is closed, close the recordset and Set variable to nothing
Ensure you always open this form when opening the MDB. You will likely want to open this form hidden.
Maintaining persistent connections to linked tables could improve performance significantly because it prevents Microsoft Jet from constantly deleting, creating, and obtaining locking information from the other database's locking information file.
Public rsAlwaysOpen As Recordset
Private Sub Form_Close()
rsAlwaysOpen.Close
Set rsAlwaysOpen = Nothing
End Sub
Private Sub Form_Open(Cancel As Integer)
Set rsAlwaysOpen = CurrentDb.OpenRecordset("DummyTable"
End Sub
__________________________________________________________________________________________________________________________
If someone could help simplify this, it would be much appreciated.