Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Индексы [D5, dBase, FoxPro, ]


kat ©   (2001-12-14 09:30:00) 

Есть таблица dbf, к ней должен быть индексный файл mdx, но он был удален. При открытии таблицы сообщается что не найден индексный файл.
Можно ли как-нибудь определить какие поля были проиндексированы, чтобы тогда в программе создать эти индексы?


kat   (2001-12-14 11:03:00) [1]

попробую, спасибо


Andrey   (2001-12-14 10:57:00) [2]

procedure ClearBytes(Table_name:string);
var S: array[1..2] of byte;
hand :integer;
begin
S[1]:=0;
S[2]:=0;
hand:=FileOpen(Table_name,$0002);
FileSeek(hand,28,1);
FileWrite(hand,S,2);
FileClose(hand);
end;


kat   (2001-12-14 10:46:00) [3]

А как его сбросить?


Desdechado   (2001-12-14 10:24:00) [4]

Поскольку индексироваться могут не только отдельные поля, но и их комбинации, а также есть признаки (по возрастанию/убыванию, уникальный/неуникальный), то воссоздать структуру индекса нельзя. Нужно ее знать заранее. Кроме того, MDX - многотэговый индекс (много индексов в одном файле).
Просто в заголовке DBF прописан признак необходимости индекса (так установлено при его создании). Его можно сбросить.


Andrey   (2001-12-14 10:12:00) [5]

Узнать тероетически можно, но это врядли поможет т.к. ключевые выражения могли быть сложными и имена индексов неизвесны.


Наверх

Титульная страница Поиск, карта сайта Написать письмо