Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];




Вниз

PackTable 


Ольга   (2002-02-26 15:28) [0]

Прошу прощения, если мой вопрос покажется глупым, но с упаковкой таблиц столкнулась впервые.
Упаковываю таблицу:

Table1.Close;
Table1.Exclusive := True;
try
Check(DbiPackTable (Table1.DBHandle,Table1.Handle,PChar
(Table1.TableName),PChar(szDBASE),True));
except end;
Table1.Close;
Table1.Exclusive := False;
Table1.open;


И он выдает ошибку
Invalid handle to the function



Ольга   (2002-02-26 15:48) [1]

Никто не знает?



panov   (2002-02-26 16:07) [2]

загляни в FAQ



deleon   (2002-02-26 16:50) [3]

procedure TForm1.FormCreate(Sender: TObject);
var
SaveActive: Boolean;
SaveExcl : Boolean;
begin
try
SaveExcl := Table1.Exclusive;
SaveActive := Table1.Active;
Table1.DisableControls;
Table1.Active := False;
Table1.Exclusive := True;
Table1.Active := True;
Check(DbiPackTable(Table1.DbHandle, Table1.Handle, PChar
(Table1.TableName), szDBASE, True));
finally
Table1.Active := False;
Table1.Exclusive := SaveExclusive;
Table1.Active := SaveActive;
Table1.EnableControls;
end;
end;

===================================================
Если нигде не ошибся - должно работать
===================================================



Ольга   (2002-02-26 16:54) [4]

> deleon
Ругается, что Table is busy



deleon   (2002-02-26 17:13) [5]

Ок, завтра напишу что как :-)



kirill2000   (2002-02-27 02:27) [6]

Сам столкнулся с большими проблемами при использовании метода PackTable и поэтому могу предложить следующее решение

batchmove1.Destination :=form1.Table4;
batchmove1.Mode :=batcopy;
batchmove1.Source :=form1.Table1;
batchmove1.Execute;
form1.Table1.Active :=false;
form1.Table1.Exclusive :=true;
form1.Table1.Active :=true;
form1.Table1.EmptyTable;
batchmove1.Destination :=form1.Table1;
batchmove1.Source :=form1.Table4;
batchmove1.Mode :=batappend;
batchmove1.Execute;
form1.Table1.Active :=false;
form1.Table1.Exclusive :=false;
form1.Table1.Active :=true;
form1.Table1.Active :=true;

Где Form1.Table1 таблица которую необходимо упаковать,а Form1.Table5 временная таблица.



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;




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.014 c
1-80614           BDRON                 2002-03-11 18:09  2002.03.25  
Упаковка/распоковка файлов


14-80691          Zerul                 2002-02-10 00:50  2002.03.25  
*.iso - hto uto takoe i shem ego edyt?


7-80707           LORN                  2001-12-19 22:13  2002.03.25  
Есть ли у кого - готовая прога ФОРМАТИРОВАНИЕ ДИСКЕТ?


4-80719           dr0Ne64               2002-01-24 22:48  2002.03.25  
No Ctrl+Alt+Del


14-80686          nikols (M)            2002-02-12 15:05  2002.03.25  
Какую систему контроля версий использовать?