powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Delphi+ODBC Visual FoxPro Driver (XP SP3)
32 сообщений из 32, показаны все 2 страниц
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687448
vup70200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программа на Делфи, подключаемся к БД (dbf) Visual FoxPro через ODBC драйвер. Пытаюсь удалить данные из таблицы, затем ее упаковать.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
      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();
Данные удаляются, но упаковка не проходит по причине "Ашду in use". Возможно ли как-то решить эту проблему, или нужно для ADOConnection сделать Connected := False И лишь потом паковать? Т.е. если я к таблицам НЕ обращаюсь, упаковка проходит удачно. Но нужен именно такой сценарий - это транспортные файлы и после их обработки нужно их очистить для повторного использования
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687515
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vup70200Программа на Делфи, подключаемся к БД (dbf) Visual FoxPro через ODBC драйвер. Пытаюсь удалить данные из таблицы, затем ее упаковать.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
      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();
Данные удаляются, но упаковка не проходит по причине "Ашду in use". Возможно ли как-то решить эту проблему, или нужно для ADOConnection сделать Connected := False И лишь потом паковать? Т.е. если я к таблицам НЕ обращаюсь, упаковка проходит удачно. Но нужен именно такой сценарий - это транспортные файлы и после их обработки нужно их очистить для повторного использования
Прежде чем делать Pack надо открыть файл эксклюзивно USE EXCLUSIVE
Если файл DBF в это время уже кем то открыт и используется, то открыть эксклюзивно другим юзверем не получится.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687626
Fffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
pack olorderd
Такой команды в FoxPro нет.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687654
Fffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил сам себя. Оказывается, давно есть. Только Pack без параметров сжимает текущую эксклюзивно открытую таблицу, а Pack с название таблицы упаковывает указанную таблицу, если сам может ее эксклюзивно захватить.
Предварительное открытие вызовет ошибку.
Но как это сделать из Дельфи, это надо и спрашивать в форуме по Дельфи.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687668
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fffffffffffffffff,

Иди в Жопу ))))))))
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687687
vup70200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fffffffffffffffff,

Да вот Д тут как раз и не причем..Это все происки ODBC Visual FoxPro driver
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687692
Fffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eugenkru10,
жди очередного бана.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687713
Fffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vup70200
Да вот Д тут как раз и не причем..Это все происки ODBC Visual FoxPro driver
ODBC driver соответствует 6-й версии FoxPro. Если там был такой синтаксис, то должно работать.
А я не знал, что он и в 9-й есть.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687731
vup70200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fffffffffffff,

да оно то работает.. но после DELETE нельзя выполнить PACK (ZAP ODBC for VFP не поддерживает), так как таблицы ЗАНЯТЫ ("File in use")
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687760
vup70200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в принципе, конечно, можно поменять местами

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
      
    try
      cmdPack.CommandText := 'pack olorderh';
      cmdPack.Execute();

      cmdPack.CommandText := 'pack olorderd';
      cmdPack.Execute();
    finally
      cmdPack.CommandText := 'delete from olorderh';
      cmdPack.Execute();

      cmdPack.CommandText := 'delete from olorderd';
      cmdPack.Execute();
    end;
тогда какой-нибудь раз да и проскочит упаковка. а удаленные данные не будут видны и так...
но все равно - интересно сделать "одним наскоком"
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687798
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FffffffffffffffEugenkru10,
жди очередного бана.
Да ты лох ваще! ))))))
Гость гавно не бывал давно! ))))))
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687799
Ffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну так я же объяснил
Код: plaintext
Pack TableName
упаковывает только закрытую таблицу.
Для упаковки открытой и эксклюзивно используется Pack без параметров.

Вообще, то, что тебе приходится очищать таблицу, говорит о неправильном подходе к решению задачи.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687808
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vup70200Fffffffffffff,

да оно то работает.. но после DELETE нельзя выполнить PACK (ZAP ODBC for VFP не поддерживает), так как таблицы ЗАНЯТЫ ("File in use")
Оно и не будет работать, потому что Fffffffffffff лох! )))))))) хер ты его советы слушаешь? )))))))
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687818
Fffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eugenkru10,
ты школьник что-ли? Это профессиональный форум. Здесь принято вести себя посолидней.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687829
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FffffffffffffffEugenkru10,
ты школьник что-ли? Это профессиональный форум. Здесь принято вести себя посолидней.

гы, здесь - скл.ру,
поэтому на троллей, ботов и других придурков не стоит обижаться,
нужно просто не читать, что они пишут.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687833
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vup70200,

cmdPack.CommandText := 'pack'
попробуй указать через символ возврата каретки две команды
cmdPack.CommandText := 'USE olorderh EXCLUSIVE'+chr(13)+'PACK'
Наверно и делфи можно сразу несколько команд сперва подготовить а потом передать драйверу.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687841
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FffffffffffffffEugenkru10,
ты школьник что-ли? Это профессиональный форум. Здесь принято вести себя посолидней.
Ты халоп хоть знаешь с кем ты разговариваешь? ))))))))))
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687874
прошелмимо
поэтому на троллей, ботов и других придурков не стоит обижаться,
нужно просто не читать, что они пишут.
Да я не обижаюсь. Моих знаний от его троллинга не убудет - не прибудет. Но его же читают те, кто на форум за советом приходит.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687890
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ffffffffffffffffffffffпрошелмимо
поэтому на троллей, ботов и других придурков не стоит обижаться,
нужно просто не читать, что они пишут.
Да я не обижаюсь. Моих знаний от его троллинга не убудет - не прибудет. Но его же читают те, кто на форум за советом приходит.
Откуда у тебя там знания? У тебя в голове пусто! )))))))))
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687897
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FfffffffffffffНу так я же объяснил
Код: plaintext
Pack TableName
упаковывает только закрытую таблицу.
Для упаковки открытой и эксклюзивно используется Pack без параметров.

