Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

Как определить, существует ли у DBF таблицы индекс или нет?   Найти похожие ветки 

 
ambhtr   (2007-06-04 15:58) [0]

В процедуре создаю индекс для таблицы, все хорошо...
Но когда процедуру запускаешь 2-раз, ругается, что индекс уже существует. Каждый раз удалять индекс, вроде бы и не надо. Но как определить, существует индекс уже или его надо создавать?


 
Сергей М. ©   (2007-06-04 16:07) [1]


> как определить, существует индекс уже или его надо создавать?


св-во IndexDefs (если оно существует) содержит сведения о существующих индексах


 
Desdechado ©   (2007-06-04 17:13) [2]

У какого-то абстрактного DBF - никак. Просто в разных версиях разных DBF-СУБД для этой цели могут быть (а могут и не быть) отметки в заголовке самого файла. Но вот сколько и какие индексы есть (даже при наличии отметки) узнать нельзя. Например, у фокса можно строить составные многотэговые индексы (в одном файле несколько индексов-тэгов). И по каким полям и/или функциям они сделаны, можно узнать только из самих индексов.


 
ambhtr   (2007-06-04 17:28) [3]


> Сергей М. ©   (04.06.07 16:07) [1]

Спасибо за подсказку.
Получился такой вот код:

 tblDBF.IndexDefs.Update;
 if tblDBF.IndexDefs.Count <> 0 then
   begin
    tblDBF.Open;
   end
 else
   begin
    tblDBF.Open := False;
    tblDBF.Exclusive := True;
    tblDBF.AddIndex("NewIndex","Barcode",[]);
    tblDBF.Exclusive := False;
    tblDBF.Open := True;
    tblDBF.IndexName := "NewIndex";
   end;

Пока работает. Может можно как-то еще оптимизировать.
Но все-равно, БОЛЬШОЕ  СПАСИБО.


 
Anatoly Podgoretsky ©   (2007-06-04 18:30) [4]

> ambhtr  (04.06.2007 17:28:03)  [3]

Ты прочитай, что в [2] написано, а это не все, есть еще простые не много теговые индексы, которые узнать нельзя - их надо знать в лицо.


 
ambhtr   (2007-06-05 09:38) [5]


> Anatoly Podgoretsky ©   (04.06.07 18:30) [4]

Т.е. надо проверять наличие файла, определенного имени, с каким ты его создал?
Т.е. использовать приблизительно следующий код:
if FileExists("NameDBF.MDX") then
...


 
Anatoly Podgoretsky ©   (2007-06-05 09:50) [6]

Это отвязаные файлы, а проверять надо средствами СУБД.
И почему MDX - индексы немного шире.
Если база твоя, то ты должен подключить индексы, если же нет, то полного решения нет, на диске слишком много файлов.


 
Alice_ev   (2007-06-12 05:24) [7]

Удалено модератором


 
Edward_zd   (2007-06-12 05:25) [8]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
15-1190195376
Beastie Boys
2007-09-19 13:49
2007.10.21
у дизайнеров хорошая фантазия?


15-1189456500
Суслик
2007-09-11 00:35
2007.10.21
Бесплатный семинар по продуктам Delphi 2007, C++ Builder 2007


3-1182168098
Павел Калугин
2007-06-18 16:01
2007.10.21
Очередные извращения в TSql


2-1190641305
Terc
2007-09-24 17:41
2007.10.21
дяденки Не посылайте меня HTML


4-1176885230
Катеринка
2007-04-18 12:33
2007.10.21
Не работает ловушка....