Конференция "Базы" » Delphi+ODBC Visual Foxpro driver [D7, dBase, FoxPro]
 
  • Виталий Панасенко (15.06.10 13:02) [0]
    Программа на Делфи, подключаемся к БД (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 И лишь потом паковать? Т.е. если я к таблицам НЕ обращаюсь, упаковка проходит удачно. Но нужен именно такой сценарий - это транспортные файлы и после их обработки нужно их очистить для повторного использования
  • sniknik © (15.06.10 13:11) [1]
    > delete from olorderh
    > pack olorderh
    = zap olorderh

    вроде бы, если не забыл.
  • sniknik © (15.06.10 13:12) [2]
    + обработка, если есть выборки то делать не select, а use.
  • zap не канает...для VFP драйвера
  • sniknik © (15.06.10 14:35) [4]
    > zap не канает...для VFP драйвера
    странно весьма... т.к. это вариация pack, даже описываются в одном разделе.
  • Anatoly Podgoretsky © (15.06.10 14:35) [5]
    > Виталий Панасенко  (15.06.2010 13:02:00)  [0]

    А почему не OLEDB?
  • Anatoly Podgoretsky © (15.06.10 15:07) [6]
    > sniknik  (15.06.2010 14:35:04)  [4]

    Вообще то, что то в этом есть, я уже читал подобное.
  • Виталий Панасенко (15.06.10 15:25) [7]

    > Anatoly Podgoretsky ©   (15.06.10 14:35) [5]

    Одна учетная система создает системные DSN, с конкретными именами и драйверами. И уже с ними работает...И нужно организовать импорт/экспорт между двумя не связанными системами. Тут хранятся только транспортные данные.. Одна система выдала на гора, вторая втянула и, при удачном импорте, очистила таблицы
  • Anatoly Podgoretsky © (15.06.10 16:03) [8]
    > Виталий Панасенко  (15.06.2010 15:25:07)  [7]

    А что постоянно создаются новые?
  • Виталий Панасенко (15.06.10 16:35) [9]
    да нет, только зачем что-то еще создавать..
    вот, порылся, нашел направление..но вторую таблицу все равно не пакует
    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();

  • sniknik © (15.06.10 16:48) [10]
    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]

    > это транспортные файлы и после их обработки нужно их очистить
    > для повторного использования

    в таких случаях лучше не насиловать систему, а просто стереть файлы и создать (скопировать) пустые нужной структуры
    быстрее и без мороки
  • Виталий Панасенко (15.06.10 17:55) [12]

    > Правильный$Вася   (15.06.10 16:58) [11]

    я об этом уже думал... их около 60 таблиц... но нужных мне много меньше
  • Anatoly Podgoretsky © (16.06.10 08:54) [13]
    > Виталий Панасенко  (15.06.2010 17:55:12)  [12]

    И все таки попробуй OLEDB это прозрачно, сменить только строку подключения,
    конечно если каких либо трюков не используешь. Обычно после этого начинает
    работать.
 
Конференция "Базы" » Delphi+ODBC Visual Foxpro driver [D7, dBase, FoxPro]
Есть новые Нет новых   [134433   +22][b:0][p:0.001]