Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Базы данных: динамическое создание удаление индекса  (Прочитано 11201 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
JackFromTheShadow
Гость
« : 25-06-2003 19:02 » 

Есть программа, которая по мере работы открывает и закрывает файлы dbf и при открытии создает индекс, а потом его удаляет.
Так вот проблема в том, что первый раз открыв файл и отработав основные операции она удаляет индекс корректно, а после того как я выбираю такой же файл, но из другой дирректории ругается и выдает ошибку "Index does not exists" при удалении созданного индекса. В конечном итоге удаляет индекс, но чтобы не выскавала каждый раз ошибка приходится перегружать каждый раз прогу.

  WorkDir := BaseDirLB.Directory + '\';
  DestDir := DestDirLB.Directory + '\';

  PdlTb.TableName  := WorkDir + 'pdl.dbf';
  PdlTb.AddIndex('pdl', 'NPSU', []);
  PdlTb.Open;
  PdlTb.IndexName := 'pdl';

  PdlTb.First;
  repeat
    .....
  until PdlTb.Eof;
  PdlTb.Close;
  PdlTb.DeleteIndex('pdl'); Собственно ошибка выскакивает здесь!
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #1 : 25-06-2003 19:06 » 

А результаты работы PdlTb.AddIndex('pdl', 'NPSU', []); какие - возможно при втором проходе индекс не создается по какой-то другой причине...
Записан

А птичку нашу прошу не обижать!!!
JackFromTheShadow
Гость
« Ответ #2 : 25-06-2003 19:08 » 

Индекс создается, но второй раз выдает ошибку и индекс удалят!
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 25-06-2003 19:15 » 

1)При одработке нескольких файлов подряд из одной директории ошибка вылетает?
2)В процесе работы не смотрел индех создается в тойже деректории что и файл или нет.
Похоже на то что  утебя какая то путаница в путях те при смене директории где то этот путь не фиксируется и  прога работает с дерикторией по умолчанию.  Создаем в одном месте(если вообще создаем) а пытаемся удалять в другом.
Записан

Да да нет нет все остальное от лукавого.
JackFromTheShadow
Гость
« Ответ #4 : 25-06-2003 19:20 » 

1) файл я обрабатываю один с именем Pdl.dbf, но перед обработкой выбираю в какой дирректории он находится (WorkDir) и соответственно присваиваю таблице путь к нему(TableName).
2) индекс создается в той же дирректории, где лежит файл. И при смене каталога тоже создается в другой дирректории
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 25-06-2003 19:31 » 

Эх ДБФ.
Попробуй обработать два файла подряд в одной директории, тогда будет я сно это связано со сменой директории или нет.

А непробовал вообще эту сточку закоментировать? и посмотреть чем дело кончится? Раз он говорит что его там нет это значит что либо индекс уже удален предыдущей командой например Close (глупость конечно, это я  для примера) либо он там есть но его не находят(ищут в другом месте).
Записан

Да да нет нет все остальное от лукавого.
JackFromTheShadow
Гость
« Ответ #6 : 25-06-2003 19:39 » new

Да это связано со сменой дирректории. Но тогда такой вопрос: выходит что одного Close или Active := false не достаточно для закрытия файла и освобождения индекса. Я так понимаю DataSet оставляет связь с таблицей...
Как от этого избавиться?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines