![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить, существует ли у DBF таблицы индекс или нет? [D7, dBase, FoxPro]
ambhtr © (2007-06-04 15:58:00)В процедуре создаю индекс для таблицы, все хорошо...
Но когда процедуру запускаешь 2-раз, ругается, что индекс уже существует. Каждый раз удалять индекс, вроде бы и не надо. Но как определить, существует индекс уже или его надо создавать?
Edward_zd (2007-06-12 05:25:00) [1]Удалено модератором
Alice_ev (2007-06-12 05:24:00) [2]Удалено модератором
Anatoly Podgoretsky (2007-06-05 09:50:00) [3]Это отвязаные файлы, а проверять надо средствами СУБД.
И почему MDX - индексы немного шире.
Если база твоя, то ты должен подключить индексы, если же нет, то полного решения нет, на диске слишком много файлов.
ambhtr (2007-06-05 09:38:00) [4]
> Anatoly Podgoretsky © (04.06.07 18:30) [4]
Т.е. надо проверять наличие файла, определенного имени, с каким ты его создал?
Т.е. использовать приблизительно следующий код:
if FileExists('NameDBF.MDX') then
...
Anatoly Podgoretsky (2007-06-04 18:30:00) [5]> ambhtr (04.06.2007 17:28:03) [3]
Ты прочитай, что в [2] написано, а это не все, есть еще простые не много теговые индексы, которые узнать нельзя - их надо знать в лицо.
ambhtr (2007-06-04 17:28:00) [6]
> Сергей М. © (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;
Пока работает. Может можно как-то еще оптимизировать.
Но все-равно, БОЛЬШОЕ СПАСИБО.
Desdechado (2007-06-04 17:13:00) [7]У какого-то абстрактного DBF - никак. Просто в разных версиях разных DBF-СУБД для этой цели могут быть (а могут и не быть) отметки в заголовке самого файла. Но вот сколько и какие индексы есть (даже при наличии отметки) узнать нельзя. Например, у фокса можно строить составные многотэговые индексы (в одном файле несколько индексов-тэгов). И по каким полям и/или функциям они сделаны, можно узнать только из самих индексов.
Сергей М. (2007-06-04 16:07:00) [8]
> как определить, существует индекс уже или его надо создавать?
св-во IndexDefs (если оно существует) содержит сведения о существующих индексах