Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Вниз

В 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
1-79005
Dark Elf
2003-11-14 11:16
2003.11.24
Отображение даты


6-79100
Tommy
2003-09-26 11:17
2003.11.24
люди напишите где почитать как работать с Socketami в отдельном t


6-79088
Слава Федоренко
2003-09-26 19:03
2003.11.24
UDP broadcast в подсеть


1-78882
dimm
2003-11-13 11:48
2003.11.24
Уважаемые, как забить в поле ввода определённой формы


3-78808
MORA
2003-11-06 08:27
2003.11.24
UDF





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский