Форум: "Базы";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];
ВнизPackTable Найти похожие ветки
← →
deleon (2002-02-27 08:43) [7]Как и обещал, привожу рабочий пример из нашего компонента TBdeTools (с)2002 Degisy Software:
function TBdeTools.PackTable(Table: TTable): DbiResult;
var
FCurProp : CurProps;
TblDesc : CRTblDesc;
hDb : hDbiDB;
TablePath : array[0..dbiMaxPathLen] of Char;
Exclusive : Boolean;
begin
Result := DBIERR_NONE;
if not Table.Active then
begin
Result := DBIERR_INVALIDTABLE;
Exit;
end;
Result := DbiGetCursorProps(Table.Handle, FCurProp);
if( Result = DBIERR_NONE )then
begin
if StrComp(FCurProp.szTableType, szParadox) = 0 then begin
hDb := nil;
FillChar(TblDesc, SizeOf(CRTblDesc), 0);
with TblDesc do begin
StrPCopy(szTblName, Table.TableName);
StrCopy(szTblType, FCurProp.szTableType);
bPack := True;
bProtected := FCurProp.bProtected;
end;
Result := DbiGetDirectory(Table.DBHandle, False, TablePath);
if( Result = DBIERR_NONE )then
begin
Table.Close;
try
Result := DbiOpenDatabase(nil, szCFGDBSTANDARD, dbiReadWrite, dbiOpenExcl, nil,
0, nil, nil, hDb);
if( Result = DBIERR_NONE )then
begin
Result := DbiSetDirectory(hDb, TablePath);
if( Result = DBIERR_NONE )then
begin
Result := DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False);
Check(DbiCloseDatabase(hDb));
end;
end;
finally
Table.Open;
end;
end;
end
else if StrComp(FCurProp.szTableType, szDBase) = 0 then begin
Exclusive := Table.Exclusive;
Table.Close;
try
Table.Exclusive := True;
Table.Open;
try
Result := DbiPackTable(Table.DBHandle, Table.Handle, nil, nil, True);
finally
Table.Close;
end;
finally
Table.Exclusive := Exclusive;
Table.Open;
end;
end
else Result := DBIERR_WRONGDRVTYPE;
end;
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c