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

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

Восстановить первичный ключ в таблице Paradox [D5, Paradox]


ksu ©   (2003-01-16 06:44:00) 

Подскажите как Восстановить первичный ключ в таблице Paradox в ходе выполнения программы
есть массив с описанием таблиц( имя индекса, опции индекса, ключевые поля)

type bdindex=record
name :string;
field :string;
option :TIndexOptions;
end;
type bdrecord=record
table :TTable;
count :integer;
index :array [0 .. 4] of bdindex;
end;

var bd :array of bdrecord;

... фрагмент кода восстановления индекса вызывается при обработке ошибки Index out of date

bd[i].table.IndexFieldNames:="";
bd[i].table.IndexDefs.Clear;
bd[i].table.disableControls;
bd[i].table.close;
bd[i].table.Exclusive:=true;
bd[i].table.open;
for j:=0 to bd[i].count-1 do //кол-во индексов
bd[i].table.AddIndex(bd[i].index[j].name,bd[i].index[j].field,bd[i].index[j].option);
bd[i].table.IndexDefs.Update;

При восстановлении вторичных ключей все нормально, первичный ключ выдает сообщение Index out of date в операторе bd[i].table.open;

Подскажите как убрать описание первичного ключа или открыть без первичного ключв таблицу


AlexLI   (2003-01-16 11:53:00) [1]

var NewIndex: IDXDesc; // bde.pas
При закрытой таблице.
ClearDirectory(GetAliasPath(bd[i].table.DatabaseName),
bd[i].table.TableName+".px");
ClearDirectory(GetAliasPath(bd[i].table.DatabaseName),
bd[i].table.TableName+".x*");
ClearDirectory(GetAliasPath(bd[i].table.DatabaseName),
bd[i].table.TableName+".y*");
Далее
Check(DbiAddIndex(bd[i].table.dbhandle, bd[i].table.handle, PChar(bd[i].table.TableName),szParadox, NewIndex, nil));


AlexLI   (2003-01-16 11:51:00) [2]

var NewIndex: IDXDesc; // bde.pas
При закрытой таблице.
ClearDirectory(GetAliasPath(bd[i].table.DatabaseName),
bd[i].table.TableName+".px");
ClearDirectory(GetAliasPath(bd[i].table.DatabaseName),
bd[i].table.TableName+".x*");
ClearDirectory(GetAliasPath(TablU.DatabaseName),
TablU.TableName+".y*");
Далее
Check(DbiAddIndex(bd[i].table.dbhandle, bd[i].table.handle, PChar(TablU.TableName),szParadox, NewIndex, nil));


Наверх

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