Вообще, то, что тебе приходится очищать таблицу, говорит о неправильном подходе к решению задачи.
Запиши себе на лбу - Pack упаковывает только Открытую таблицу! Знаток пчелиный )))))))))))
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36687932
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ffffffffffffffffffffffпрошелмимо
поэтому на троллей, ботов и других придурков не стоит обижаться,
нужно просто не читать, что они пишут.
Да я не обижаюсь. Моих знаний от его троллинга не убудет - не прибудет. Но его же читают те, кто на форум за советом приходит.

не кормите тролля - он сам заткнется.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36688052
vup70200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
малость подшуршал, нашел направление.. но все равно, вторую таблицу на пакует, только первую.
Код: plaintext
1.
2.
      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();
а попытка вставить use olorderd приводит к эксцепшину "Syntax error or access violation"
указание pack olorderd - к File in use
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36688320
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vup70200малость подшуршал, нашел направление.. но все равно, вторую таблицу на пакует, только первую.
Код: plaintext
1.
2.
      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();
а попытка вставить use olorderd приводит к эксцепшину "Syntax error or access violation"
указание pack olorderd - к File in use
Ну вот видешь, значит мой метод сработал.
Так можно целый кусок программы передать драйверу на съедение.
А какую ещё вторую таблицу??? мы видим только одну у тебя.
После Pack надо закрыть базу - допиши #13#10'USE' - без параметров
В противном случае таблицу нельзя использовать другим юзверям в сети.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36688329
vup70200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugenkru10,

как это ОДНУ? delete from olorderH и delete from olorderD
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36688330
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vup70200,

а понял - olorderh и olorderd
просто выполни последовательность команд

SELECT 0
USE olorderh EXCLUSIVE
PACK
USE

аналогично для olorderd

SELECT 0
USE olorderd EXCLUSIVE
PACK
USE

проблем не будет.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36688348
vup70200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugenkru10,

USE для ODBC VFP драйвера не канает почему-то.. как и SELECT 0.. исключение "Ошибка синтаксиса или отказано в доступе" (оригинальное "Syntax error or access violation")
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36688355
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая фича. Некоторые настройки среды FoxPro можно добавлять напрямую в строку соединения. В данном случае, настройку EXCLUSIVE

Код: plaintext
"Driver={Microsoft Visual FoxPro Driver};UID=;PWD=;SourceDB=...;SourceType=DBC;Exclusive=Yes;Deleted=Yes;" 

При такой настройке любые таблицы будут открыт в режиме Exclusive. Точнее, попытаются открытся в этом режиме, разумеется, если никто больше в этот момент с ними не работает.

Хотя, возможно, Вам и не надо очищать таблицы. Достаточно всего-лишь скрыть записи помеченные как удаленные. Т.е. сделать настройку

Код: plaintext
SET DELETED ON

что соответствует фрагменту "Deleted=Yes" в строке подключения.

При такой настройке любые команды SQL (Select-SQL, Update-SQL и т.п.) "не увидят" записей помеченных как удаленные.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36688360
vup70200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

да суть в том, что я то их(удаленные записи) и не вижу.. но в процессе работы будет накапливаться большое количество мусора, что может в последствии привести к "завалу" таблиц.. ну да ладно, что-нибудь придумаем
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36688442
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vup70200ВладимирМ,

да суть в том, что я то их(удаленные записи) и не вижу.. но в процессе работы будет накапливаться большое количество мусора, что может в последствии привести к "завалу" таблиц.. ну да ладно, что-нибудь придумаем
Тут вопрос административный, а не программный.

Ведь, по сути, Вы из внешней программы модифицируете данные другой программы. Эта самая другая программа, по самой своей природе (работа с DBF-таблицами) должна предусматривать некоторый механизм периодической очистки записей, помеченных как удаленные. Т.е. в самой этой программе периодически должна даваться команда PACK на все таблицы.

Поэтому, попытка со стороны внешней программы (из Delphi) паковать таблицы выглядит, ну, как минимум, не корректно. Не ее это дело. Уборка мусора - это проблема программы на FoxPro.

Более того, открытие таблиц в режиме Exclusive может приводить к нарушению работы основной программы. Т.е. и с этой стороны упаковка таблиц из внешней программы - не корректная операция.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36688477
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

тут конечно вынужден не согласиться
уборка мусора это дело той проги которая насвинятничала! ))))))))
Простой пример AFP - Active Foxpro Pages
В скрипте можно написать use exclusive и pack хотя эта штука вообще работает в веб.
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36689151
vup70200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

Программа написана на "сях", в качестве хранилища - MS SQL 2000. Идет обмен десктопной учетной системы с КПК. Есть 2 источника данных(ODBC VFP): для импорта на КПК и с КПК...
...
Рейтинг: 0 / 0
Delphi+ODBC Visual FoxPro Driver (XP SP3)
    #36689161
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vup70200...да суть в том, что я то их(удаленные записи) и не вижу.. но в процессе работы будет накапливаться большое количество мусора, что может в последствии привести к "завалу" таблиц.. ну да ладно, что-нибудь придумаем
Многие физически не удаляют записи - они их используют вторично. При добавлении записи ищут - если есть удаленная запись и если есть восстанавливают ее и вносят туда новые данные.

Воторой подход - иметь дополнительное поле в таблице, которое отвечает за "удаление". Далее подход как к удаленным записям, но при этом Вам надо будет внести много изменений в существующий код...
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Delphi+ODBC Visual FoxPro Driver (XP SP3)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]