![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]код приведи