Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как закрыть БД? [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. Через него закрывая ВСЕ таблицы, да и собственно, сессию с данной БД. Это поможет "убрать" неявно используемые ссылки на таблицы БД (например, мастер-детал)


Наверх

Титульная страница Поиск, карта сайта Написать письмо