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

Вниз

эксклюзтвный доступ в dbf...... проблема   Найти похожие ветки 

 
koks ©   (2003-05-29 11:30) [0]

Здравствуйте, уважаемые мастера!
Помогите мне пожалуйста вылечить одну ошибку:

with dmDataModule.TTMData do
begin
Close;
Exclusive := true;
Open;
Check(DBIPackTable(DBHandle, Handle, nil, szDBASE, true));
Close;
Exclusive := false;
end;

with dmDataMjdule.TTMassivs do
begin
Close;
Exclusive := true;
Open;
Check(DBIPackTable(DBHandle, Handle, nil, szDBASE, true));
Close;
Exclusive := false;
end;

первый вызов проходит нормально - табличка пакуется на ура. Второй вызов пишет ошибку - table is busy...

облазил всю программу - ну не открыта она. прогонял прогу без среды - все ровно.
Примечательно, что эти две таблицы открываются и вообще используются одновременно (синхронно). Соответственно ошибки при установлении эксклюзивного доступа должны либо быть у обоих либо не быть вообще. Так вот, рассуждая так я нашел одно отличие - на вторую таблицу идут ссылки из лукап-полей из одного запроса. Так вот, я ЗАКРЫВАЮ преварительно этот запрос... все равно table is busy... может надо еще чего с ним сделать (с запросом)


 
Соловьев ©   (2003-05-29 11:35) [1]

у меня тоже такое было. лечилось закрытием проги и новым ее запуском. упаковку сделал при запуске проги. теперь нет траблы.


 
koks ©   (2003-05-29 17:29) [2]

логично, однако грубо


 
Соловьев ©   (2003-05-29 17:37) [3]

просто часто делать упаковку тебе все равно не надо - пусть пользователь подождет при запуске, вот и все.


 
sniknik ©   (2003-05-29 18:27) [4]

> Примечательно, что эти две таблицы открываются и вообще используются одновременно (синхронно).
синхронно т.е. в разных потоках? и в одной сессии? если так то пока работает DBIPackTable с одной таблицей монопольное открытие любой другой приведет к "table is busy". (ну так если рассуждать логично)

попробуй вторую первой паковать.


 
Serginio   (2003-05-29 20:04) [5]

А зачем тебе ее паковать. В фоксах есть индекс Deleted который хранит ссылки на удаленные записи и при добавлении записи находит таковой по индексу и использует ее. Это нормальная практика во всех БД.


 
Кулешов   (2003-05-30 12:43) [6]

Попробуй сделать так, мне помогло:
...
Table.ReadOnly:=False;
Table.Exclusive := True;
...



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
1-84121
Sliften
2003-06-10 09:13
2003.06.26
навигация по ENTER


1-84104
Zemal
2003-06-10 11:30
2003.06.26
Как определить объём занимаемой приложением памяти?


14-84653
Думкин
2003-06-10 11:59
2003.06.26
Паттерны ошибок


1-84318
Unknown007
2003-06-14 17:23
2003.06.26
Tmemo, изменение цвета в одной строке.


1-84394
-=GaLaN=-
2003-06-09 13:37
2003.06.26
Странные ярлыки не запускаются через shellexecute