ник: Анатолий (Киев)
Св-во Transactions служит для проверки, допускается ли использование транзакций. Зависит от тапа рекордсета и никак не зависит от того, занята ли таблица другим юзером. Или у вас бывает False?
Я бы открывал rst1 c опцией dbDenyRead при включенном On Error Resume Next. Если таблица редактируется другим юзером - возникает ошибка, которую надо сбросить и после паузы повторить попытку (в цикле, пока таблица не освободится).
С rst2 можно dbDenyRead не применять, но вместо dbOptimistic (как у вас) применить dbPessimistic (и логично с dbAppendOnly). Тогда ошибка будет возникать на .AddNew. Ее тоже надо сбросить и после паузы повторить попытку.
Для выполнения паузы удобно использовать API:
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)