-
Программа на Делфи, подключаемся к БД (dbf) Visual FoxPro через ODBC драйвер. Пытаюсь удалить данные из таблицы, затем ее упаковать. [SRC] cmdPack.CommandText := 'delete from olorderh'; cmdPack.Execute();
cmdPack.CommandText := 'delete from olorderd'; cmdPack.Execute();
cmdPack.CommandText := 'pack olorderh'; cmdPack.Execute();
cmdPack.CommandText := 'pack olorderd'; cmdPack.Execute(); [/SRC] Данные удаляются, но упаковка не проходит по причине "Ашду in use". Возможно ли как-то решить эту проблему, или нужно для ADOConnection сделать Connected := False И лишь потом паковать? Т.е. если я к таблицам НЕ обращаюсь, упаковка проходит удачно. Но нужен именно такой сценарий - это транспортные файлы и после их обработки нужно их очистить для повторного использования
-
> delete from olorderh > pack olorderh = zap olorderh
вроде бы, если не забыл.
-
+ обработка, если есть выборки то делать не select, а use.
-
zap не канает...для VFP драйвера
-
> zap не канает...для VFP драйвера странно весьма... т.к. это вариация pack, даже описываются в одном разделе.
-
> Виталий Панасенко (15.06.2010 13:02:00) [0]
А почему не OLEDB?
-
> sniknik (15.06.2010 14:35:04) [4]
Вообще то, что то в этом есть, я уже читал подобное.
-
> Anatoly Podgoretsky © (15.06.10 14:35) [5]
Одна учетная система создает системные DSN, с конкретными именами и драйверами. И уже с ними работает...И нужно организовать импорт/экспорт между двумя не связанными системами. Тут хранятся только транспортные данные.. Одна система выдала на гора, вторая втянула и, при удачном импорте, очистила таблицы
-
> Виталий Панасенко (15.06.2010 15:25:07) [7]
А что постоянно создаются новые?
-
да нет, только зачем что-то еще создавать.. вот, порылся, нашел направление..но вторую таблицу все равно не пакует cmdPack.CommandText := 'set exclusive on;'#13#10' delete from olorderh;'#13#10'pack;'#13#10'delete from olorderd;'#13#10' pack;'#13#10' set exclusive off;';
cmdPack.Execute();
-
Remarks
Changing the setting of SET EXCLUSIVE doesn't change the status of previously opened tables. For example, if a table is opened with SET EXCLUSIVE set to ON, and SET EXCLUSIVE is later changed to OFF, the table retains its exclusive-use status.
SET EXCLUSIVE is scoped to the current data session.
-
> это транспортные файлы и после их обработки нужно их очистить > для повторного использования
в таких случаях лучше не насиловать систему, а просто стереть файлы и создать (скопировать) пустые нужной структуры быстрее и без мороки
-
> Правильный$Вася (15.06.10 16:58) [11]
я об этом уже думал... их около 60 таблиц... но нужных мне много меньше
-
> Виталий Панасенко (15.06.2010 17:55:12) [12]
И все таки попробуй OLEDB это прозрачно, сменить только строку подключения, конечно если каких либо трюков не используешь. Обычно после этого начинает работать.
|