Форум — Ответы     (  К темам )
 ?  Елена: Создание, удаление индекса (16-04-2003 16:56:56)
1. Имеется файл a.dbf базы данных формата Foxbase 2.0+. В C++Builder 6 с помощью Database Desktop создан индексный файл a.mdx с несколькими индексами.
Объясните пожалуйста, каким способом в C++Builder 6 программно, во время выполнения приложения, можно добавить новый индекс если:
Ш индексный файл a.mdx существует;
Ш отсутствует.
Т.к., применяя AddIndex для добавления индекса, в зависимости от того имеется или нет индексный файл a.mdx, формируется исключение типа EDBEngineError со следующими сообщениями:
'Index is out of date’;
'Index does not exist’;
'Index already exists’.


2. Во время выполнения программы удалить существующие индексы из индексного файла a.mdx, в то время как список IndexDefs –пустой.

3. Создать индекс из нескольких полей.
 Павел (16-04-2003 20:54:19)
Не советую работать из C++Builder с .dbf Файлами, это сплошное мучение.
А если уж приходится работать с .dbf файлами, то на VisualFoxPro
 Alexei (16-04-2003 21:26:22)
Установите и используйте компоненты Apollo

Apollo VCL — быстродействующее xBase ядро базы данных для разработчики
приложений на Borland Delphi и C++Builder. Apollo VCL обеспечивает
высокоскоростной, многопользовательский локальный доступ к данным и индексным
файлам CA-Clipper (.DBF/.DBT/.NTX), FoxPro (.DBF/.FPT/.IDX/.CDX) , а так же
HiPer-SIx .NSX/.SMT индексным и memo файлам . Apollo VCL не требует
дополнительных драйверов как например, BDE, ODBC, Access или JET.

http://cool-bag.chat.ru/

-------------------------------

Через компоненты c вкладки ADO:

Я попробовал исполнить в SQL Explorer для dbf-базы стандартный запрос
создания индекса:

create index index_name on table_name
( field1, field2, ... )

И получилось (даже сам не ожидал, что драйвер такую возможность
поддерживает). Может быть, имеет смысл исполнить аналогичный запрос ч/з
TADOQuery?

------------------------------