Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.25;
Скачать: CL | DM;

Вниз

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;



Страницы: 1 вся ветка

Текущий архив: 2002.03.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
14-80680
Loxly
2002-02-12 14:51
2002.03.25
О написании help ов


1-80520
Starkom
2002-03-12 14:13
2002.03.25
Проблема с ItemIndex в ComboBox е


6-80632
Zerul
2002-01-08 15:14
2002.03.25
telnet


1-80526
Well
2002-03-13 10:53
2002.03.25
Скроллинг в TImage


7-80695
ValeryM
2001-12-19 17:48
2002.03.25
Медиаплейер, ошибка mmsystem