Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» DBF.Программно создать индекс по нескольким полям?

Автор: Kins
Дата сообщения: 15.02.2007 09:43
Добрый день.
Прошу помощи многоопытного All.
Задача такая:
Возможно ли программно создать/пересоздать индекс для DBF(DBase IV) по нескольким полям?

С индексом по одному полю делаю так (успешно работает):

procedure TForm1.Button1Click(Sender: TObject);
begin
TRY
Table1.IndexName:='DBFNAME';
Table1.Open;
Table1.First;
Memo1.Lines.Add(Table1.TableName+' : Таблица открыта штатно.');
EXCEPT
on E: EDBEngineError do
if Pos('Index does not exist.', E.Message) > 0 then
begin
Memo1.Lines.Add('indexes.mdx не найден. пересоздаем индексы.');
RemoveMDXByte(Sp + '\dat\indexes.dbf');
Table1.AddIndex('DBFNAME','DBFNAME',[ixExpression]);
Table1.IndexName:='DBFNAME';
Table1.Open;
Table1.First;
Memo1.Lines.Add('Индекс создан. Таблица '+Table1.TableName+' открыта.');
end;
END;
end;

Пробую менять строку:
Table1.AddIndex('DBFNAME','DBFNAME',[ixExpression]);
на
Table1.AddIndex('DBFNAME','DBFNAME;INXNAME',[ixExpression]);
индекс создается только по полю DBFNAME...

В help Делфи7 написано что :
"Multi-field dBASE indexes cannot be created simply with a list of field names (separated by semicolons) in the Fields parameter of AddIndex..."

Может подскажете как это обойти?
Автор: Kokoc
Дата сообщения: 15.02.2007 14:51
Стандартные форматы индексных файлов (IDX, NDX, CDX) не поддерживают индексы, содержащие перечень полей ч/з запятую. Для dBaseIV либо каждый индекс по отдельному полю в отдельный файл, либо составной (типа "FIELD1+FIELD2+...")
Автор: Kins
Дата сообщения: 15.02.2007 16:57
Цельный день читал инет, разобрался.
Ларчик открылся просто...

вместо этого:

Цитата:
Table1.AddIndex('DBFNAME','DBFNAME;IDXNAME',[ixExpression])

пишу
Table1.AddIndex('DBFNAME','DBFNAME',[ixExpression]);
Table1.AddIndex('IDXNAME','IDXNAME',[ixExpression]);

получаю к dbf-файлу индексный файл-mdx c индексами DBFNAME и IDXNAME !
Это то, что я хотел.


Страницы: 1

Предыдущая тема: Отображение графиков в Compaq Visual Fortran


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.