Главная страница
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.029 c
5-1157961202
--= Eagle =--
2006-09-11 11:53
2007.10.21
Глюк с Align у панели


6-1171959552
santey
2007-02-20 11:19
2007.10.21
Как установить статический ип на сетевом адаптере


1-1186573487
NKT
2007-08-08 15:44
2007.10.21
Приложение SDI - меню и взаимодействие форм


4-1176773498
Adlero4ek
2007-04-17 05:31
2007.10.21
JJ-CONNECT Registrator


2-1190726454
R.O.O.T
2007-09-25 17:20
2007.10.21
Обработка исключений в TSocketConnection