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

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

DbiDoRestructure [D6, Paradox]


SS1 ©   (2002-06-28 08:46:00) 

Подскажите как избавиться от ошибки "Table is busy" при
выполнении функции DbiDoRestructure (Exclusive:=True; это установлено, в дизайн тайм таблица закрыта и даже Дельфи
не загружен). Что еще может быть нужно?(D6, Paradox)


SS1   (2002-07-01 13:32:00) [1]

?


SS1   (2002-06-28 12:23:00) [2]

этот код ошибки не выдает, но и с таблицей, насколько я понял,
ничего не делает. размер файла не изменился.


Viewer   (2002-06-28 10:02:00) [3]

Попробуй так

DatabaseAlias:TDatabase;
function packParadoxTable(TableName:string{Table:TTable}):DBIResult;
TblDesc:CRTblDesc;
begin
FillChar(TblDesc, sizeof(CRTblDesc), #0);
StrCopy(TblDesc.szTblType, szParadox);
StrPCopy(TblDesc.szTblName, TableName{Table.TableName});
TblDesc.bPack := TRUE;
Result := DbiDoRestructure(DatabaseAlias.Handle, 1, @TblDescs, nil,
nil, nil, FALSE);
end;


SS1   (2002-06-28 09:28:00) [4]

procedure TMainForm.ProcPackTable(PackDataSet: TDataSet);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
if (PackDataSet is TTable) then
begin
PackDataSet.Close;
(PackDataSet as TTable).Exclusive:=True;
PackDataSet.Open
end
else exit;
Check(DbiGetCursorProps((PackDataSet as TTable).Handle, Props));
FillChar(TableDesc, sizeof(TableDesc), 0);
Check(DbiGetObjFromObj(hDBIObj((PackDataSet as TTable).Handle),objDATABASE,hDBIObj(hDb)));
StrPCopy(TableDesc.szTblName, (PackDataSet as TTable).TableName);
StrPCopy(TableDesc.szTblType, Props.szTableType);
TableDesc.bPack:=True;
PackDataSet.Close;
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
(PackDataSet as TTable).Exclusive:=False;
PackDataSet.Open;
end;


Alexandr   (2002-06-28 08:50:00) [5]

код приведи


Наверх

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