There is a workaround to get row-level locking in DAO (instead of page-level locking).
This workaround is described here: http://support.microsoft.com/kb/306435
I use linked tables so I don't explicitly open a connection to my back-end. I just refresh them with the below procedure. So how would I go about applying this workaround in my situation? I've tried opening the ADO connection before starting the refresh and closing it after (hoping that this would open the implicit DAO connection made during the refresh as row-locking) but this didn't work.
Private Function RefreshLinkedTables() As Boolean
Dim db As Database
Dim tdf As TableDef
RefreshLinkedTables = True
Set db = CurrentDb
On Error GoTo ErrorHandler
InitializeMinorProgressBar "Refreshing Tables", db.TableDefs.Count
For Each tdf In db.TableDefs
If Len(tdf.Connect) > 0 Then
tdf.Connect = ";DATABASE=" & STR_APPLICATION_FOLDER_PATH & "IC_backend.mdb"
On Error GoTo 0
Set db = Nothing
RefreshLinkedTables = False
MsgBox "Back-end tables could not be refreshed." & vbNewLine & "Please notify an administrator immediately.", vbCritical + vbOKOnly, "Table Refresh Failure"