Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];

Вниз

Как определить, существует ли у 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.035 c
2-1190813132
0x00bin
2007-09-26 17:25
2007.10.21
DLL и её вызовы


3-1181827882
hprx
2007-06-14 17:31
2007.10.21
Копирование данных


11-1160470373
Grademax
2006-10-10 12:52
2007.10.21
Как в KOL (без MCK) создать глобальную горячую клавишу


2-1190951690
zzzz
2007-09-28 07:54
2007.10.21
Компонент DbEdit, узнать код клавиши разделителя


2-1190363813
Flood_control
2007-09-21 12:36
2007.10.21
Edit &amp; UpDown





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский