Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.24;
Скачать: CL | DM;

Вниз

В paradox-е, файл остается заблокированным.   Найти похожие ветки 

 
Konuhov Sergey   (2003-11-03 22:25) [0]

Есть программа БД написанная для BDE-paradox. Работает по локальной сети. Пока работает один пользователь, все нормально. Приблизительно раз в два дня она начинает нещадно глючить.
Проблема в том, что один из часто используемых файлов оказывается заблокированным одним из юзеров. Файл разблокируется только если все BDE программы на всех компьютерах в локальной сети. В программе действительно используется LockTable, но они везде в паре и находятся в try…Except или try…finally. Может ли файл остаться заблокированным в результате какой либо ошибки при обращении к БД? Возможно, что сама ошибка с блокировкой и не как не связана. Заранее благодарю, всех кто ответит по существу.


 
Кщд   (2003-11-04 08:16) [1]

код блокировки-разблокировки?


 
Gorlum ©   (2003-11-04 11:07) [2]

А ты BDE настроил для работы в сети.
Если нет - посмотри на этом сайте статьи.


 
Konuhov Sergey   (2003-11-05 09:02) [3]

BDE настроил, как рекомендовали в форуме.
(Local Share=true и на всех машинах одинаковые пути к базе и NetDir. Све пути на подлюченные или Subst диски)

Код блокировки выглядет так

class function TfmSklad.Lock;
BEGIN
if not SkladLocked then
try
dmCommon.tblTovInSklad.LockTable(ltWriteLock);
SkladLocked:=true;
Result:=true;
except
on E:Exception do
begin
raise Exception.Create("Остатки заблокированы, попробуйте позже."+E.Message);
Result:=false;
end;
end;
END;

class procedure TfmSklad.UnLock;
BEGIN
if SkladLocked then
begin
try
dmCommon.tblTovInSklad.UnLockTable(ltWriteLock);
except
end;
SkladLocked:=false;
end;
END;


 
Anatoly Podgoretsky ©   (2003-11-05 09:49) [4]

Прекрасный путь в могилу, что ты и наблюдаешь.
Это же дикость блокировать таблицу.


 
Konuhov Sergey   (2003-11-05 10:12) [5]

Я согласен, что блокированть таблицу нужно только в крайнем случае.
Но в Paradox есть одна особенность, почему то в пределах одной транзакции нельзя изменить более 256 записей.
А для изменения остатков бывает надо.
Юзера почему то любят большие докуенты, именно настолько бльшие.
А без транзакции нельзя, т.к. будут портится остатки, если в мемент проводки документа что-либо произойдет.
Обойти ограничение можно только открыв таблицу монопольно или заблокировав ее.
В блокоровка выполняется только для остатков и на несколько секунд.



Страницы: 1 вся ветка

Текущий архив: 2003.11.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
1-79037
Layner
2003-11-10 13:18
2003.11.24
Господа, подскажите, как правидьно организовать большой проект


3-78773
stud
2003-11-05 15:22
2003.11.24
отчет - как много в этом звуке!


3-78749
Dysan
2003-11-06 11:00
2003.11.24
Как через ADOQuery сделать выборку из таблиц из разных директори?


6-79083
Barmutik
2003-08-17 12:46
2003.11.24
WebBrowser + AutoComplete имена пользователей и пароли


1-79022
TRIX
2003-11-14 01:40
2003.11.24
Зависание при циклах