Maybe you are opening the MDB with some multiple use option.

This is what I am using (no LockFile):
VB Code:
  1. Option Explicit
  2.  
  3. 'Reference: M$ ActiveX Data Objects 2.X Library
  4.  
  5. Private Sub Form_Load()
  6. Dim strSQL As String
  7. Dim rst As ADODB.Recordset
  8. Dim cnn As ADODB.Connection
  9.  
  10. On Error GoTo Err_Handler
  11.  
  12.     Set rst = New ADODB.Recordset
  13.     Set cnn = New ADODB.Connection
  14.  
  15.     strSQL = "SELECT [LastName] FROM [tblCustomers]"
  16.  
  17.     cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Customers.mdb;Persist Security Info=False;"
  18.  
  19.     rst.CursorLocation = adUseClient 'Set to enable Cursor movement
  20.     rst.Open strSQL, cnn, adOpenForwardOnly, adLockOptimistic
  21.  
  22.     'Check RS for data
  23.     If Not rst.BOF And Not rst.EOF Then
  24.  
  25.         rst.MoveFirst
  26.  
  27.         'Load the ListBox with the Last names
  28.         Do Until rst.EOF
  29.             List1.AddItem rst.Fields("LastName").Value
  30.             rst.MoveNext
  31.         Loop
  32.  
  33.     End If
  34.  
  35.     rst.Close
  36.     cnn.Close
  37.  
  38.     Set rst = Nothing
  39.     Set cnn = Nothing
  40.  
  41. Exit Sub
  42.  
  43. Err_Handler:
  44.  
  45.     If Not (rst Is Nothing) Then
  46.         If rst.State = adStateOpen Then
  47.             rst.Close
  48.             Set rst = Nothing
  49.         End If
  50.     End If
  51.  
  52.     If Not (cnn Is Nothing) Then
  53.         If cnn.State = adStateOpen Then
  54.             cnn.Close
  55.             Set cnn = Nothing
  56.         End If
  57.     End If
  58.  
  59.     MsgBox "Description: " & Err.Description & vbCrLf & _
  60.         "Number: " & Err.Number, vbOKOnly + vbInformation, "Error - Called from " & Me.Name & " Sub Form_Load"
  61. End Sub