![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не удаляется файл БД! [D1, D2, D3, D4, D5, D6, D7, dBase, FoxPro]
csr © (2003-10-16 17:41:00)
Помогите плз! Возник трабл с БД. Ситуация: программа в run-time создает базы данных (dBase) и автоматически загружает в грид. Другими словами юзер нажимает кнопку - создается БД (файл сохраняется в поддиректории). Проблема в следующем: как во вермя работы программы УДАЛИТЬ созданные базы? Файлы БД блокируются и не удаляются (файл используюется другим приложением)! Пробовал отключать dataset - безрезультатно. Может кто-нить знает как решить трабл?
csr (2003-10-22 11:14:00) [1]
2 DenK_vrtz: Ты прав.
2 Anatoly Podgoretsky: Я пытался создать ф-цию аналогичную DeleteTable в TTable (это и есть drop table). Почти получилось- файл удаляется но с эксэпшеном :(. А вытянуть ф-цию DeleteTable из TTable не могу , т.к. она обращается к БДЕ!
Anatoly Podgoretsky (2003-10-21 09:13:00) [2]
И ты только спустя 4 дня смилостивился и решил нам сообщить что же ты конкретно используешь. И свое время не ценишь и чужим бесцеремонно распоряжаешься.
DenK_vrtz (2003-10-21 08:39:00) [3]
csr [8], я уверен, что неправильно ты подозреваешь tdataset.close - закрывает набор данных, а drop table - удаляет таблицу!
Аналогично tdataset.open - открывает НД, а create table - создает таблицу
csr (2003-10-20 20:54:00) [4]
Спасибо за отклики!!!
2 mOOx_: Я не использую TDataBase.
2 Vorobyev Sergey: Я тоже пробовал CreateTable - действительно создается новая БД вместо прошлой! Однако меня это не устраивает, т.к. остается тем не менее файл БД! А мне его необходимо удалить, т.к. призагрузке программа сканирует директорию, и названия всех .dbf файлов в ней записываются в TTabSet. А уже потом по OnTabSetChange() в ДБГрид загружается соответствующая таблица.
2 DenK_vrtz: Я не использую TQuery, и соответственно SQL запросы. Я вообще не использую ни BDE ни ADO! Есть такой компонент для доступа к данным как TDBF (это типа TTable, но без юнита dbtables, в общем без БДЕ). Но я тем не менее подозреваю, что drop table = tdataset.close !
Vorobyev Sergey (2003-10-20 09:51:00) [5]
> Удалить таблицу - drop table имя_таблицы
Точно..!! Забыл про это сказать..
Тогда будет все н..!
DenK_vrtz (2003-10-20 08:14:00) [6]
csr, уверен что один DataSet связан с таблицей, которую хочешь удалить?
А может еще кто эту таблицу использует!
Удалить таблицу - drop table имя_таблицы
Vorobyev Sergey (2003-10-20 07:45:00) [7]
Удалить совем в рантайме не получится..
НО
У меня тоже был такой случай, проблема разрешилась чисто случайно..
Использовал создание временных таблиц, потом нужно было удалить и создать новую..
Так вот, если ты сделаешь CREATE TABLE с тем же именем таблицы, то старая удалится и создаться новая, прямо в рантайме..
Может поможет..
mOOx_ (2003-10-19 16:42:00) [8]
Ну и чо, закрыл ты наборы данных и что. Я просто dBase and FoxPro не балуюсь. Но почемуто мне думается, что ты еще используешь TDataBase (может его не надо, не знаю). Так вот, если всетаки используешь, то соединение обрывай, а не датасет закрывай.
Успехов.
csr (2003-10-19 15:21:00) [9]
Неужели никто не знает??!!
csr (2003-10-17 18:12:00) [10]
Дык я закрывал TDataSet (методом close)! Даже закрывал DataSource - не помогает! Подскажите, КАК закрыть файл, который создался в ран-тайме!
служивый (2003-10-16 19:43:00) [11]
Нельзя удалить открытый файл. Если открывал ты закрой и потом удаляй
если другая программа, соответственно подожди пока она закроет.