![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Упаковка БД [D6, MS Access]
Zlod3y © (2004-07-01 01:25:00)Упаковывал базу с одной таблицей (эксперимент был), в которой было удалено 65536 записей.......упаковалось нормально как через JRO так и через DAO......только проблема вот в чём: та база, которая была прописана в ODBC не упаковывалась (выдавало ошибку, типа "фаил уже используется" и т. п.), а вот та база, которая в ODBC не фигурирует, нормально упаковалась....!!!!
Почему так? Что я делаю неправильно?
Zlod3y (2004-07-01 09:47:00) [1]дельфя закрыта была......:-)
Table1.DataBase.Close и Table1.DataBase.Close работают.....
осталось разобраться с Table1.DataBase.LoginPrompt!!!
да и спасибо за помощь
sniknik (2004-07-01 09:34:00) [2]> Я не использую TDataBase.....
тогда он создается по умолчанию (и открывается ес-но)
sniknik (2004-07-01 09:32:00) [3]> а если она открывается при запуске,
т.е. в дельфях открыта? (при старте у db компанентов стоит активность в труе?)
Zlod3y (2004-07-01 09:31:00) [4]Я не использую TDataBase.....
sniknik (2004-07-01 09:30:00) [5]вместо Table1.Close; делай DataBase.Close; (если действительно других коннектов нет)
Zlod3y (2004-07-01 08:46:00) [6]я так и делаю:
Table1.Close;
CompactDatabase_JRO(ExtractFilePath(Application.ExeName) + 'db1.mdb',ExtractFilePath(Application.ExeName) + 'db1_pack.mdb','');
Table1.Open;
или
Table1.Close;
CompactAccessDatabase(ExtractFilePath(Application.ExeName) + 'db1.mdb','');
Table1.Open;
Больше коннектов нет!
А ошибку выдаёт такую: "Попытка открыть базу данных, открытую пользователем 'admin' на машине 'такой-то' для монопольного доступа. Повторите попытку, когда база данных освободится"
самое интересно, что когда я запускаю программулю с предварительно закрытой базой, то всё упаковывается, а если она открывается при запуске, то см. выше :-(
sniknik (2004-07-01 07:54:00) [7]то что она в DSN ODBC прописана не означает что она открыта (используется), у тебя же явное указание на это. закрой все конекты/проги что ее используют (посмотри при нормально открытой базе рядом создается файл *.ldb, это можеш использовать как признак "открытости", пока он есть база открыта (кроме редких исключений)).
Zlod3y (2004-07-01 01:28:00) [8]вот отсюда я брал процедуры:
http://delphibase.endimus.com/?action=viewfunc&topic=baseaccess&id=10303
http://delphibase.endimus.com/?action=viewfunc&topic=baseaccess&id=10165