Главная страница
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.03 c
2-1191162447
Pacific
2007-09-30 18:27
2007.10.21
idftp


15-1190608909
DeadLord
2007-09-24 08:41
2007.10.21
из бэйсика в дэлфи


11-1174410437
Dmitriy___
2007-03-20 20:07
2007.10.21
ListView - проблема с LVItems


8-1166580641
>>DEATH<<
2006-12-20 05:10
2007.10.21
палитра в bmp


2-1190362266
АндрейК
2007-09-21 12:11
2007.10.21
Delphi7 и FastReport 3.19