Форум: "Базы";
Текущий архив: 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.04 c