конкретная проблема:
есть разделенная база. В одной части хранятся только общие справочные таблицы. В других базах-клиентах программная часть для разных целей. Все они используют примерно одни и те же таблицы из табличной части.
В таком виде всё это работало локально на одном компьютере. Всё работало без проблем
Затем табличная часть была помещена на файловый сервер в локальной сетке с витой парой. На сервере работает NetWare. Теперь к этой табличной части обращаются клиенты с нескольких компьютеров.
Таблицы в базе в разное время спонтанно требуется обновлять извне – из dbf-файлов. Делается это запросом на удаление всех записей из таблицы в базе, потом в неё копируется из файла (который связан с базой) запросом на добавление.
Когда табличная база располагалась локально на каждом компьютере, то процесс обновления проходил спокойно. При этом, если юзер забывал закрывать клиентские программы, которые используют обновляемую таблицу, то всё, что он видел на экране – в каждом поле каждой записи «Удалено!» В любом случае клиента приходилось перезапускать.
Теперь же, если в каком-то из клиентов курсор стоит на записи в этой таблице, то даже по статусбару процесса запроса на удаление видно, что происходит затык примерно в той позиции таблицы, где находится запись и клиент зависает
Вопрос: есть ли какой-то способ избежать этого зависания? Или ещё лучше способ, который позволит программно определить факт блокировки какой-то из записей таблицы, чтоб просто сообщить юзеру, что в данный момент обновление таблицы невозможно, т.к. она кем-то используется. А ещё лучше, чтоб сообщалось и имя этого клиента (как они перечисляются в ldb-файле, но только для всей базы )
о блокировках записей я знаю. но только то, что сам акцесс сообщает юзеру о невозможности редактирования записи. как это сообщение перехватить программно - не знаю. да и перехватить не успею. запрос зависнет раньше