![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как закрыть БД? [D7, XP]
типа прогер © (2006-02-06 11:17:00)В общем такая ситуация, мне из программы надо заархивировать всю базу...
я сначала закрываю БД, потом архивирую, потом открываю для дальнейшей работы...
var command: string;
begin
TbStatus.Close;
TbMain.close;
TbConf.Close;
TbPersonal.Close;
TbExport.Close;
command:='rar.exe a -ieml bases.rar .\bases\*.*';
WinExec(PChar(command),SW_HIDE);
TbStatus.Open;
TbMain.Open;
TbConf.Open;
TbPersonal.Open;
TbExport.Open;
В файле bases.rar находится только часть файлов базы. Остальное пишет занят процессом... Delphi при этом я вообще закрывал, результат тот же.
пробовал вместо Close, ACTIVE:+FALSE тоже самое.
Как же мне всетаки освободить их от процесса и что я делаю не так?
Desdechado (2006-02-06 14:11:00) [1]позакрывай таблицы в design-time
umbra (2006-02-06 11:28:00) [2]надо дождаться, пока рар закончит архивацию, а затем открывать таблицы. С
WinExecэто невозможно. Надо пользоваться функциейCreateProcess
msguns (2006-02-06 11:23:00) [3]Судя по всему, парадокс (дибэйс), т.е. BDE
В подобных случаях, когда требуется вся "База" (например, для копирования, архивирования и т.д.), следует пользоваться объектом TDataBase. Через него закрывая ВСЕ таблицы, да и собственно, сессию с данной БД. Это поможет "убрать" неявно используемые ссылки на таблицы БД (например, мастер-детал)