![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ошибка: не могу открыть в эксклюзивном режиме [D6, Paradox]
Ильдар © (2002-08-01 15:36:00)
Base.Active := False;
try
Base.Exclusive := True;
Base.Active := True;
Base.DeleteIndex("Name");
Base.AddIndex("Name", "Имя", [ixDescending]);
Base.Active := False;
Base.Exclusive := False;
except
Application.MessageBox("Could not open Base", "ERROR", MB_OK);
end;
Base.Active := True;
и сразу еще вопрос какие параметры использовать в AddIndex?
fnatali (2002-08-05 12:45:00) [1]Ильдар
сделай новый проект, где напиши только эту процедуру и проверяй.
Anatoly Podgoretsky (2002-08-05 12:41:00) [2]Ильдар (05.08.02 12:12)
Значит ты не веришь БДЕ?
SaS13 (2002-08-05 12:39:00) [3]Неужто? =))
тогда мыль исходники, посмотрю, вдуг действительно паранойя..
Ильдар (2002-08-05 12:12:00) [4]Ни один из запросов к этой таблице не обращается
SaS13 (2002-08-02 16:25:00) [5]Скорее всего ты где-то в проге перед переиндексацией делаешь запрос к таблице и не закрываешь его... проверь получше.
Ильдар (2002-08-02 16:22:00) [6]а если запускать не из DELPHI то cannot open for exclusive use
SaS13 (2002-08-02 14:47:00) [7]попробуй закрыть Delphi и перекинуть этот файл куда-нить, если перекинется, то что-то в Дельфях его держит, иначе - где-то сидит процесс
SaS13 (2002-08-02 14:40:00) [8]тогда у меня больше никаких мыслей нет кроме того, что где-то в памяти сидит открытая табличка... может у тебя запрос к ней какой-нить открыт или еще чего, попробуй посмотри в диспетчере задач, может процесс какой остался, накрайняк перезагрузи комп..
Ильдар (2002-08-02 14:35:00) [9]по нажатию на кнопку "переиндексация", пока пробую только на одной машине (если правильно понял вопрос)
SaS13 (2002-08-02 14:32:00) [10]В какой момент ты пытаешься выполнить этот код?
Ильдар (2002-08-02 14:25:00) [11]Object not locked
SaS13 (2002-08-02 14:21:00) [12]попробуй обработать так:
try
// тело
except
on E: Exception do
ShowMessage( E.Message )
end;
и скажи собщение кот. выдает..
Ильдар (2002-08-02 14:18:00) [13]сказал все
в блоке try первая строка выполняется
вторая тоже
на третьей вылетает
а на Base.Open - ошибка
Anatoly Podgoretsky (2002-08-02 12:46:00) [14]Не должно такого быть, так как выработку сообщений об ошибке ты заблокировал, значит ты не все нам сказал.
Ильдар (2002-08-02 12:38:00) [15]Anatoly Podgoretsky © (02.08.02 12:11)
потому что говорит "не могу открыть таблицу в эксклюзивном режиме"
Mike Kouzmine (2002-08-02 12:20:00) [16]А ты попробуй при запущенном приложении реструкт. таблицу, тебе сообщат, кто держит таблицу.
Anatoly Podgoretsky (2002-08-02 12:11:00) [17]Ильдар (01.08.02 15:36)
Почему ты решил, что именно не открывается, а скажем не другая ошибка, у тебя есть какие то тайные данные?
Ильдар (2002-08-02 12:10:00) [18]а если так
Base.IndexName := "";
Base.Close;
try
Base.Exclusive := True;
Base.Open;
Check(dbiRegenIndexes(Base.Handle));
Base.Exclusive := False;
except
Application.MessageBox("Could not open Base", "ERROR", MB_OK);
end;
Base.Open;
то на строке Check - искдючение и переходит в except
Mike Kouzmine (2002-08-02 12:08:00) [19]Если кто-то не открыл таблицу, то все должно быть нормально, а синтаксис AddIndex см. в хелпе, там все подробно с примерами
Ильдар (2002-08-02 12:04:00) [20]у меня и так active=false